# OJI API Test Analysis

## Table of Content

- How many tests cases can be created?

- Interface : nsIJVMManager
- Interface : nsIJVMPluginInstance
- Interface : nsIJVMPlugin
- Interface : nsIJVMPluginTagInfo
- Interface : nsIJVMPrefsWindow
- Interface : nsIJVMWindow
- Interface : nsILiveConnectManager
- Interface : nsIJVMConsole
- Interface : nsISecureEnv
- Interface : nsIThreadManager

How many tests cases can be created?

A total of 323 test cases can be written for testing OJI APIs .
Below is a list of OJI API methods that are being implemented in
browser code for OJI and/or in Kestrel code(for windows) . Each method under
an interface include details like the number of possible test cases
and the possible test values. At the end of interface there is a
total for the number of test cases for this Interface.
Note:
====
Interfaces nsIJRIPlugin.h , nsISecureJNI.h and nsISecureJNI2.h are found
under the mozilla/modules/oji/public directory of mozilla.
However these interfaces were not included in the Kestrel include directory.
Also noticed that the methods declared within nsISecureJNI.h and nsISecureJNI2.h
under mozilla/modules/oji/public directory
were all included in the nsISecureEnv.h interface that is found in kestrel include directory

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

Implemented in :mozilla and Kestrel code for windows
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);

Implemented in :Kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL value and a NON NULL value

Method:
NS_IMETHOD IsJavaEnabled(PRBool *outEnabled);

Implemented in :Kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL value and a NON NULL value

Method:
NS_IMETHOD ShowJavaConsole(void);

Implemented in :Kestrel code for windows
Number of test cases that can be written: 1

Total number of test cases for this Interface : 9

- Interface : nsIJVMPluginInstance
Method:
NS_IMETHOD GetJavaObject(jobject *result) = 0;

Implemented in : Kestrel code for windows
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL
String value for the parameter

Method:
NS_IMETHOD GetText(const char* *result) = 0;

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL
String value for the parameter

Total number of test cases for this Interface : 6

- Interface : nsIJVMPlugin
Method:
NS_IMETHOD AddToClassPath(const char* dirPath) = 0;

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL String value for the parameter

Method:
NS_IMETHOD GetClassPath(const char* *result) = 0;

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL String value for the parameter

Method:
NS_IMETHOD RemoveFromClassPath(const char* dirPath) = 0 ;

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL String value for the parameter

Method:
NS_IMETHOD GetJavaWrapper(JNIEnv* jenv, jint obj, jobject *jobj) = 0;

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 6
Test cases will be written with NULL and a NON NULL value for the parameters jenv , jobj and min_value
and max_value for obj.

Method:
NS_IMETHOD CreateSecureEnv(JNIEnv* proxyEnv, nsISecureEnv* *outSecureEnv) = 0;

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and a NON NULL value for the parameters

Method:
NS_IMETHOD SpendTime(PRUint32 timeMillis) = 0;

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with min_value and max_value or the unsigned int.

Total number of test cases for this Interface : 21

- Interface : nsIJVMPluginTagInfo
Method:
NS_IMETHOD GetCode(const char* *result) = 0;

Implemented in : mozilla
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL String value for the parameter

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

Implemented in : mozilla
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL String value for the parameter

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

Implemented in : mozilla
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL String value for the parameter

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

Implemented in : mozilla
Number of test cases that can be written: 3
Test cases will be written with Empty String , NULL string and a NON NULL String value for the parameter

Method:
NS_IMETHOD GetMayScript(PRBool *result) = 0;

Implemented in : mozilla
Number of test cases that can be written: 2
Test cases will be written with true or false values.

Total number of test cases for this Interface : 14

- Interface : nsIJVMPrefsWindow
Method:
NS_IMETHOD Show(void);

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 1

Method:
NS_IMETHOD Hide(void);

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 1

Method:
NS_IMETHOD IsVisisble(void);

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 1

Total number of test cases for this Interface : 3

- Interface : nsIJVMWindow
Method:
NS_IMETHOD Show(void);
NS_IMETHOD Hide(void);
IsVisisble(void);

