#

##

    OJI API Test Analysis. Interfaces implemented by OJI module (excluding JNIEnv).

    Table of Content

     Interface : nsIJVMManager (class nsJVMManager)
     Interface : nsILiveConnectManager (class nsJVMManager)
     Interface : nsIThreadManager (class nsJVMManager)
     Interface : nsIJVMPluginTagInfo (class nsJVMPluginTagInfo)

    Interface : nsIJVMManager

         Method:
         NS_IMETHOD CreateProxyJNI(nsISecureEnv *secureEnv, JNIEnv * *outProxyEnv);

         Number of test cases that can be written: 4
         Test cases will be written with NULL value and a NON NULL value for both the parameters

         Method:
         NS_IMETHOD GetProxyJNI(JNIEnv * *outProxyEnv);

         Number of test cases that can be written: 3
         Test cases will be written with
         - NULL value
         - NON NULL value in cases when
                  - the CreateProxyJNI had already been called
    	      - hadn't already been called

         Method:
         NS_IMETHOD IsJavaEnabled(PRBool *outEnabled);

         Number of test cases that can be written: 3
         Test cases will be written with
         - NULL value
         - NON NULL value in cases when
                  - the Java is enabled
    	      - there is not Java

         Method:
         NS_IMETHOD ShowJavaConsole(void);

         Number of test cases that can be written: 2
         Test cases will be written in cases
         - the Java is enabled
         - there is not Java

         Total number of test cases for this Interface : 12

    Interface : nsILiveConnectManager

         Note:
         Due to the complexity of some objects used as parameteres the
         varying on this objects causes very big number of test cases, so
         below are enumerated only first-level test cases on stability with NULL values.

         Method:
         NS_IMETHOD StartupLiveConnect(JSRuntime* runtime, PRBool& outStarted);

         Test cases will be written with:
         runtime:  NULL value
         outStarted: NULL and a NON NULL value
         Number of test cases that can be written: 2

         Method:
         NS_IMETHOD ShutdownLiveConnect(JSRuntime* runtime, PRBool& outShutdown);

         Test cases will be written with:
         runtime:  NULL value
         outShutdown: NULL and a NON NULL value
         Number of test cases that can be written: 2

         Method:
         NS_IMETHOD IsLiveConnectEnabled(PRBool& outEnabled);

         Test cases will be written with NULL and a NON NULL value
         Number of test cases that can be written: 2

         Method:
         NS_IMETHOD InitLiveConnectClasses(JSContext* context, JSObject* globalObject);

         Test cases will be written with NULL values
         Number of test cases that can be written: 1

         Method:
         NS_IMETHOD WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject);

         Test cases will be written with:
         context: NULL value
         javaObject: NULL value
         outJSObject: NULL and a NON NULL value
         Number of test cases that can be written: 2

         Total number of test cases for this Interface : 9

    Interface : nsIThreadManager

         Method:
         NS_IMETHOD GetCurrentThread(nsPluginThread* *threadID);

         Number of test cases that can be written: 2
         Test cases will be written with NULL and NON NULL values

         Method:
         NS_IMETHOD Sleep(PRUint32 milli = 0);

         Number of test cases that can be written: 2
         Test cases will be written with max and min values for milli

         Method:
         NS_IMETHOD EnterMonitor(void* address);

         Number of test cases that can be written: 4
         Test cases will be written with
         - NULL value
         - NOT NULL values in cases when this monitor
                  - is free
    	      - is already entered by this thread
    	      - is entered by another thread

         Method:
         NS_IMETHOD ExitMonitor(void* address);

         Number of test cases that can be written: 4
         Test cases will be written with
         - NULL value
         - NOT NULL values in cases when this monitor
                  - is free
    	      - is already entered by this thread
    	      - is entered by another thread

         Method:
         NS_IMETHOD Wait(void* address, PRUint32 milli = 0);

         Number of test cases that can be written: 4
         Test cases will be written with
         - NULL value for address and some value for milli
         - NOT NULL values for address (when entered)
                  - and min
    	      - and max value for milli
         - NOT NULL values for address (when non-entered) and some value for milli

         Method:
         NS_IMETHOD Notify(void* address);

         Number of test cases that can be written: 4
         Test cases will be written with
         - NULL value
         - NOT NULL values in cases when this monitor
                  - isn't entered by this thread
    	      - is already entered by this thread and there are waiting threads
    	      - is already entered by this thread and there are not waiting threads

         Method:
         NS_IMETHOD NotifyAll(void* address);

         Number of test cases that can be written: 4
         Test cases will be written with
         - NULL value
         - NOT NULL values in cases when this monitor
                  - isn't entered by this thread
    	      - is already entered by this thread and there are waiting threads
    	      - is already entered by this thread and there are not waiting threads

         Method:
         NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable);

         Number of test cases that can be written: 4
         Test cases will be written with NULL and NOT NULL values for threadID and NULL and NOT NULL
         values for runnable.

         Method:
         NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async);

         Number of test cases that can be written: 6
         Test cases will be written with:
         threadID: for existent and not-existent thread
         runnable: NULL and NOT NULL
         async: true and false

         Total number of test cases for this Interface : 30

    Interface : nsIJVMPluginTagInfo

          Method:
          NS_IMETHOD GetCode(const char* *result);

          Number of test cases that can be written: 3
          Test cases will be written with
          - NULL value
          - NON NULL value in cases when return value
                   - should be empty
    	       - and non-empty

          Method:
          NS_IMETHOD  GetCodeBase(const char* *result);

          Number of test cases that can be written: 3
          Test cases will be written with
          - NULL value
          - NON NULL value in cases when return value
                   - should be empty
    	       - and non-empty

          Method:
          NS_IMETHOD GetArchive(const char* *result);

          Number of test cases that can be written: 3
          Test cases will be written with
          - NULL value
          - NON NULL value in cases when return value
                   - should be empty
    	       - and non-empty

          Method:
          NS_IMETHOD  GetName(const char* *result);

          Number of test cases that can be written: 3
          Test cases will be written with
          - NULL value
          - NON NULL value in cases when return value
                   - should be empty
    	       - and non-empty

          Method:
          NS_IMETHOD  GetMayScript(PRBool *result);

          Number of test cases that can be written: 3
          Test cases will be written with
          - NULL value
          - NON NULL value in cases when return value
                   - should be true
    	       - and false

          Total number of test cases for this Interface : 15