summaryrefslogtreecommitdiff
path: root/test
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
parent7e1c72a5a5d5dc890a49f79c5daec3edcb38a33b (diff)
parent319ad738f677a20403cc27192f1df7bb65ce8c0e (diff)
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'test')
-rw-r--r--test/core/model/DocumentTest.cpp62
-rw-r--r--test/core/model/TestDocument.hpp26
-rw-r--r--test/core/model/TestDomain.hpp15
-rw-r--r--test/plugins/html/DemoOutputTest.cpp49
4 files changed, 140 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;
}
diff --git a/test/plugins/html/DemoOutputTest.cpp b/test/plugins/html/DemoOutputTest.cpp
new file mode 100644
index 0000000..b81a001
--- /dev/null
+++ b/test/plugins/html/DemoOutputTest.cpp
@@ -0,0 +1,49 @@
+/*
+ Ousía
+ Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <gtest/gtest.h>
+
+#include <iostream>
+
+#include <plugins/html/DemoOutput.hpp>
+
+#include <core/model/Document.hpp>
+#include <core/model/Domain.hpp>
+
+#include <core/model/TestDocument.hpp>
+#include <core/model/TestDomain.hpp>
+
+namespace ousia {
+namespace html {
+
+TEST(DemoHTMLTransformer, writeHTML)
+{
+ // Construct Manager
+ Logger logger;
+ Manager mgr{1};
+ // Get the domain.
+ Rooted<model::Domain> domain = model::constructBookDomain(mgr, logger);
+ // Construct the document.
+ Rooted<model::Document> doc = model::constructBookDocument(mgr, domain);
+
+ // print it
+ DemoHTMLTransformer transformer;
+ transformer.writeHTML(doc, std::cout);
+}
+}
+}