Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core7/test/core/object/ObjectListIteratorTest.cc @ 10481

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

StaticallyInitializedIdentifier is now responsible to register and unregister the assigned identifier.

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