#include #include "core/object/Context.h" #include "core/class/OrxonoxClass.h" #include "core/CoreIncludes.h" #include "core/module/ModuleInstance.h" namespace orxonox { namespace { class SubclassContext : public OrxonoxClass, public Context { public: SubclassContext() : Context(NULL) { RegisterObject(SubclassContext); } }; RegisterClassNoArgs(SubclassContext); // Fixture class ContextTest : public ::testing::Test { public: virtual void SetUp() { new IdentifierManager(); ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER); Context::setRootContext(new Context(NULL)); } virtual void TearDown() { Context::destroyRootContext(); ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER); delete &IdentifierManager::getInstance(); } }; } TEST_F(ContextTest, CanCreateContext) { Context context(NULL); } TEST_F(ContextTest, CanCreateSubclassContext) { SubclassContext context; } TEST_F(ContextTest, ContextIsItsOwnContext) { Context context(NULL); EXPECT_EQ(&context, context.getContext()); } TEST_F(ContextTest, SubclassContextIsItsOwnContext) { SubclassContext context; EXPECT_EQ(&context, context.getContext()); } TEST_F(ContextTest, SubclassAddsToItsOwnObjectList) { SubclassContext context; EXPECT_EQ(&context, context.getContext()); EXPECT_EQ(1u, context.getObjectList()->size()); } TEST_F(ContextTest, ContextIsAddedToItsOwnObjectList) { Context context(NULL); ASSERT_EQ(1u, context.getObjectList()->size()); EXPECT_TRUE(context.getObjectList()->begin()->objectBase_ == static_cast(&context)); } TEST_F(ContextTest, ContextIsAddedToObjectListOfBaseContext) { Context baseContext(NULL); Context subContext(&baseContext); ASSERT_EQ(1u, subContext.getObjectList()->size()); EXPECT_TRUE(subContext.getObjectList()->begin()->objectBase_ == static_cast(&subContext)); ASSERT_EQ(2u, baseContext.getObjectList()->size()); EXPECT_TRUE(baseContext.getObjectList()->begin()->objectBase_ == static_cast(&baseContext)); EXPECT_TRUE(baseContext.getObjectList()->begin()->next_->objectBase_ == static_cast(&subContext)); } }