summaryrefslogtreecommitdiff
path: root/test/core
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-12 22:36:38 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-12 22:36:38 +0100
commit3ed124aeed2cb65b05f61224115366601ee3b05f (patch)
treeac25a6f524d6361d64b69926238623b972cea0fa /test/core
parent37a691eb6a5ed31dfc28e15db9d076322ab5fdde (diff)
added Descriptor::getPermittedChildren.
Diffstat (limited to 'test/core')
-rw-r--r--test/core/model/DomainTest.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/core/model/DomainTest.cpp b/test/core/model/DomainTest.cpp
index 83f290f..8fcbdf2 100644
--- a/test/core/model/DomainTest.cpp
+++ b/test/core/model/DomainTest.cpp
@@ -301,6 +301,43 @@ TEST(Descriptor, getDefaultFields)
ASSERT_EQ(F_field, fields[1]);
}
+TEST(Descriptor, getPermittedChildren)
+{
+ // analyze the book domain.
+ TerminalLogger logger{std::cout};
+ Manager mgr{1};
+ Rooted<SystemTypesystem> sys{new SystemTypesystem(mgr)};
+ // Get the domain.
+ Rooted<Domain> domain = constructBookDomain(mgr, sys, logger);
+ // get the relevant classes.
+ Rooted<StructuredClass> book = getClass("book", domain);
+ Rooted<StructuredClass> section = getClass("section", domain);
+ Rooted<StructuredClass> paragraph = getClass("paragraph", domain);
+ Rooted<StructuredClass> text = getClass("text", domain);
+ /*
+ * as permitted children we expect section, paragraph and text in exactly
+ * that order. section should be before paragraph because of declaration
+ * order and text should be last because it needs a transparent paragraph
+ * in between.
+ */
+ NodeVector<StructuredClass> children = book->getPermittedChildren();
+ ASSERT_EQ(3, children.size());
+ ASSERT_EQ(section, children[0]);
+ ASSERT_EQ(paragraph, children[1]);
+ ASSERT_EQ(text, children[2]);
+
+ // Now we add a subclass to text.
+ Rooted<StructuredClass> sub{new StructuredClass(
+ mgr, "Subclass", domain, Cardinality::any(), text, true, false)};
+ // And that should be in the result list as well now.
+ children = book->getPermittedChildren();
+ ASSERT_EQ(4, children.size());
+ ASSERT_EQ(section, children[0]);
+ ASSERT_EQ(paragraph, children[1]);
+ ASSERT_EQ(text, children[2]);
+ ASSERT_EQ(sub, children[3]);
+}
+
TEST(StructuredClass, isSubclassOf)
{
// create an inheritance hierarchy.