Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/cpp11_v2/test/core/object/ObjectListTest.cc @ 10846

Last change on this file since 10846 was 10846, checked in by landauf, 8 years ago

added 'override' to inherited virtual functions in unittests

File size: 3.1 KB
Line 
1#include <gtest/gtest.h>
2#include <gmock/gmock.h>
3
4#include "core/object/ObjectListIterator.h"
5#include "core/object/Listable.h"
6#include "core/CoreIncludes.h"
7#include "core/module/ModuleInstance.h"
8
9namespace orxonox
10{
11    namespace
12    {
13        class ListableTest : public Listable
14        {
15            public:
16                ListableTest() { RegisterObject(ListableTest); }
17                MOCK_METHOD0(test, void());
18        };
19
20        RegisterClassNoArgs(ListableTest);
21
22        // Fixture
23        class ObjectListTest : public ::testing::Test
24        {
25            public:
26                virtual void SetUp() override
27                {
28                    new IdentifierManager();
29                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
30                    Context::setRootContext(new Context(nullptr));
31                }
32
33                virtual void TearDown() override
34                {
35                    Context::destroyRootContext();
36                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
37                    delete &IdentifierManager::getInstance();
38                }
39        };
40    }
41   
42    TEST_F(ObjectListTest, CanIterateOverEmptyList)
43    {
44        size_t i = 0;
45        for (ListableTest* object : ObjectList<ListableTest>())
46        {
47            ++i;
48            ((void*)object); // avoid warning about unused variable
49        }
50        EXPECT_EQ(0u, i);
51    }
52
53    TEST_F(ObjectListTest, CanIterateOverFullList)
54    {
55        ListableTest test1;
56        ListableTest test2;
57        ListableTest test3;
58
59        size_t i = 0;
60        for (ListableTest* object : ObjectList<ListableTest>())
61        {
62            ++i;
63            if (i == 1u) EXPECT_EQ(&test1, object);
64            if (i == 2u) EXPECT_EQ(&test2, object);
65            if (i == 3u) EXPECT_EQ(&test3, object);
66        }
67        EXPECT_EQ(3u, i);
68    }
69   
70    TEST_F(ObjectListTest, CanIterateOverFullList_Expanded)
71    {
72        ListableTest test1;
73        ListableTest test2;
74        ListableTest test3;
75
76        size_t i = 0;
77        ObjectList<ListableTest>&& __range = ObjectList<ListableTest>();
78        ObjectListIterator<ListableTest> __begin = __range.begin();
79        ObjectListIterator<ListableTest>__end = __range.end();
80        for (; __begin != __end; ++__begin)
81        {
82            ListableTest* object = *__begin;
83
84            ++i;
85            if (i == 1u) EXPECT_EQ(&test1, object);
86            if (i == 2u) EXPECT_EQ(&test2, object);
87            if (i == 3u) EXPECT_EQ(&test3, object);
88        }
89        EXPECT_EQ(3u, i);
90    }
91   
92    TEST_F(ObjectListTest, CanCallObjects)
93    {
94        ListableTest test1;
95        ListableTest test2;
96        ListableTest test3;
97
98        EXPECT_CALL(test1, test());
99        EXPECT_CALL(test2, test());
100        EXPECT_CALL(test3, test());
101
102        for (ListableTest* object : ObjectList<ListableTest>())
103            object->test();
104    }
105}
Note: See TracBrowser for help on using the repository browser.