Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core7/test/core/class/IdentifierSimpleClassHierarchyTest.cc @ 10400

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

fixed tests. however there are some open issues:

  • the class-hierarchy must be built exactly 1 times in core_test. this is currently done in CommandTest.cc because that's the first test to run in core_test which actually needs the class hierarchy. the order of tests is not guaranteed though, so this should be solved more generic
  • during creation of class hierarchy, config values are used. this fails in the tests, so it had to be disabled with a static flag in Identifier. this should be solved in a cleaner way.
  • because the class hierarchy is now statically generated for all tests in core_test in CommandTest.cc, there is no way to test identifiers in an uninitialized state. because of this, three tests had to be disabled (*_NoFixture tests)

⇒ make the creation of the class hierarchy more modular and fix these issues

  • Property svn:eol-style set to native
File size: 5.3 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 : virtual public OrxonoxInterface
12        {
13            public:
14                Interface()
15                {
16                    RegisterObject(Interface);
17                }
18
19                virtual void test() = 0;
20        };
21
22        class BaseClass : public OrxonoxClass
23        {
24            public:
25                BaseClass()
26                {
27                    RegisterObject(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        RegisterAbstractClass(Interface).inheritsFrom<OrxonoxInterface>();
43        RegisterClassNoArgs(BaseClass);
44        RegisterClassNoArgs(RealClass);
45
46        // Fixture
47        class IdentifierSimpleClassHierarchyTest : public ::testing::Test
48        {
49            public:
50                virtual void SetUp()
51                {
52                }
53
54                virtual void TearDown()
55                {
56                }
57        };
58
59        bool contains(const std::list<const Identifier*> identifiers, Identifier* identifier)
60        {
61            return std::find(identifiers.begin(), identifiers.end(), identifier) != identifiers.end();
62        }
63
64        bool contains(const std::set<const Identifier*> identifiers, Identifier* identifier)
65        {
66            return identifiers.find(identifier) != identifiers.end();
67        }
68    }
69
70//    TEST(IdentifierSimpleClassHierarchyTest_NoFixture, NoInitialization)
71//    {
72//        {
73//            Identifier* identifier = Class(Interface);
74//            EXPECT_EQ(0u, identifier->getChildren().size());
75//            EXPECT_EQ(0u, identifier->getParents().size());
76//        }
77//        {
78//            Identifier* identifier = Class(BaseClass);
79//            EXPECT_EQ(0u, identifier->getChildren().size());
80//            EXPECT_EQ(0u, identifier->getParents().size());
81//        }
82//        {
83//            Identifier* identifier = Class(RealClass);
84//            EXPECT_EQ(0u, identifier->getChildren().size());
85//            EXPECT_EQ(0u, identifier->getParents().size());
86//        }
87//    }
88
89    TEST_F(IdentifierSimpleClassHierarchyTest, TestInterface)
90    {
91        Identifier* identifier = Class(Interface);
92
93        EXPECT_EQ(1u, identifier->getDirectChildren().size());
94        EXPECT_TRUE(contains(identifier->getDirectChildren(), Class(RealClass)));
95
96        EXPECT_EQ(1u, identifier->getChildren().size());
97        EXPECT_TRUE(contains(identifier->getChildren(), Class(RealClass)));
98
99        EXPECT_EQ(1u, identifier->getDirectParents().size());
100        EXPECT_TRUE(contains(identifier->getDirectParents(), Class(OrxonoxInterface)));
101
102        EXPECT_EQ(4u, identifier->getParents().size());
103        EXPECT_TRUE(contains(identifier->getParents(), Class(Identifiable)));
104        EXPECT_TRUE(contains(identifier->getParents(), Class(Listable)));
105        EXPECT_TRUE(contains(identifier->getParents(), Class(Configurable)));
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(4u, 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(Configurable)));
126        EXPECT_TRUE(contains(identifier->getParents(), Class(OrxonoxClass)));
127    }
128
129    TEST_F(IdentifierSimpleClassHierarchyTest, RealClass)
130    {
131        Identifier* identifier = Class(RealClass);
132
133        EXPECT_EQ(0u, identifier->getDirectChildren().size());
134
135        EXPECT_EQ(0u, identifier->getChildren().size());
136
137        EXPECT_EQ(2u, identifier->getDirectParents().size());
138        EXPECT_TRUE(contains(identifier->getDirectParents(), Class(Interface)));
139        EXPECT_TRUE(contains(identifier->getDirectParents(), Class(BaseClass)));
140
141        EXPECT_EQ(7u, identifier->getParents().size());
142        EXPECT_TRUE(contains(identifier->getParents(), Class(Identifiable)));
143        EXPECT_TRUE(contains(identifier->getParents(), Class(Listable)));
144        EXPECT_TRUE(contains(identifier->getParents(), Class(Configurable)));
145        EXPECT_TRUE(contains(identifier->getParents(), Class(OrxonoxInterface)));
146        EXPECT_TRUE(contains(identifier->getParents(), Class(OrxonoxClass)));
147        EXPECT_TRUE(contains(identifier->getParents(), Class(Interface)));
148        EXPECT_TRUE(contains(identifier->getParents(), Class(BaseClass)));
149    }
150}
Note: See TracBrowser for help on using the repository browser.