Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core6/test/core/object/ListableTest.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.2 KB
Line 
1#include <gtest/gtest.h>
2#include "core/object/Listable.h"
3#include "core/CoreIncludes.h"
4
5namespace orxonox
6{
7    namespace
8    {
9        class ListableTest : public Listable
10        {
11            public:
12                ListableTest() { RegisterRootObject(ListableTest); }
13        };
14
15        class ListableSubclassTest : public ListableTest
16        {
17            public:
18                ListableSubclassTest() { RegisterObject(ListableSubclassTest); }
19        };
20
21        template <class T>
22        bool objectListContains(T* element)
23        {
24            for (typename ObjectList<T>::iterator it = ObjectList<T>::begin(); it != ObjectList<T>::end(); ++it)
25                if (*it == element)
26                    return true;
27            return false;
28        }
29    }
30
31    TEST(ListableTest, CanCreate)
32    {
33        ListableTest* test = new ListableTest();
34        ASSERT_TRUE(test != NULL);
35        delete test;
36    }
37
38    TEST(ListableTest, AddsToObjectList)
39    {
40        ListableTest test;
41        EXPECT_EQ(1u, ObjectList<ListableTest>::size());
42        EXPECT_TRUE(objectListContains<ListableTest>(&test));
43    }
44
45    TEST(ListableTest, AddsToAllObjectLists)
46    {
47        ListableSubclassTest test;
48        EXPECT_EQ(1u, ObjectList<ListableTest>::size());
49        EXPECT_TRUE(objectListContains<ListableTest>(&test));
50        EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
51        EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
52    }
53
54    TEST(ListableTest, RemovesFromObjectList)
55    {
56        {
57            ListableTest test;
58            EXPECT_EQ(1u, ObjectList<ListableTest>::size());
59            EXPECT_TRUE(objectListContains<ListableTest>(&test));
60        }
61        EXPECT_EQ(0u, ObjectList<ListableTest>::size());
62    }
63
64    TEST(ListableTest, RemovesFromAllObjectLists)
65    {
66        {
67            ListableSubclassTest test;
68            EXPECT_EQ(1u, ObjectList<ListableTest>::size());
69            EXPECT_TRUE(objectListContains<ListableTest>(&test));
70            EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
71            EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
72        }
73        EXPECT_EQ(0u, ObjectList<ListableTest>::size());
74        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>::size());
75    }
76}
Note: See TracBrowser for help on using the repository browser.