Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 14, 2013, 6:42:28 PM (11 years ago)
Author:
landauf
Message:

added ability to set the root-context explicitly (and also to destroy it before the class-hierarchy is destroyed).
currently it's not possible to set the root context explicitly during startup of the game because it is already used by static initialization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core6/test/core/object/ListableTest.cc

    r9627 r9649  
    77    namespace
    88    {
    9         class ListableTest : public Listable
     9        class ListableClassTest : public Listable
    1010        {
    1111            public:
    12                 ListableTest() { RegisterRootObject(ListableTest); }
     12            ListableClassTest() { RegisterRootObject(ListableClassTest); }
    1313        };
    1414
    15         class ListableSubclassTest : public ListableTest
     15        class ListableSubclassTest : public ListableClassTest
    1616        {
    1717            public:
     
    2828            return false;
    2929        }
    30     }
    31 
    32     TEST(ListableTest, CanCreate)
    33     {
    34         ListableTest* test = new ListableTest();
     30
     31        // Fixture
     32        class ListableTest : public ::testing::Test
     33        {
     34            public:
     35                virtual void SetUp()
     36                {
     37                    Context::setRootContext(new Context(NULL));
     38                }
     39
     40                virtual void TearDown()
     41                {
     42                    Context::setRootContext(NULL);
     43                }
     44        };
     45    }
     46
     47    TEST_F(ListableTest, CanCreate)
     48    {
     49        ListableClassTest* test = new ListableClassTest();
    3550        ASSERT_TRUE(test != NULL);
    3651        delete test;
    3752    }
    3853
    39     TEST(ListableTest, AddsToObjectList)
    40     {
    41         ListableTest test;
    42         EXPECT_EQ(1u, ObjectList<ListableTest>::size());
    43         EXPECT_TRUE(objectListContains<ListableTest>(&test));
    44     }
    45 
    46     TEST(ListableTest, AddsToAllObjectLists)
    47     {
    48         ListableSubclassTest test;
    49         EXPECT_EQ(1u, ObjectList<ListableTest>::size());
    50         EXPECT_TRUE(objectListContains<ListableTest>(&test));
     54    TEST_F(ListableTest, AddsToObjectList)
     55    {
     56        ListableClassTest test;
     57        EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
     58        EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
     59    }
     60
     61    TEST_F(ListableTest, AddsToAllObjectLists)
     62    {
     63        ListableSubclassTest test;
     64        EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
     65        EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
    5166        EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
    5267        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
    5368    }
    5469
    55     TEST(ListableTest, RemovesFromObjectList)
    56     {
    57         EXPECT_EQ(0u, ObjectList<ListableTest>::size());
    58         {
    59             ListableTest test;
    60             EXPECT_EQ(1u, ObjectList<ListableTest>::size());
    61             EXPECT_TRUE(objectListContains<ListableTest>(&test));
     70    TEST_F(ListableTest, RemovesFromObjectList)
     71    {
     72        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
     73        {
     74            ListableClassTest test;
     75            EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
     76            EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
    6277        }
    63         EXPECT_EQ(0u, ObjectList<ListableTest>::size());
    64     }
    65 
    66     TEST(ListableTest, RemovesFromAllObjectLists)
    67     {
    68         EXPECT_EQ(0u, ObjectList<ListableTest>::size());
     78        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
     79    }
     80
     81    TEST_F(ListableTest, RemovesFromAllObjectLists)
     82    {
     83        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
    6984        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>::size());
    7085        {
    7186            ListableSubclassTest test;
    72             EXPECT_EQ(1u, ObjectList<ListableTest>::size());
    73             EXPECT_TRUE(objectListContains<ListableTest>(&test));
     87            EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
     88            EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
    7489            EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
    7590            EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
    7691        }
    77         EXPECT_EQ(0u, ObjectList<ListableTest>::size());
     92        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
    7893        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>::size());
    7994    }
    8095
    81     TEST(ListableTest, CanAddObjectToContext)
     96    TEST_F(ListableTest, CanAddObjectToContext)
    8297    {
    8398        Context context(NULL);
     
    87102
    88103        // object is in new context
    89         EXPECT_EQ(1u, context.getObjectList<ListableTest>()->size());
    90         EXPECT_TRUE(objectListContains<ListableTest>(&test, &context));
     104        EXPECT_EQ(1u, context.getObjectList<ListableClassTest>()->size());
     105        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, &context));
    91106        EXPECT_EQ(1u, context.getObjectList<ListableSubclassTest>()->size());
    92107        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, &context));
    93108    }
    94109
    95     TEST(ListableTest, CanAddObjectToSubContext)
     110    TEST_F(ListableTest, CanAddObjectToSubContext)
    96111    {
    97112        Context baseContext(NULL);
     
    102117
    103118        // object is in both contexts
    104         EXPECT_EQ(1u, baseContext.getObjectList<ListableTest>()->size());
    105         EXPECT_TRUE(objectListContains<ListableTest>(&test, &baseContext));
     119        EXPECT_EQ(1u, baseContext.getObjectList<ListableClassTest>()->size());
     120        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, &baseContext));
    106121        EXPECT_EQ(1u, baseContext.getObjectList<ListableSubclassTest>()->size());
    107122        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, &baseContext));
    108123
    109         EXPECT_EQ(1u, subContext.getObjectList<ListableTest>()->size());
    110         EXPECT_TRUE(objectListContains<ListableTest>(&test, &subContext));
     124        EXPECT_EQ(1u, subContext.getObjectList<ListableClassTest>()->size());
     125        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, &subContext));
    111126        EXPECT_EQ(1u, subContext.getObjectList<ListableSubclassTest>()->size());
    112127        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, &subContext));
    113128    }
    114129
    115     TEST(ListableTest, CanChangeContext)
     130    TEST_F(ListableTest, CanChangeContext)
    116131    {
    117132        Context* rootContext = Context::getRootContext();
     
    120135
    121136        // object is in root context
    122         EXPECT_EQ(1u, rootContext->getObjectList<ListableTest>()->size());
    123         EXPECT_TRUE(objectListContains<ListableTest>(&test, rootContext));
     137        EXPECT_EQ(1u, rootContext->getObjectList<ListableClassTest>()->size());
     138        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, rootContext));
    124139        EXPECT_EQ(1u, rootContext->getObjectList<ListableSubclassTest>()->size());
    125140        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, rootContext));
    126141
    127142        // object is NOT in new context
    128         EXPECT_EQ(0u, newContext.getObjectList<ListableTest>()->size());
    129         EXPECT_FALSE(objectListContains<ListableTest>(&test, &newContext));
     143        EXPECT_EQ(0u, newContext.getObjectList<ListableClassTest>()->size());
     144        EXPECT_FALSE(objectListContains<ListableClassTest>(&test, &newContext));
    130145        EXPECT_EQ(0u, newContext.getObjectList<ListableSubclassTest>()->size());
    131146        EXPECT_FALSE(objectListContains<ListableSubclassTest>(&test, &newContext));
     
    134149
    135150        // object was removed from root context
    136         EXPECT_EQ(0u, rootContext->getObjectList<ListableTest>()->size());
    137         EXPECT_FALSE(objectListContains<ListableTest>(&test, rootContext));
     151        EXPECT_EQ(0u, rootContext->getObjectList<ListableClassTest>()->size());
     152        EXPECT_FALSE(objectListContains<ListableClassTest>(&test, rootContext));
    138153        EXPECT_EQ(0u, rootContext->getObjectList<ListableSubclassTest>()->size());
    139154        EXPECT_FALSE(objectListContains<ListableSubclassTest>(&test, rootContext));
    140155
    141156        // object is now in new context
    142         EXPECT_EQ(1u, newContext.getObjectList<ListableTest>()->size());
    143         EXPECT_TRUE(objectListContains<ListableTest>(&test, &newContext));
     157        EXPECT_EQ(1u, newContext.getObjectList<ListableClassTest>()->size());
     158        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, &newContext));
    144159        EXPECT_EQ(1u, newContext.getObjectList<ListableSubclassTest>()->size());
    145160        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, &newContext));
    146161    }
    147162
    148     TEST(ListableTest, CanChangeToSubContext)
     163    TEST_F(ListableTest, CanChangeToSubContext)
    149164    {
    150165        Context* rootContext = Context::getRootContext();
     
    153168
    154169        // object is in root context
    155         EXPECT_EQ(1u, rootContext->getObjectList<ListableTest>()->size());
    156         EXPECT_TRUE(objectListContains<ListableTest>(&test, rootContext));
     170        EXPECT_EQ(1u, rootContext->getObjectList<ListableClassTest>()->size());
     171        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, rootContext));
    157172        EXPECT_EQ(1u, rootContext->getObjectList<ListableSubclassTest>()->size());
    158173        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, rootContext));
    159174
    160175        // object is NOT in sub context
    161         EXPECT_EQ(0u, subContext.getObjectList<ListableTest>()->size());
    162         EXPECT_FALSE(objectListContains<ListableTest>(&test, &subContext));
     176        EXPECT_EQ(0u, subContext.getObjectList<ListableClassTest>()->size());
     177        EXPECT_FALSE(objectListContains<ListableClassTest>(&test, &subContext));
    163178        EXPECT_EQ(0u, subContext.getObjectList<ListableSubclassTest>()->size());
    164179        EXPECT_FALSE(objectListContains<ListableSubclassTest>(&test, &subContext));
     
    167182
    168183        // object is still in root context
    169         EXPECT_EQ(1u, rootContext->getObjectList<ListableTest>()->size());
    170         EXPECT_TRUE(objectListContains<ListableTest>(&test, rootContext));
     184        EXPECT_EQ(1u, rootContext->getObjectList<ListableClassTest>()->size());
     185        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, rootContext));
    171186        EXPECT_EQ(1u, rootContext->getObjectList<ListableSubclassTest>()->size());
    172187        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, rootContext));
    173188
    174189        // object is now also in sub context
    175         EXPECT_EQ(1u, subContext.getObjectList<ListableTest>()->size());
    176         EXPECT_TRUE(objectListContains<ListableTest>(&test, &subContext));
     190        EXPECT_EQ(1u, subContext.getObjectList<ListableClassTest>()->size());
     191        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, &subContext));
    177192        EXPECT_EQ(1u, subContext.getObjectList<ListableSubclassTest>()->size());
    178193        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, &subContext));
    179194    }
    180195
    181     TEST(ListableTest, CanChangeFromSubcontextToSubContext)
     196    TEST_F(ListableTest, CanChangeFromSubcontextToSubContext)
    182197    {
    183198        Context* rootContext = Context::getRootContext();
     
    189204
    190205        // object is in root context
    191         EXPECT_EQ(1u, rootContext->getObjectList<ListableTest>()->size());
    192         EXPECT_TRUE(objectListContains<ListableTest>(&test, rootContext));
     206        EXPECT_EQ(1u, rootContext->getObjectList<ListableClassTest>()->size());
     207        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, rootContext));
    193208        EXPECT_EQ(1u, rootContext->getObjectList<ListableSubclassTest>()->size());
    194209        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, rootContext));
    195210
    196211        // object is also in sub context 1
    197         EXPECT_EQ(1u, subContext1.getObjectList<ListableTest>()->size());
    198         EXPECT_TRUE(objectListContains<ListableTest>(&test, &subContext1));
     212        EXPECT_EQ(1u, subContext1.getObjectList<ListableClassTest>()->size());
     213        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, &subContext1));
    199214        EXPECT_EQ(1u, subContext1.getObjectList<ListableSubclassTest>()->size());
    200215        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, &subContext1));
    201216
    202217        // object is NOT in sub context 2
    203         EXPECT_EQ(0u, subContext2.getObjectList<ListableTest>()->size());
    204         EXPECT_FALSE(objectListContains<ListableTest>(&test, &subContext2));
     218        EXPECT_EQ(0u, subContext2.getObjectList<ListableClassTest>()->size());
     219        EXPECT_FALSE(objectListContains<ListableClassTest>(&test, &subContext2));
    205220        EXPECT_EQ(0u, subContext2.getObjectList<ListableSubclassTest>()->size());
    206221        EXPECT_FALSE(objectListContains<ListableSubclassTest>(&test, &subContext2));
     
    209224
    210225        // object is still in root context
    211         EXPECT_EQ(1u, rootContext->getObjectList<ListableTest>()->size());
    212         EXPECT_TRUE(objectListContains<ListableTest>(&test, rootContext));
     226        EXPECT_EQ(1u, rootContext->getObjectList<ListableClassTest>()->size());
     227        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, rootContext));
    213228        EXPECT_EQ(1u, rootContext->getObjectList<ListableSubclassTest>()->size());
    214229        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, rootContext));
    215230
    216231        // object was removed from sub context 1
    217         EXPECT_EQ(0u, subContext1.getObjectList<ListableTest>()->size());
    218         EXPECT_FALSE(objectListContains<ListableTest>(&test, &subContext1));
     232        EXPECT_EQ(0u, subContext1.getObjectList<ListableClassTest>()->size());
     233        EXPECT_FALSE(objectListContains<ListableClassTest>(&test, &subContext1));
    219234        EXPECT_EQ(0u, subContext1.getObjectList<ListableSubclassTest>()->size());
    220235        EXPECT_FALSE(objectListContains<ListableSubclassTest>(&test, &subContext1));
    221236
    222237        // object is now in sub context 2
    223         EXPECT_EQ(1u, subContext2.getObjectList<ListableTest>()->size());
    224         EXPECT_TRUE(objectListContains<ListableTest>(&test, &subContext2));
     238        EXPECT_EQ(1u, subContext2.getObjectList<ListableClassTest>()->size());
     239        EXPECT_TRUE(objectListContains<ListableClassTest>(&test, &subContext2));
    225240        EXPECT_EQ(1u, subContext2.getObjectList<ListableSubclassTest>()->size());
    226241        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test, &subContext2));
Note: See TracChangeset for help on using the changeset viewer.