Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core6/test/core/class/IdentifierExternalClassHierarchyTest.cc @ 9639

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

added tests

  • Property svn:eol-style set to native
File size: 2.5 KB
Line 
1#include <gtest/gtest.h>
2#include "core/CoreIncludes.h"
3#include "core/class/Identifiable.h"
4
5namespace orxonox
6{
7    namespace
8    {
9        class Interface : virtual public Identifiable
10            { public: Interface() { RegisterRootObject(Interface); } };
11
12        class BaseClass : virtual public Identifiable
13            { public: BaseClass() { RegisterRootObject(BaseClass); } };
14
15        class RealClass : public BaseClass, public Interface
16            { public: RealClass() { RegisterObject(RealClass); } };
17
18        // Fixture
19        class IdentifierExternalClassHierarchyTest : public ::testing::Test
20        {
21            public:
22                virtual void SetUp()
23                {
24                    registerClass("Interface", new ClassFactoryNoArgs<Interface>());
25                    registerClass("BaseClass", new ClassFactoryNoArgs<BaseClass>());
26                    registerClass("RealClass", new ClassFactoryNoArgs<RealClass>());
27
28                    IdentifierManager::createClassHierarchy();
29                }
30
31                virtual void TearDown()
32                {
33                    IdentifierManager::destroyAllIdentifiers();
34                }
35        };
36    }
37
38    TEST(IdentifierExternalClassHierarchyTest_NoFixture, NoInitialization)
39    {
40        {
41            Identifier* identifier = Class(Interface);
42            EXPECT_EQ(0u, identifier->getChildren().size());
43            EXPECT_EQ(0u, identifier->getParents().size());
44        }
45        {
46            Identifier* identifier = Class(BaseClass);
47            EXPECT_EQ(0u, identifier->getChildren().size());
48            EXPECT_EQ(0u, identifier->getParents().size());
49        }
50        {
51            Identifier* identifier = Class(RealClass);
52            EXPECT_EQ(0u, identifier->getChildren().size());
53            EXPECT_EQ(0u, identifier->getParents().size());
54        }
55    }
56
57    TEST_F(IdentifierExternalClassHierarchyTest, TestInterface)
58    {
59        Identifier* identifier = Class(Interface);
60
61        EXPECT_EQ(1u, identifier->getChildren().size());
62        EXPECT_EQ(0u, identifier->getParents().size());
63    }
64
65    TEST_F(IdentifierExternalClassHierarchyTest, BaseClass)
66    {
67        Identifier* identifier = Class(BaseClass);
68
69        EXPECT_EQ(1u, identifier->getChildren().size());
70        EXPECT_EQ(0u, identifier->getParents().size());
71    }
72
73    TEST_F(IdentifierExternalClassHierarchyTest, RealClass)
74    {
75        Identifier* identifier = Class(RealClass);
76
77        EXPECT_EQ(0u, identifier->getChildren().size());
78        EXPECT_EQ(2u, identifier->getParents().size());
79    }
80}
Note: See TracBrowser for help on using the repository browser.