Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/test/core/object/ObjectListIteratorTest.cc @ 10624

Last change on this file since 10624 was 10624, checked in by landauf, 9 years ago

merged branch core7 back to trunk

  • Property svn:eol-style set to native
File size: 3.2 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 ObjectListIteratorTest : public ::testing::Test
24        {
25            public:
26                virtual void SetUp()
27                {
28                    new IdentifierManager();
29                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
30                    Context::setRootContext(new Context(NULL));
31                }
32
33                virtual void TearDown()
34                {
35                    Context::destroyRootContext();
36                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
37                    delete &IdentifierManager::getInstance();
38                }
39        };
40    }
41
42    TEST_F(ObjectListIteratorTest, CanCreateIterator)
43    {
44        ObjectListIterator<ListableTest> it;
45    }
46
47    TEST_F(ObjectListIteratorTest, CanAssignIterator)
48    {
49        ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin();
50    }
51
52    TEST_F(ObjectListIteratorTest, CanIterateOverEmptyList)
53    {
54        size_t i = 0;
55        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
56            ++i;
57        EXPECT_EQ(0u, i);
58    }
59
60    TEST_F(ObjectListIteratorTest, CanIterateOverFullList)
61    {
62        ListableTest test1;
63        ListableTest test2;
64        ListableTest test3;
65
66        size_t i = 0;
67        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
68        {
69            ++i;
70            if (i == 1u) EXPECT_EQ(&test1, *it);
71            if (i == 2u) EXPECT_EQ(&test2, *it);
72            if (i == 3u) EXPECT_EQ(&test3, *it);
73        }
74        EXPECT_EQ(3u, i);
75    }
76
77    TEST_F(ObjectListIteratorTest, CanIterateReverseOverFullList)
78    {
79        ListableTest test1;
80        ListableTest test2;
81        ListableTest test3;
82
83        size_t i = 0;
84        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::rbegin(); it != ObjectList<ListableTest>::rend(); --it)
85        {
86            ++i;
87            if (i == 1u) EXPECT_EQ(&test3, *it);
88            if (i == 2u) EXPECT_EQ(&test2, *it);
89            if (i == 3u) EXPECT_EQ(&test1, *it);
90        }
91        EXPECT_EQ(3u, i);
92    }
93
94    TEST_F(ObjectListIteratorTest, CanCallObjects)
95    {
96        ListableTest test1;
97        ListableTest test2;
98        ListableTest test3;
99
100        EXPECT_CALL(test1, test());
101        EXPECT_CALL(test2, test());
102        EXPECT_CALL(test3, test());
103
104        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
105            it->test();
106    }
107}
Note: See TracBrowser for help on using the repository browser.