summaryrefslogtreecommitdiffstats
path: root/ipc/ipdl/test/cxx/TestSelfManageRoot.cpp
blob: e8b2330ba1f57e4037f748cea93fb67595f387b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "TestSelfManageRoot.h"

#include "IPDLUnitTests.h"      // fail etc.

#define ASSERT(c)                               \
    do {                                        \
        if (!(c))                               \
            fail(#c);                           \
    } while (0)

namespace mozilla {
namespace _ipdltest {

//-----------------------------------------------------------------------------
// parent

void
TestSelfManageRootParent::Main()
{
    TestSelfManageParent* a =
        static_cast<TestSelfManageParent*>(SendPTestSelfManageConstructor());
    if (!a)
        fail("constructing PTestSelfManage");

    ASSERT(1 == ManagedPTestSelfManageParent().Count());

    TestSelfManageParent* aa =
        static_cast<TestSelfManageParent*>(a->SendPTestSelfManageConstructor());
    if (!aa)
        fail("constructing PTestSelfManage");

    ASSERT(1 == ManagedPTestSelfManageParent().Count() &&
           1 == a->ManagedPTestSelfManageParent().Count());

    if (!PTestSelfManageParent::Send__delete__(aa))
        fail("destroying PTestSelfManage");
    ASSERT(Deletion == aa->mWhy &&
           1 == ManagedPTestSelfManageParent().Count() &&
           0 == a->ManagedPTestSelfManageParent().Count());
    delete aa;

    aa =
        static_cast<TestSelfManageParent*>(a->SendPTestSelfManageConstructor());
    if (!aa)
        fail("constructing PTestSelfManage");

    ASSERT(1 == ManagedPTestSelfManageParent().Count() &&
           1 == a->ManagedPTestSelfManageParent().Count());

    if (!PTestSelfManageParent::Send__delete__(a))
        fail("destroying PTestSelfManage");
    ASSERT(Deletion == a->mWhy &&
           AncestorDeletion == aa->mWhy &&
           0 == ManagedPTestSelfManageParent().Count() &&
           0 == a->ManagedPTestSelfManageParent().Count());
    delete a;
    delete aa;

    Close();
}

} // namespace _ipdltest
} // namespace mozilla