Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core6/test/core/object/ObjectListIteratorTest.cc @ 9649

Last change on this file since 9649 was 9649, checked in by landauf, 11 years ago

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

  • Property svn:eol-style set to native
File size: 2.7 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
8namespace orxonox
9{
10    namespace
11    {
12        class ListableTest : public Listable
13        {
14            public:
15                ListableTest() { RegisterRootObject(ListableTest); }
16                MOCK_METHOD0(test, void());
17        };
18
19        // Fixture
20        class ObjectListIteratorTest : public ::testing::Test
21        {
22            public:
23                virtual void SetUp()
24                {
25                    Context::setRootContext(new Context(NULL));
26                }
27
28                virtual void TearDown()
29                {
30                    Context::setRootContext(NULL);
31                }
32        };
33    }
34
35    TEST_F(ObjectListIteratorTest, CanCreateIterator)
36    {
37        ObjectListIterator<ListableTest> it;
38    }
39
40    TEST_F(ObjectListIteratorTest, CanAssignIterator)
41    {
42        ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin();
43    }
44
45    TEST_F(ObjectListIteratorTest, CanIterateOverEmptyList)
46    {
47        size_t i = 0;
48        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
49            ++i;
50        EXPECT_EQ(0u, i);
51    }
52
53    TEST_F(ObjectListIteratorTest, CanIterateOverFullList)
54    {
55        ListableTest test1;
56        ListableTest test2;
57        ListableTest test3;
58
59        size_t i = 0;
60        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
61        {
62            ++i;
63            if (i == 1u) EXPECT_EQ(&test1, *it);
64            if (i == 2u) EXPECT_EQ(&test2, *it);
65            if (i == 3u) EXPECT_EQ(&test3, *it);
66        }
67        EXPECT_EQ(3u, i);
68    }
69
70    TEST_F(ObjectListIteratorTest, CanIterateReverseOverFullList)
71    {
72        ListableTest test1;
73        ListableTest test2;
74        ListableTest test3;
75
76        size_t i = 0;
77        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::rbegin(); it != ObjectList<ListableTest>::rend(); --it)
78        {
79            ++i;
80            if (i == 1u) EXPECT_EQ(&test3, *it);
81            if (i == 2u) EXPECT_EQ(&test2, *it);
82            if (i == 3u) EXPECT_EQ(&test1, *it);
83        }
84        EXPECT_EQ(3u, i);
85    }
86
87    TEST_F(ObjectListIteratorTest, CanCallObjects)
88    {
89        ListableTest test1;
90        ListableTest test2;
91        ListableTest test3;
92
93        EXPECT_CALL(test1, test());
94        EXPECT_CALL(test2, test());
95        EXPECT_CALL(test3, test());
96
97        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
98            it->test();
99    }
100}
Note: See TracBrowser for help on using the repository browser.