javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/rt/test/JvmPortTest.java
changeset 80 d6dafc5d983f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/rt/test/JvmPortTest.java	Fri Oct 15 12:29:39 2010 +0300
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.mj.impl.rt.test;
+
+
+import com.nokia.mj.impl.rt.JvmPort;
+import com.nokia.mj.impl.rt.support.ThreadEventListener;
+import com.nokia.mj.impl.rt.support.NativeMemoryBlock;
+
+public class JvmPortTest extends JvmPort
+{
+
+    public static final int LOADSYSTEMLIBRARY_CALL = 0;
+    public static final int LOADAPPLICATIONCLASS_CALL = 1;
+    public static final int RUNYOUNGGENERATIONGC_CALL = 2;
+    public static final int SETTHREADASDAEMON_CALL = 3;
+    public static final int GETRESOURCEASNATIVEMEMORY_CALL = 4;
+    public static final int DISABLERUNTIMEEXIT_CALL = 5;
+    public static final int ENABLERUNTIMEEXIT_CALL = 6;
+    public static final int EXITVM_CALL = 7;
+    public static final int RUNFINALIZATION_CALL = 8;
+    public static final int ENABLEFINALIZATION_CALL = 9;
+    public static final int SETTHREADEVENTLISTENER_CALL = 10;
+    public static final int ADDRESTRICTEDPACKAGEPREFIXES_CALL = 11;
+    public static final int ADDPROTECTEDPACKAGEPREFIXES_CALL = 12;
+    public static final int APPENDTOCLASSPATH_CALL = 13;
+    public static final int SHRINKJAVAHEAPTOMINIMUM_CALL = 14;
+    public static final int EXPANDJAVAHEAP_CALL = 15;
+
+
+    public static int[] mCalledArr = new int[16];
+    public static int[] mCalledTotalArr = new int[16];
+
+    static
+    {
+        clear();
+        for (int i = 0; i < mCalledTotalArr.length; ++i)
+        {
+            mCalledTotalArr[i] = 0;
+        }
+    }
+
+    public static Object mObj1 = null;
+    public static Object mObj2 = null;
+    public static Object mReturnObj = null;
+    public static Throwable mThrowable = null;
+
+    public static void clear()
+    {
+        for (int i = 0; i < mCalledArr.length; ++i)
+        {
+            mCalledArr[i] = 0;
+        }
+        mObj1 = null;
+        mObj2 = null;
+        mReturnObj = null;
+        mThrowable = null;
+    }
+
+    public static void resetInstance()
+    {
+        sInstance = null;
+    }
+
+    public static boolean allCalled()
+    {
+        for (int i = 0; i < mCalledTotalArr.length; ++i)
+        {
+            if (mCalledTotalArr[i] == 0)
+            {
+                StringBuffer sb = new StringBuffer();
+                for (int j = 0; j < mCalledTotalArr.length; ++j)
+                {
+                    sb.append("\n");
+                    sb.append("  " + (j + 1) + " == " + mCalledTotalArr[j]);
+                }
+                System.err.println("All calls:"+ sb.toString());
+
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public static boolean checkCalls(int checkInd)
+    {
+        for (int i = 0; i < mCalledArr.length; ++i)
+        {
+            if (checkInd == i)
+            {
+                if (mCalledArr[i] != 1)
+                {
+                    return false;
+                }
+            }
+            else if (mCalledArr[i] != 0)
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public static String print()
+    {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < mCalledArr.length; ++i)
+        {
+            sb.append("\n");
+            sb.append("  " + (i + 1) + " == " + mCalledArr[i]);
+        }
+        return sb.toString();
+    }
+
+    public static void setSystemPropertyImpl(Object key, Object value)
+    {
+        mPropertiesContainer.setSystemProperty(key, value);
+    }
+
+
+    public void loadSystemLibrary(String libName)
+    {
+        mCalledArr[LOADSYSTEMLIBRARY_CALL]++;
+        mCalledTotalArr[LOADSYSTEMLIBRARY_CALL]++;
+        mObj1 = libName;
+    }
+
+    public Class loadApplicationClass(String name) throws ClassNotFoundException
+    {
+        mCalledArr[LOADAPPLICATIONCLASS_CALL]++;
+        mCalledTotalArr[LOADAPPLICATIONCLASS_CALL]++;
+        if (mThrowable != null)
+        {
+            throw(ClassNotFoundException)mThrowable;
+        }
+        mObj1 = name;
+        sInstance = null;
+        return (Class)mReturnObj;
+    }
+
+    public boolean runYoungGenerationGc()
+    {
+        mCalledArr[RUNYOUNGGENERATIONGC_CALL]++;
+        mCalledTotalArr[RUNYOUNGGENERATIONGC_CALL]++;
+        return ((Boolean)mReturnObj).booleanValue();
+    }
+
+    public void setThreadAsDaemon(Thread thread,
+                                  boolean daemon)
+    throws IllegalThreadStateException, SecurityException
+    {
+        mCalledArr[SETTHREADASDAEMON_CALL]++;
+        mCalledTotalArr[SETTHREADASDAEMON_CALL]++;
+        if (mThrowable != null)
+        {
+            if (mThrowable instanceof IllegalThreadStateException)
+            {
+                throw(IllegalThreadStateException)mThrowable;
+            }
+            else
+            {
+                throw(SecurityException)mThrowable;
+
+            }
+        }
+        mObj1 = thread;
+        mObj2 = new Boolean(daemon);
+    }
+
+
+    public NativeMemoryBlock getResourceAsNativeMemory(String jarPath,
+            String resName)
+    {
+        mCalledArr[GETRESOURCEASNATIVEMEMORY_CALL]++;
+        mCalledTotalArr[GETRESOURCEASNATIVEMEMORY_CALL]++;
+        mObj1 = jarPath;
+        mObj2 = resName;
+        return (NativeMemoryBlock)mReturnObj;
+    }
+
+
+    public void disableRuntimeExit()
+    {
+        mCalledArr[DISABLERUNTIMEEXIT_CALL]++;
+        mCalledTotalArr[DISABLERUNTIMEEXIT_CALL]++;
+    }
+
+    public void enableRuntimeExit()
+    {
+        mCalledArr[ENABLERUNTIMEEXIT_CALL]++;
+        mCalledTotalArr[ENABLERUNTIMEEXIT_CALL]++;
+    }
+
+    public void exitVm(int status)
+    {
+        mCalledArr[EXITVM_CALL]++;
+        mCalledTotalArr[EXITVM_CALL]++;
+        mObj1 = new Integer(status);
+    }
+
+    public void runFinalization()
+    {
+        mCalledArr[RUNFINALIZATION_CALL]++;
+        mCalledTotalArr[RUNFINALIZATION_CALL]++;
+    }
+
+    public void enableFinalization(Class clazz)
+    {
+        mCalledArr[ENABLEFINALIZATION_CALL]++;
+        mCalledTotalArr[ENABLEFINALIZATION_CALL]++;
+        mObj1 = clazz;
+    }
+
+    public void setThreadEventListener(ThreadEventListener listener)
+    {
+        mCalledArr[SETTHREADEVENTLISTENER_CALL]++;
+        mCalledTotalArr[SETTHREADEVENTLISTENER_CALL]++;
+        mObj1 = listener;
+    }
+
+    public void addRestrictedPackagePrefixes(String[] packageNames)
+    throws SecurityException
+    {
+        mCalledArr[ADDRESTRICTEDPACKAGEPREFIXES_CALL]++;
+        mCalledTotalArr[ADDRESTRICTEDPACKAGEPREFIXES_CALL]++;
+        if (mThrowable != null)
+        {
+            throw(SecurityException)mThrowable;
+        }
+        mObj1 = packageNames;
+    }
+
+    public void addProtectedPackagePrefixes(String[] packageNames)
+    throws SecurityException
+    {
+        mCalledArr[ADDPROTECTEDPACKAGEPREFIXES_CALL]++;
+        mCalledTotalArr[ADDPROTECTEDPACKAGEPREFIXES_CALL]++;
+        if (mThrowable != null)
+        {
+            throw(SecurityException)mThrowable;
+        }
+        mObj1 = packageNames;
+    }
+
+    public void appendToClassPath(String path)
+    {
+        mCalledArr[APPENDTOCLASSPATH_CALL]++;
+        mCalledTotalArr[APPENDTOCLASSPATH_CALL]++;
+        mObj1 = path;
+    }
+
+    public int shrinkJavaHeapToMinimum()
+    {
+        mCalledArr[SHRINKJAVAHEAPTOMINIMUM_CALL]++;
+        mCalledTotalArr[SHRINKJAVAHEAPTOMINIMUM_CALL]++;
+        return ((Integer)mReturnObj).intValue();
+    }
+
+    public int expandJavaHeap(int amount)
+    {
+        mCalledArr[EXPANDJAVAHEAP_CALL]++;
+        mCalledTotalArr[EXPANDJAVAHEAP_CALL]++;
+        mObj1 = new Integer(amount);
+        return ((Integer)mReturnObj).intValue();
+    }
+
+}