Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core7/test/core/class/SubclassIdentifierTest.cc @ 10530

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

statically initialized instances may contain a type. currently not used.

  • Property svn:eol-style set to native
File size: 2.5 KB
RevLine 
[9601]1#include <gtest/gtest.h>
2#include "core/CoreIncludes.h"
3#include "core/class/Identifiable.h"
4#include "core/class/SubclassIdentifier.h"
5#include "core/class/OrxonoxClass.h"
[10403]6#include "core/module/ModuleInstance.h"
[9601]7
8namespace orxonox
9{
10    namespace
11    {
12        class TestClass : public OrxonoxClass
13        {
14            public:
[9659]15                TestClass(Context* context = NULL) { RegisterObject(TestClass); }
[9601]16        };
17
18        class TestSubclass : public TestClass
19        {
20            public:
[9629]21                TestSubclass(Context* context = NULL) { RegisterObject(TestSubclass); }
[9601]22        };
23
[10400]24        RegisterClass(TestClass);
25        RegisterClass(TestSubclass);
26
[9647]27        // Fixture
28        class SubclassIdentifierTest : public ::testing::Test
29        {
30            public:
31                virtual void SetUp()
32                {
[10530]33                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
[10403]34                    Identifier::initConfigValues_s = false; // TODO: hack!
35                    IdentifierManager::getInstance().createClassHierarchy();
36
[9649]37                    Context::setRootContext(new Context(NULL));
[9647]38                }
39
40                virtual void TearDown()
41                {
[9649]42                    Context::setRootContext(NULL);
[10403]43
44                    IdentifierManager::getInstance().destroyClassHierarchy();
[10530]45                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
[9647]46                }
47        };
[9601]48    }
49
[9647]50    TEST_F(SubclassIdentifierTest, CanCreateIdentifier)
[9601]51    {
52        TestSubclass test;
53
54        SubclassIdentifier<TestClass> subclassIdentifier;
55    }
56
[9647]57    TEST_F(SubclassIdentifierTest, DefaultsToNormalIdentifier)
[9601]58    {
59        TestSubclass test;
60
61        SubclassIdentifier<TestClass> subclassIdentifier;
62        EXPECT_EQ(Class(TestClass), subclassIdentifier.getIdentifier());
63    }
64
[9647]65    TEST_F(SubclassIdentifierTest, CanAssignIdentifierOfSubclass)
[9601]66    {
67        TestSubclass test;
68        SubclassIdentifier<TestClass> subclassIdentifier;
69        subclassIdentifier = Class(TestSubclass);
70        EXPECT_EQ(Class(TestSubclass), subclassIdentifier.getIdentifier());
71    }
72
[9647]73    TEST_F(SubclassIdentifierTest, CanCreateSubclass)
[9601]74    {
75        TestSubclass test;
76        SubclassIdentifier<TestClass> subclassIdentifier;
77        subclassIdentifier = Class(TestSubclass);
78
79        TestClass* instance = subclassIdentifier.fabricate(NULL);
80        ASSERT_TRUE(instance != NULL);
81        EXPECT_EQ(Class(TestSubclass), instance->getIdentifier());
82        delete instance;
83    }
84}
Note: See TracBrowser for help on using the repository browser.