All the methods in this interface are not implemented in the mozilla
code as well as the Kestrel code. So not sure if we need to test these
methods.

- Interface : nsILiveConnectManager
Method:
NS_IMETHOD StartupLiveConnect(JSRuntime* runtime, PRBool& outStarted) = 0;
NS_IMETHOD ShutdownLiveConnect(JSRuntime* runtime, PRBool& outStarted) = 0;

These 2 methods are not implemented in mozilla code for OJI as well as Kestrel code
for windows.

Method:
NS_IMETHOD IsLiveConnectEnabled(PRBool& outEnabled) = 0;;
Implemented in : mozilla code for OJI

Method:
NS_IMETHOD InitLiveConnectClasses(JSContext* context, JSObject* globalObject) = 0;
Implemented in : mozilla code for OJI

Method:
NS_IMETHOD WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject) = 0;
Implemented in : mozilla code for OJI.

I guess these methods get called from the mozilla main thread. Hence
I do not know a way to force some values for the parameters in the above
Number of test cases that can be written: NONE

Total number of test cases for this Interface : NONE

- Interface : nsIJVMConsole
Method:
NS_IMETHOD Show(void);

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 1

Method:
NS_IMETHOD Hide(void);

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 1

Method:
NS_IMETHOD IsVisisble(void);

Implemented in :mozilla and Kestrel code for windows
Number of test cases that can be written: 1

Total number of test cases for this Interface : 3

- Interface : nsISecureEnv
Method:
NS_IMETHOD NewObject(/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jobject* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
Implemented in: mozilla and kestrel code for windows.
Number of test cases that can be written: 8
Test cases will be written with Null and NON NULL values for clazz, methodID,
args, result.

Method:
NS_IMETHOD CallMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
Implemented in:a mozilla and kestrel code for windows
Number of test cases that can be written: 10
Test cases will be written with Null and NON NULL values for type ,
obj, methodID , args , result

Method:
NS_IMETHOD NS_IMETHOD CallNonvirtualMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) =0;

Implemented in: mozilla and kestrel
Number of test cases that can be written: 12
Test cases will be written with Null and NON NULL values for type ,
obj, methodID , args , result

Method:
NS_IMETHOD GetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for type,
obj, fieldID , result

Method:
NS_IMETHOD SetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
Implemented in: mozilla and kestrel
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for type,
obj, filedID , val.

