michael@0: #include "TestSelfManageRoot.h" michael@0: michael@0: #include "IPDLUnitTests.h" // fail etc. michael@0: michael@0: #define ASSERT(c) \ michael@0: do { \ michael@0: if (!(c)) \ michael@0: fail(#c); \ michael@0: } while (0) michael@0: michael@0: namespace mozilla { michael@0: namespace _ipdltest { michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: // parent michael@0: michael@0: void michael@0: TestSelfManageRootParent::Main() michael@0: { michael@0: TestSelfManageParent* a = michael@0: static_cast(SendPTestSelfManageConstructor()); michael@0: if (!a) michael@0: fail("constructing PTestSelfManage"); michael@0: michael@0: ASSERT(1 == ManagedPTestSelfManageParent().Length()); michael@0: michael@0: TestSelfManageParent* aa = michael@0: static_cast(a->SendPTestSelfManageConstructor()); michael@0: if (!aa) michael@0: fail("constructing PTestSelfManage"); michael@0: michael@0: ASSERT(1 == ManagedPTestSelfManageParent().Length() && michael@0: 1 == a->ManagedPTestSelfManageParent().Length()); michael@0: michael@0: if (!PTestSelfManageParent::Send__delete__(aa)) michael@0: fail("destroying PTestSelfManage"); michael@0: ASSERT(Deletion == aa->mWhy && michael@0: 1 == ManagedPTestSelfManageParent().Length() && michael@0: 0 == a->ManagedPTestSelfManageParent().Length()); michael@0: delete aa; michael@0: michael@0: aa = michael@0: static_cast(a->SendPTestSelfManageConstructor()); michael@0: if (!aa) michael@0: fail("constructing PTestSelfManage"); michael@0: michael@0: ASSERT(1 == ManagedPTestSelfManageParent().Length() && michael@0: 1 == a->ManagedPTestSelfManageParent().Length()); michael@0: michael@0: if (!PTestSelfManageParent::Send__delete__(a)) michael@0: fail("destroying PTestSelfManage"); michael@0: ASSERT(Deletion == a->mWhy && michael@0: AncestorDeletion == aa->mWhy && michael@0: 0 == ManagedPTestSelfManageParent().Length() && michael@0: 0 == a->ManagedPTestSelfManageParent().Length()); michael@0: delete a; michael@0: delete aa; michael@0: michael@0: Close(); michael@0: } michael@0: michael@0: } // namespace _ipdltest michael@0: } // namespace mozilla