void RunMethodTest() { GetSetStaticBoolean(JNI_TRUE); GetSetStaticBoolean(JNI_FALSE); GetSetStaticBool(true); GetSetStaticBool(false); GetSetStaticByte(100); GetSetStaticChar(0x0901); GetSetStaticShort(32000); GetSetStaticInt(0x77777776); GetSetStaticLong(0xFFFFAAAABBBBCCCCll); GetSetStaticFloat(0.0001f); GetSetStaticDouble(0.77e+100); jni::LObject testObject=CreateTestObject(); GetSetBoolean(testObject,JNI_TRUE); GetSetBoolean(testObject,JNI_FALSE); GetSetBool(testObject,true); GetSetBool(testObject,false); GetSetByte(testObject,0xAA); GetSetChar(testObject,'*'); GetSetShort(testObject,13900); GetSetInt(testObject,0xFEFE0001); GetSetLong(testObject,0xAAAABBBBCCCCll); GetSetFloat(testObject,0.3434f); GetSetDouble(testObject,0.77e-12); TEST_PASSED(); }
int main() { { printf("Should create one |TestObject|:\n"); nsAutoPtr<TestObject> pobj( new TestObject() ); printf("Should destroy one |TestObject|:\n"); } { printf("Should create one |TestObject|:\n"); nsAutoPtr<TestObject> pobj( new TestObject() ); printf("Should create one |TestObject| and then destroy one:\n"); pobj = new TestObject(); printf("Should destroy one |TestObject|:\n"); } { printf("Should create 3 |TestObject|s:\n"); nsAutoArrayPtr<TestObject> pobj( new TestObject[3] ); printf("Should create 5 |TestObject|s and then destroy 3:\n"); pobj = new TestObject[5]; printf("Should destroy 5 |TestObject|s:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); nsRefPtr<TestRefObject> pobj( new TestRefObject() ); printf("Should Release and destroy one |TestRefObject|:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); nsRefPtr<TestRefObject> pobj( new TestRefObject() ); printf("Should create and AddRef one |TestRefObject| and then Release and destroy one:\n"); pobj = new TestRefObject(); printf("Should Release and destroy one |TestRefObject|:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); nsRefPtr<TestRefObject> p1( new TestRefObject() ); printf("Should AddRef one |TestRefObject|:\n"); nsRefPtr<TestRefObject> p2( p1 ); printf("Should Release twice and destroy one |TestRefObject|:\n"); } printf("\nTesting equality (with all const-ness combinations):\n"); { nsRefPtr<TestRefObject> p1( new TestRefObject() ); nsRefPtr<TestRefObject> p2( p1 ); printf("equality %s.\n", ((p1 == p2) && !(p1 != p2)) ? "OK" : "broken"); } { const nsRefPtr<TestRefObject> p1( new TestRefObject() ); nsRefPtr<TestRefObject> p2( p1 ); printf("equality %s.\n", ((p1 == p2) && !(p1 != p2)) ? "OK" : "broken"); } { nsRefPtr<TestRefObject> p1( new TestRefObject() ); const nsRefPtr<TestRefObject> p2( p1 ); printf("equality %s.\n", ((p1 == p2) && !(p1 != p2)) ? "OK" : "broken"); } { const nsRefPtr<TestRefObject> p1( new TestRefObject() ); const nsRefPtr<TestRefObject> p2( p1 ); printf("equality %s.\n", ((p1 == p2) && !(p1 != p2)) ? "OK" : "broken"); } { nsRefPtr<TestRefObject> p1( new TestRefObject() ); TestRefObject * p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { const nsRefPtr<TestRefObject> p1( new TestRefObject() ); TestRefObject * p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } #if 0 /* MSVC++ 6.0 can't be coaxed to accept this */ { nsRefPtr<TestRefObject> p1( new TestRefObject() ); TestRefObject * const p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { const nsRefPtr<TestRefObject> p1( new TestRefObject() ); TestRefObject * const p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } #endif /* Things that MSVC++ 6.0 can't be coaxed to accept */ { nsRefPtr<TestRefObject> p1( new TestRefObject() ); const TestRefObject * p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { const nsRefPtr<TestRefObject> p1( new TestRefObject() ); const TestRefObject * p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { nsRefPtr<TestRefObject> p1( new TestRefObject() ); const TestRefObject * const p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { const nsRefPtr<TestRefObject> p1( new TestRefObject() ); const TestRefObject * const p2 = p1; printf("equality %s.\n", ((p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } printf("\nTesting getter_Transfers and getter_AddRefs.\n"); { nsAutoPtr<TestObject> ptr; printf("Should create one |TestObject|:\n"); CreateTestObject(getter_Transfers(ptr)); printf("Should destroy one |TestObject|:\n"); } { nsRefPtr<TestRefObject> ptr; printf("Should create and AddRef one |TestRefObject|:\n"); CreateTestRefObject(getter_AddRefs(ptr)); printf("Should Release and destroy one |TestRefObject|:\n"); } printf("\nTesting casts and equality tests.\n"); if ((void*)(TestObject*)0x1000 == (void*)(TestObjectBaseB*)(TestObject*)0x1000) printf("\n\nAll these tests are meaningless!\n\n\n"); { nsAutoPtr<TestObject> p1(new TestObject()); TestObjectBaseB *p2 = p1; printf("equality %s.\n", ((static_cast<void*>(p1) != static_cast<void*>(p2)) && (p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { TestObject *p1 = new TestObject(); nsAutoPtr<TestObjectBaseB> p2(p1); printf("equality %s.\n", ((static_cast<void*>(p1) != static_cast<void*>(p2)) && (p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { nsRefPtr<TestRefObject> p1 = new TestRefObject(); // nsCOMPtr requires a |get| for something like this as well nsRefPtr<TestRefObjectBaseB> p2 = p1.get(); printf("equality %s.\n", ((static_cast<void*>(p1) != static_cast<void*>(p2)) && (p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { nsRefPtr<TestRefObject> p1 = new TestRefObject(); TestRefObjectBaseB *p2 = p1; printf("equality %s.\n", ((static_cast<void*>(p1) != static_cast<void*>(p2)) && (p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } { TestRefObject *p1 = new TestRefObject(); nsRefPtr<TestRefObjectBaseB> p2 = p1; printf("equality %s.\n", ((static_cast<void*>(p1) != static_cast<void*>(p2)) && (p1 == p2) && !(p1 != p2) && (p2 == p1) && !(p2 != p1)) ? "OK" : "broken"); } printf("\nTesting |forget()|.\n"); { printf("Should create one |TestObject|:\n"); nsAutoPtr<TestObject> pobj( new TestObject() ); printf("Should do nothing:\n"); nsAutoPtr<TestObject> pobj2( pobj.forget() ); printf("Should destroy one |TestObject|:\n"); } { printf("Should create 3 |TestObject|s:\n"); nsAutoArrayPtr<TestObject> pobj( new TestObject[3] ); printf("Should do nothing:\n"); nsAutoArrayPtr<TestObject> pobj2( pobj.forget() ); printf("Should destroy 3 |TestObject|s:\n"); } { printf("Should create one |TestRefObject|:\n"); nsRefPtr<TestRefObject> pobj( new TestRefObject() ); printf("Should do nothing:\n"); nsRefPtr<TestRefObject> pobj2( pobj.forget() ); printf("Should destroy one |TestRefObject|:\n"); } printf("\nTesting construction.\n"); { printf("Should create one |TestObject|:\n"); nsAutoPtr<TestObject> pobj(new TestObject()); printf("Should destroy one |TestObject|:\n"); } { printf("Should create 3 |TestObject|s:\n"); nsAutoArrayPtr<TestObject> pobj(new TestObject[3]); printf("Should destroy 3 |TestObject|s:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); nsRefPtr<TestRefObject> pobj = new TestRefObject(); printf("Should Release and destroy one |TestRefObject|:\n"); } printf("\nTesting calling of functions (including array access and casts).\n"); { printf("Should create one |TestObject|:\n"); nsAutoPtr<TestObject> pobj(new TestObject()); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObject(pobj); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObject(pobj); printf("Should destroy one |TestObject|:\n"); } { printf("Should create 3 |TestObject|s:\n"); nsAutoArrayPtr<TestObject> pobj(new TestObject[3]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObject(&pobj[2]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObject(&pobj[1]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObject(pobj + 2); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObject(pobj + 1); printf("Should destroy 3 |TestObject|s:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); nsRefPtr<TestRefObject> pobj = new TestRefObject(); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithTestRefObject(pobj); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithConstTestRefObject(pobj); printf("Should Release and destroy one |TestRefObject|:\n"); } { printf("Should create one |TestObject|:\n"); nsAutoPtr<TestObject> pobj(new TestObject()); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObjectBaseB(pobj); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObjectBaseB(pobj); printf("Should destroy one |TestObject|:\n"); } { printf("Should create 3 |TestObject|s:\n"); nsAutoArrayPtr<TestObject> pobj(new TestObject[3]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObjectBaseB(&pobj[2]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObjectBaseB(&pobj[1]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObjectBaseB(pobj + 2); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObjectBaseB(pobj + 1); printf("Should destroy 3 |TestObject|s:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); nsRefPtr<TestRefObject> pobj = new TestRefObject(); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithTestRefObjectBaseB(pobj); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithConstTestRefObjectBaseB(pobj); printf("Should Release and destroy one |TestRefObject|:\n"); } { printf("Should create one |TestObject|:\n"); const nsAutoPtr<TestObject> pobj(new TestObject()); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObject(pobj); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObject(pobj); printf("Should destroy one |TestObject|:\n"); } { printf("Should create 3 |TestObject|s:\n"); const nsAutoArrayPtr<TestObject> pobj(new TestObject[3]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObject(&pobj[2]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObject(&pobj[1]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObject(pobj + 2); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObject(pobj + 1); printf("Should destroy 3 |TestObject|s:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); const nsRefPtr<TestRefObject> pobj = new TestRefObject(); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithTestRefObject(pobj); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithConstTestRefObject(pobj); printf("Should Release and destroy one |TestRefObject|:\n"); } { printf("Should create one |TestObject|:\n"); const nsAutoPtr<TestObject> pobj(new TestObject()); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObjectBaseB(pobj); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObjectBaseB(pobj); printf("Should destroy one |TestObject|:\n"); } { printf("Should create 3 |TestObject|s:\n"); const nsAutoArrayPtr<TestObject> pobj(new TestObject[3]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObjectBaseB(&pobj[2]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObjectBaseB(&pobj[1]); printf("Should do something with one |TestObject|:\n"); DoSomethingWithTestObjectBaseB(pobj + 2); printf("Should do something with one |TestObject|:\n"); DoSomethingWithConstTestObjectBaseB(pobj + 1); printf("Should destroy 3 |TestObject|s:\n"); } { printf("Should create and AddRef one |TestRefObject|:\n"); const nsRefPtr<TestRefObject> pobj = new TestRefObject(); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithTestRefObjectBaseB(pobj); printf("Should do something with one |TestRefObject|:\n"); DoSomethingWithConstTestRefObjectBaseB(pobj); printf("Should Release and destroy one |TestRefObject|:\n"); } return 0; }