summaryrefslogtreecommitdiff
path: root/test/core
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-04 22:21:52 +0100
committerAndreas Stöckel <andreas@somweyr.de>2015-01-04 22:21:52 +0100
commit0d671f899da720ff5035bdab7adf6b11cbf80cb1 (patch)
tree9839d502ff323198d0f9cb479e9809a978c5c550 /test/core
parent7e1c72a5a5d5dc890a49f79c5daec3edcb38a33b (diff)
parent319ad738f677a20403cc27192f1df7bb65ce8c0e (diff)
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'test/core')
-rw-r--r--test/core/model/DocumentTest.cpp62
-rw-r--r--test/core/model/TestDocument.hpp26
-rw-r--r--test/core/model/TestDomain.hpp15
3 files changed, 91 insertions, 12 deletions
diff --git a/test/core/model/DocumentTest.cpp b/test/core/model/DocumentTest.cpp
index 9e3229c..a671d2c 100644
--- a/test/core/model/DocumentTest.cpp
+++ b/test/core/model/DocumentTest.cpp
@@ -37,8 +37,68 @@ TEST(Document, testDocumentConstruction)
// Construct the document.
Rooted<Document> doc = constructBookDocument(mgr, domain);
- // If that works we are happy already.
+ // Check the document content.
ASSERT_FALSE(doc.isNull());
+ // get root node.
+ Rooted<StructuredEntity> root = doc->getRoot();
+ ASSERT_FALSE(root.isNull());
+ ASSERT_EQ("book", root->getDescriptor()->getName());
+ ASSERT_TRUE(root->hasField());
+ ASSERT_EQ(2, root->getField().size());
+ // get foreword (paragraph)
+ {
+ Rooted<StructuredEntity> foreword = root->getField()[0];
+ ASSERT_FALSE(foreword.isNull());
+ ASSERT_EQ("paragraph", foreword->getDescriptor()->getName());
+ // it should contain one text node
+ ASSERT_TRUE(foreword->hasField());
+ ASSERT_EQ(1, foreword->getField().size());
+ // which in turn should have a primitive content field containing the
+ // right text.
+ {
+ Rooted<StructuredEntity> text = foreword->getField()[0];
+ ASSERT_FALSE(text.isNull());
+ ASSERT_EQ("text", text->getDescriptor()->getName());
+ ASSERT_TRUE(text->hasField());
+ ASSERT_EQ(1, text->getField().size());
+ ASSERT_TRUE(text->getField()[0]->isa(typeOf<DocumentPrimitive>()));
+ Variant content =
+ text->getField()[0].cast<DocumentPrimitive>()->getContent();
+ ASSERT_EQ("Some introductory text", content.asString());
+ }
+ }
+ // get section
+ {
+ Rooted<StructuredEntity> section = root->getField()[1];
+ ASSERT_FALSE(section.isNull());
+ ASSERT_EQ("section", section->getDescriptor()->getName());
+ // it should contain one paragraph
+ ASSERT_TRUE(section->hasField());
+ ASSERT_EQ(1, section->getField().size());
+ {
+ Rooted<StructuredEntity> par = section->getField()[0];
+ ASSERT_FALSE(par.isNull());
+ ASSERT_EQ("paragraph", par->getDescriptor()->getName());
+ // it should contain one text node
+ ASSERT_TRUE(par->hasField());
+ ASSERT_EQ(1, par->getField().size());
+ // which in turn should have a primitive content field containing
+ // the
+ // right text.
+ {
+ Rooted<StructuredEntity> text = par->getField()[0];
+ ASSERT_FALSE(text.isNull());
+ ASSERT_EQ("text", text->getDescriptor()->getName());
+ ASSERT_TRUE(text->hasField());
+ ASSERT_EQ(1, text->getField().size());
+ ASSERT_TRUE(
+ text->getField()[0]->isa(typeOf<DocumentPrimitive>()));
+ Variant content =
+ text->getField()[0].cast<DocumentPrimitive>()->getContent();
+ ASSERT_EQ("Some actual text", content.asString());
+ }
+ }
+ }
}
}
}
diff --git a/test/core/model/TestDocument.hpp b/test/core/model/TestDocument.hpp
index a1a3434..6b0267a 100644
--- a/test/core/model/TestDocument.hpp
+++ b/test/core/model/TestDocument.hpp
@@ -50,13 +50,18 @@ static Rooted<Document> constructBookDocument(Manager &mgr,
return {nullptr};
}
// Add its text.
- Variant text{std::map<std::string, Variant>{
- {"content", Variant("Some introductory text")}}};
- Rooted<DocumentPrimitive> foreword_text =
- DocumentPrimitive::buildEntity(foreword, text, "text");
+ Rooted<StructuredEntity> foreword_text =
+ StructuredEntity::buildEntity(foreword, {bookDomain}, "text");
if (foreword_text.isNull()) {
return {nullptr};
}
+ // And its primitive content
+ Variant text{"Some introductory text"};
+ Rooted<DocumentPrimitive> foreword_primitive =
+ DocumentPrimitive::buildEntity(foreword_text, text, "content");
+ if (foreword_primitive.isNull()) {
+ return {nullptr};
+ }
// Add a section.
Rooted<StructuredEntity> section =
StructuredEntity::buildEntity(root, {bookDomain}, "section");
@@ -67,13 +72,18 @@ static Rooted<Document> constructBookDocument(Manager &mgr,
return {nullptr};
}
// Add its text.
- text = Variant{std::map<std::string, Variant>{
- {"content", Variant("Some introductory text")}}};
- Rooted<DocumentPrimitive> main_text =
- DocumentPrimitive::buildEntity(foreword, text, "text");
+ Rooted<StructuredEntity> main_text =
+ StructuredEntity::buildEntity(main, {bookDomain}, "text");
if (main_text.isNull()) {
return {nullptr};
}
+ // And its primitive content
+ text = Variant{"Some actual text"};
+ Rooted<DocumentPrimitive> main_primitive =
+ DocumentPrimitive::buildEntity(main_text, text, "content");
+ if (main_primitive.isNull()) {
+ return {nullptr};
+ }
return doc;
}
diff --git a/test/core/model/TestDomain.hpp b/test/core/model/TestDomain.hpp
index d55bff7..f457531 100644
--- a/test/core/model/TestDomain.hpp
+++ b/test/core/model/TestDomain.hpp
@@ -81,11 +81,20 @@ static Rooted<Domain> constructBookDomain(Manager &mgr, Logger &logger)
section_field->getChildren().push_back(paragraph);
book_field->getChildren().push_back(paragraph);
domain->getStructureClasses().push_back(paragraph);
+ // And the field of it.
+ Rooted<FieldDescriptor> paragraph_field{new FieldDescriptor(mgr, paragraph)};
+ paragraph->getFieldDescriptors().push_back(paragraph_field);
+
+ // Finally we add the "text" node, which is transparent as well.
+ Rooted<StructuredClass> text{new StructuredClass(
+ mgr, "text", domain, any, {nullptr}, {nullptr}, true)};
+ paragraph_field->getChildren().push_back(text);
+ domain->getStructureClasses().push_back(text);
// ... and has a primitive field.
- Rooted<FieldDescriptor> paragraph_field{new FieldDescriptor(
- mgr, paragraph, domain->getTypesystems()[0]->getTypes()[1], "text",
+ Rooted<FieldDescriptor> text_field{new FieldDescriptor(
+ mgr, text, domain->getTypesystems()[0]->getTypes()[0], "content",
false)};
- paragraph->getFieldDescriptors().push_back(paragraph_field);
+ text->getFieldDescriptors().push_back(text_field);
return domain;
}