Method:
NS_IMETHOD CallStaticMethod(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
Implemented in: mozilla and kestrel
Number of test cases that can be written: 10
Test cases will be written with NULL and NON NULL values for type,
clazz , methodID, args , result.

Method:
NS_IMETHOD GetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
Implemented in: mozilla and kestrel
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for type,
clazz, fieldID, result.

Method:
NS_IMETHOD SetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
Implemented in: mozilla and kestrel
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for type,
clazz, fieldID, result

Method:
NS_IMETHOD GetVersion(/*[out]*/ jint* version) = 0;
Implemented in: mozilla and kestrel
Number of test cases that can be written: 2
Test cases will be written with max_value and min_value for
the machine dependent int.

Method:
NS_IMETHOD DefineClass(/*[in]*/ const char* name,
/*[in]*/ jobject loader,
/*[in]*/ const jbyte *buf,
/*[in]*/ jsize len,
/*[out]*/ jclass* clazz) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 10
Test cases will be written with Empty String string , NULL and NON NULL string for name,
NULL and NON NULL values for loader , Empty String string , NULL and NON NULL string for buf,
min_value and max_value for len

Method:
NS_IMETHOD FindClass(/*[in]*/ const char* name,
/*[out]*/ jclass* clazz) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 3
Test cases will be written with Empty String string ,
NULL and NON NULL string for name.

Method:
NS_IMETHOD GetSuperclass(/*[in]*/ jclass sub,
/*[out]*/ jclass* super) = 0;
Implemented in:mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NON NULL values for sub ,

Method:
NS_IMETHOD IsAssignableFrom(/*[in]*/ jclass sub,
/*[in]*/ jclass super,
/*[out]*/ jboolean* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written withNULL and NON NULL values for sub,
NULL and NON NULL vlaues for super .

Method:
NS_IMETHOD Throw(/*[in]*/ jthrowable obj,
/*[out]*/ jint* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NON NULL values for obj

Method:
NS_IMETHOD ThrowNew(/*[in]*/ jclass clazz,
/*[in]*/ const char *msg,
/*[out]*/ jint* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 5
Test cases will be written with NULL and NON NULL values for clazz,
empty string , Null string , Non null string values

Method:
NS_IMETHOD ExceptionOccurred(/*[out]*/ jthrowable* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 1

Method:
NS_IMETHOD ExceptionDescribe(void) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 1

Method:
NS_IMETHOD ExceptionClear(void) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 1

Method:
NS_IMETHOD FatalError(/*[in]*/ const char* msg) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 3
Test cases will be written with Empty string , NULL string and NON NULL string
values for msg

Method:
NS_IMETHOD NewGlobalRef(/*[in]*/ jobject lobj,
/*[out]*/ jobject* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NON NULL values for lobj

Method:
NS_IMETHOD DeleteGlobalRef(/*[in]*/ jobject gref) = 0;
Implemented in:mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with with NULL and NON NULL values for gref

Method:
NS_IMETHOD DeleteLocalRef(/*[in]*/ jobject obj) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NON NULL values for obj

Method:
NS_IMETHOD IsSameObject(/*[in]*/ jobject obj1,
/*[in]*/ jobject obj2,
/*[out]*/ jboolean* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NON NULL values for
obj1 and obj2

Method:
NS_IMETHOD AllocObject(/*[in]*/ jclass clazz,
/*[out]*/ jobject* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NON NULL values for
clazz.

Method:
NS_IMETHOD GetObjectClass(/*[in]*/ jobject obj,
/*[out]*/ jclass* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL nad NON NULL values for obj

Method:
NS_IMETHOD IsInstanceOf(/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[out]*/ jboolean* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NON NULL values for
obj, NULL and NON NULL values for clazz.

Method:
NS_IMETHOD GetMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for class,
empty string , NULL String and NON NULL string values for name and sig

Method:
NS_IMETHOD GetFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for clazz,
empty string , NULL String and NON NULL string values for name and sig

Method:
NS_IMETHOD GetStaticMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for clazz,
empty string , NULL String and NON NULL string values for name and sig

Method:
NS_IMETHOD GetStaticFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 8
Test cases will be written with NULL and NON NULL values for clazz,
empty string , NULL String and NON NULL string values for name and sig

Method:
NS_IMETHOD NewString(/*[in]*/ const jchar* unicode,
/*[in]*/ jsize len,
/*[out]*/ jstring* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NON NULL values for
unicode and min and max_value for len

Method:
NS_IMETHOD GetStringLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NON NULL values for str

Method:
NS_IMETHOD GetStringChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const jchar** result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NON NULL values for str
and NULL and NON NULL values for chars

Method:
NS_IMETHOD ReleaseStringChars(/*[in]*/ jstring str,
/*[in]*/ const jchar *chars) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NON NULL values for str
and NULL and NON NULL values for chars

Method:
NS_IMETHOD NewStringUTF(/*[in]*/ const char *utf,
/*[out]*/ jstring* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for utf

Method:
NS_IMETHOD GetStringUTFLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for str

Method:
NS_IMETHOD GetStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const char** result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NOT NULL values for str,
NULL and NOT NULL values for isCopy, empty string , NULL string .

Method:
NS_IMETHOD ReleaseStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ const char *chars) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NON NULLvalues for str and chars

Method:
NS_IMETHOD GetArrayLength(/*[in]*/ jarray array,
/*[out]*/ jsize* result) = 0;
Implemented in: only kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for array.

Method:
NS_IMETHOD NewObjectArray(/*[in]*/ jsize len,
/*[in]*/ jclass clazz,
/*[in]*/ jobject init,
/*[out]*/ jobjectArray* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 6
Test cases will be written with max and min_values for len,
NULL and NOT NULL values for clazz, NULL and NOT NULL values for init.

Method:
NS_IMETHOD GetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[out]*/ jobject* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NOT NULL values for array,
max and min_value for index

Method:
NS_IMETHOD SetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[in]*/ jobject val) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 6
Test cases will be written with NULL and NOT NULL values for array,
min and max_values for index and NULL and NOT NULL values for val

Method:
NS_IMETHOD NewArray(/*[in]*/ jni_type element_type,
/*[in]*/ jsize len,
/*[out]*/ jarray* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 4
Test cases will be written with NULL and NOT NULL values for element_type
min and max_values for len

Method:
NS_IMETHOD GetArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jboolean *isCopy,
/*[out]*/ void* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written:6
Test cases will be written with NULL and NOT NULL values for type,
NULL and NOT NULL values for array, NULL and NOT NULL values for isCopy

Method:
NS_IMETHOD ReleaseArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ void *elems,
/*[in]*/ jint mode) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 8
Test cases will be written with NULL and NOT NULL values for type
NULL and NOT NULL values for array , NULL and NOT NULL values for elems,
max and min values for mode

Method:
NS_IMETHOD GetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[out]*/ void* buf) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 6
Test cases will be written with NULL and NOT NULL values for type,
max and min values for start and len

Method:
NS_IMETHOD SetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[in]*/ void* buf) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 8
Test cases will be written with NULL and NOT NULL valus for type,
NULL and NOT NULL values for array, min and max values for start , len.

Method:
NS_IMETHOD RegisterNatives(/*[in]*/ jclass clazz,
/*[in]*/ const JNINativeMethod *methods,
/*[in]*/ jint nMethods,
/*[out]*/ jint* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 6
Test cases will be written with NULL and NOT NULL values for clazz, JNINativeMethod,
min and max value for nMethods

Method:
NS_IMETHOD UnregisterNatives(/*[in]*/ jclass clazz,
/*[out]*/ jint* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for clazz

Method:
NS_IMETHOD MonitorEnter(/*[in]*/ jobject obj,
/*[out]*/ jint* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written:2
Test cases will be written with NULL and NOT NULL values for obj

Method:
NS_IMETHOD MonitorExit(/*[in]*/ jobject obj,
/*[out]*/ jint* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for obj

Method:
NS_IMETHOD GetJavaVM(/*[in]*/ JavaVM **vm,
/*[out]*/ jint* result) = 0;
Implemented in: mozilla and kestrel code for windows
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for vm

Total number of (possible) test cases for this Interface : 246 (phew..)
(May be even more ...)

- Interface : nsIThreadManager
Method:
NS_IMETHOD GetCurrentThread(PRUint32* threadID) = 0;
Implemented in: kestrel
Number of test cases that can be written: 2
Test cases will be written with max and min values fro threadID

Method:
NS_IMETHOD Sleep(PRUint32 milli = 0) = 0;
Implemented in: mozilla
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) = 0;
Implemented in: mozilla
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for address
tested)

Method:
NS_IMETHOD Wait(void* address, PRUint32 milli = 0) = 0;
Implemented in: mozilla
Number of test cases that can be written: 4
Test cases will be writtenwith NULL and NOT NULL values for address
and min and max value for milli

Method:
NS_IMETHOD Notify(void* address) = 0;
Implemented in:mozilla
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for address
(Not sure how this can be tested)

Method:
NS_IMETHOD NotifyAll(void* address) = 0;
Implemented in:mozilla
Number of test cases that can be written: 2
Test cases will be written with NULL and NOT NULL values for address

Method:
NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable) = 0;
Implemented in:mozilla
Number of test cases that can be written: 4
Test cases will be written with min and max value for threadID and NULL and NOT NULL
values for runnable.

Method:
NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async) = 0;
Implemented in:mozilla and kestrel code for windows
Number of test cases that can be written: 6
Test cases will be written with min and max value for threadID and NULL and NOT NULL
values for runnable, true or false value for async

Total number of test cases for this Interface : 24

### 2.5 Revision History.

Date | Version | Author | Description
11/04/99 | 1.0 | Geetha Vaidyanaathan | first draft