summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-17 15:59:13 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-17 15:59:13 +0100
commit7b6c47dca58a1aceb8fea2b66c3e0aa302ade67a (patch)
treef55d3fe440f9799ea7d1ebefd9ebf7b6bd82c09c /test
parent9eb32731b024d792b0aa212cbcd6bf07b8d6ccca (diff)
Added additional unit test for the setParentStructure function
Diffstat (limited to 'test')
-rw-r--r--test/core/model/TypesystemTest.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp
index 5871092..5a2efdd 100644
--- a/test/core/model/TypesystemTest.cpp
+++ b/test/core/model/TypesystemTest.cpp
@@ -611,6 +611,51 @@ TEST(StructType, createValidated)
}
}
+TEST(StructType, setParentStructure)
+{
+ Manager mgr;
+ Rooted<SystemTypesystem> sys{new SystemTypesystem(mgr)};
+ Rooted<StructType> sa{new StructType(mgr, "a", sys)};
+ Rooted<StructType> sb{new StructType(mgr, "b", sys)};
+ Rooted<StructType> sc{new StructType(mgr, "c", sys)};
+
+ sa->addAttribute(new Attribute{mgr, "a", sys->getBoolType()}, logger);
+ sb->addAttribute(new Attribute{mgr, "b", sys->getStringType()}, logger);
+ sc->addAttribute(new Attribute{mgr, "a", sys->getIntType()}, logger);
+ sc->addAttribute(new Attribute{mgr, "b", sys->getIntType()}, logger);
+
+ ASSERT_TRUE(sa->validate(logger));
+ ASSERT_TRUE(sb->validate(logger));
+ ASSERT_TRUE(sc->validate(logger));
+
+ logger.reset();
+ sb->setParentStructure(sa, logger);
+ ASSERT_EQ(2U, sb->getAttributes().size());
+ ASSERT_EQ("a", sb->getAttributes()[0]->getName());
+ ASSERT_EQ("b", sb->getAttributes()[1]->getName());
+ ASSERT_EQ(sys->getBoolType(), sb->getAttributes()[0]->getType());
+ ASSERT_EQ(sys->getStringType(), sb->getAttributes()[1]->getType());
+ ASSERT_FALSE(logger.hasError());
+
+ logger.reset();
+ sc->setParentStructure(sb, logger);
+ ASSERT_EQ(4U, sc->getAttributes().size());
+ ASSERT_EQ("a", sc->getAttributes()[0]->getName());
+ ASSERT_EQ("b", sc->getAttributes()[1]->getName());
+ ASSERT_EQ(sys->getBoolType(), sc->getAttributes()[0]->getType());
+ ASSERT_EQ(sys->getStringType(), sc->getAttributes()[1]->getType());
+ ASSERT_TRUE(logger.hasError());
+
+ logger.reset();
+ sc->setParentStructure(nullptr, logger);
+ ASSERT_EQ(2U, sc->getAttributes().size());
+ ASSERT_EQ("a", sc->getAttributes()[0]->getName());
+ ASSERT_EQ("b", sc->getAttributes()[1]->getName());
+ ASSERT_EQ(sys->getIntType(), sc->getAttributes()[0]->getType());
+ ASSERT_EQ(sys->getIntType(), sc->getAttributes()[1]->getType());
+ ASSERT_FALSE(logger.hasError());
+}
+
TEST(StructType, cast)
{
Manager mgr;