Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core6/test/core/class/IdentifierSimpleClassHierarchyTest.cc @ 9651

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

register Listable in the framework

  • Property svn:eol-style set to native
File size: 5.4 KB
Line 
1#include <gtest/gtest.h>
2#include "core/CoreIncludes.h"
3#include "core/class/Identifiable.h"
4#include "core/class/OrxonoxClass.h"
5#include "core/class/OrxonoxInterface.h"
6
7namespace orxonox
8{
9    namespace
10    {
11        class Interface : public OrxonoxInterface
12        {
13            public:
14                Interface()
15                {
16                    RegisterRootObject(Interface);
17                }
18
19                virtual void test() = 0;
20        };
21
22        class BaseClass : public OrxonoxClass
23        {
24            public:
25                BaseClass()
26                {
27                    RegisterRootObject(BaseClass);
28                }
29        };
30
31        class RealClass : public BaseClass, public Interface
32        {
33            public:
34                RealClass()
35                {
36                    RegisterObject(RealClass);
37                }
38
39                virtual void test() {}
40        };
41
42        // Fixture
43        class IdentifierSimpleClassHierarchyTest : public ::testing::Test
44        {
45            public:
46                virtual void SetUp()
47                {
48                    registerClass("Context", new ClassFactoryWithContext<Context>());
49                    registerClass("Listable", new ClassFactoryWithContext<Listable>());
50                    registerClass("OrxonoxInterface", new ClassFactoryNoArgs<OrxonoxInterface>());
51                    registerClass("OrxonoxClass", new ClassFactoryNoArgs<OrxonoxClass>());
52                    registerClass("Interface", static_cast<ClassFactory<Interface>*>(NULL), false).inheritsFrom(Class(OrxonoxInterface));
53                    registerClass("BaseClass", new ClassFactoryNoArgs<BaseClass>());
54                    registerClass("RealClass", new ClassFactoryNoArgs<RealClass>());
55
56                    IdentifierManager::getInstance().createClassHierarchy();
57                }
58
59                virtual void TearDown()
60                {
61                    IdentifierManager::getInstance().destroyAllIdentifiers();
62                }
63        };
64
65        bool contains(const std::set<const Identifier*> identifiers, Identifier* identifier)
66        {
67            return identifiers.find(identifier) != identifiers.end();
68        }
69    }
70
71    TEST(IdentifierSimpleClassHierarchyTest_NoFixture, NoInitialization)
72    {
73        {
74            Identifier* identifier = Class(Interface);
75            EXPECT_EQ(0u, identifier->getChildren().size());
76            EXPECT_EQ(0u, identifier->getParents().size());
77        }
78        {
79            Identifier* identifier = Class(BaseClass);
80            EXPECT_EQ(0u, identifier->getChildren().size());
81            EXPECT_EQ(0u, identifier->getParents().size());
82        }
83        {
84            Identifier* identifier = Class(RealClass);
85            EXPECT_EQ(0u, identifier->getChildren().size());
86            EXPECT_EQ(0u, identifier->getParents().size());
87        }
88    }
89
90    TEST_F(IdentifierSimpleClassHierarchyTest, TestInterface)
91    {
92        Identifier* identifier = Class(Interface);
93
94        EXPECT_EQ(1u, identifier->getDirectChildren().size());
95        EXPECT_TRUE(contains(identifier->getDirectChildren(), Class(RealClass)));
96
97        EXPECT_EQ(1u, identifier->getChildren().size());
98        EXPECT_TRUE(contains(identifier->getChildren(), Class(RealClass)));
99
100        EXPECT_EQ(1u, identifier->getDirectParents().size());
101        EXPECT_TRUE(contains(identifier->getDirectParents(), Class(OrxonoxInterface)));
102
103        EXPECT_EQ(3u, identifier->getParents().size());
104        EXPECT_TRUE(contains(identifier->getParents(), Class(Identifiable)));
105        EXPECT_TRUE(contains(identifier->getParents(), Class(Listable)));
106        EXPECT_TRUE(contains(identifier->getParents(), Class(OrxonoxInterface)));
107    }
108
109    TEST_F(IdentifierSimpleClassHierarchyTest, BaseClass)
110    {
111        Identifier* identifier = Class(BaseClass);
112
113        EXPECT_EQ(1u, identifier->getDirectChildren().size());
114        EXPECT_TRUE(contains(identifier->getDirectChildren(), Class(RealClass)));
115
116        EXPECT_EQ(1u, identifier->getChildren().size());
117        EXPECT_TRUE(contains(identifier->getChildren(), Class(RealClass)));
118
119        EXPECT_EQ(1u, identifier->getDirectParents().size());
120        EXPECT_TRUE(contains(identifier->getDirectParents(), Class(OrxonoxClass)));
121
122        EXPECT_EQ(3u, identifier->getParents().size());
123        EXPECT_TRUE(contains(identifier->getParents(), Class(Identifiable)));
124        EXPECT_TRUE(contains(identifier->getParents(), Class(Listable)));
125        EXPECT_TRUE(contains(identifier->getParents(), Class(OrxonoxClass)));
126    }
127
128    TEST_F(IdentifierSimpleClassHierarchyTest, RealClass)
129    {
130        Identifier* identifier = Class(RealClass);
131
132        EXPECT_EQ(0u, identifier->getDirectChildren().size());
133
134        EXPECT_EQ(0u, identifier->getChildren().size());
135
136        EXPECT_EQ(2u, identifier->getDirectParents().size());
137        EXPECT_TRUE(contains(identifier->getDirectParents(), Class(Interface)));
138        EXPECT_TRUE(contains(identifier->getDirectParents(), Class(BaseClass)));
139
140        EXPECT_EQ(6u, identifier->getParents().size());
141        EXPECT_TRUE(contains(identifier->getParents(), Class(Identifiable)));
142        EXPECT_TRUE(contains(identifier->getParents(), Class(Listable)));
143        EXPECT_TRUE(contains(identifier->getParents(), Class(OrxonoxInterface)));
144        EXPECT_TRUE(contains(identifier->getParents(), Class(OrxonoxClass)));
145        EXPECT_TRUE(contains(identifier->getParents(), Class(Interface)));
146        EXPECT_TRUE(contains(identifier->getParents(), Class(BaseClass)));
147    }
148}
Note: See TracBrowser for help on using the repository browser.