Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

added some tests for object list and iterators

  • Property svn:eol-style set to native
File size: 2.3 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
20    TEST(ObjectListIteratorTest, CanCreateIterator)
21    {
22        ObjectListIterator<ListableTest> it;
23    }
24
25    TEST(ObjectListIteratorTest, CanAssignIterator)
26    {
27        ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin();
28    }
29
30    TEST(ObjectListIteratorTest, CanIterateOverEmptyList)
31    {
32        size_t i = 0;
33        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
34            ++i;
35        EXPECT_EQ(0u, i);
36    }
37
38    TEST(ObjectListIteratorTest, CanIterateOverFullList)
39    {
40        ListableTest test1;
41        ListableTest test2;
42        ListableTest test3;
43
44        size_t i = 0;
45        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
46        {
47            ++i;
48            if (i == 1u) EXPECT_EQ(&test1, *it);
49            if (i == 2u) EXPECT_EQ(&test2, *it);
50            if (i == 3u) EXPECT_EQ(&test3, *it);
51        }
52        EXPECT_EQ(3u, i);
53    }
54
55    TEST(ObjectListIteratorTest, CanIterateReverseOverFullList)
56    {
57        ListableTest test1;
58        ListableTest test2;
59        ListableTest test3;
60
61        size_t i = 0;
62        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::rbegin(); it != ObjectList<ListableTest>::rend(); --it)
63        {
64            ++i;
65            if (i == 1u) EXPECT_EQ(&test3, *it);
66            if (i == 2u) EXPECT_EQ(&test2, *it);
67            if (i == 3u) EXPECT_EQ(&test1, *it);
68        }
69        EXPECT_EQ(3u, i);
70    }
71
72    TEST(ObjectListIteratorTest, CanCallObjects)
73    {
74        ListableTest test1;
75        ListableTest test2;
76        ListableTest test3;
77
78        EXPECT_CALL(test1, test());
79        EXPECT_CALL(test2, test());
80        EXPECT_CALL(test3, test());
81
82        for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
83            it->test();
84    }
85}
Note: See TracBrowser for help on using the repository browser.