From 105c6082983a0c9dc4f1379fbcee3bcacc830472 Mon Sep 17 00:00:00 2001 From: Benjamin Paassen Date: Wed, 4 Mar 2015 14:48:23 +0100 Subject: massively reworked demo html output. --- test/core/model/DocumentTest.cpp | 8 +++--- test/core/model/TestAdvanced.hpp | 25 +++++++++-------- test/plugins/html/DemoOutputTest.cpp | 52 ++++++++++++++++++++++++++++++++++-- 3 files changed, 69 insertions(+), 16 deletions(-) (limited to 'test') diff --git a/test/core/model/DocumentTest.cpp b/test/core/model/DocumentTest.cpp index 8ae9475..135ba19 100644 --- a/test/core/model/DocumentTest.cpp +++ b/test/core/model/DocumentTest.cpp @@ -249,7 +249,8 @@ TEST(Document, construct) TEST(Document, validate) { // Let's start with a trivial ontology and a trivial document. - TerminalLogger logger{std::cerr, true}; +// TerminalLogger logger{std::cerr, true}; + Logger logger; Manager mgr{1}; Rooted sys{new SystemTypesystem(mgr)}; Rooted ontology{new Ontology(mgr, sys, "trivial")}; @@ -403,7 +404,7 @@ TEST(Document, validate) new AnnotationClass(mgr, "anno", ontology)}; { /* - * Create a valid document in itself. + * Create a document with anchors. */ Rooted doc{new Document(mgr, "myDoc.oxd")}; doc->referenceOntology(ontology); @@ -416,7 +417,8 @@ TEST(Document, validate) new DocumentPrimitive(mgr, child, {2}, "int")}; Rooted end{new Anchor(mgr, root)}; ASSERT_EQ(ValidationState::UNKNOWN, doc->getValidationState()); - ASSERT_TRUE(doc->validate(logger)); + // This should be invalid due to disconnected Anchors + ASSERT_FALSE(doc->validate(logger)); // then add an AnnotationEntity without Anchors. Rooted anno = buildAnnotationEntity(doc, logger, {"anno"}, nullptr, nullptr); diff --git a/test/core/model/TestAdvanced.hpp b/test/core/model/TestAdvanced.hpp index c92effa..58eb965 100644 --- a/test/core/model/TestAdvanced.hpp +++ b/test/core/model/TestAdvanced.hpp @@ -45,9 +45,9 @@ static Rooted resolveDescriptor(Handle ontology, * This constructs the "heading" ontology given the book ontology. */ static Rooted constructHeadingOntology(Manager &mgr, - Handle sys, - Handle bookOntology, - Logger &logger) + Handle sys, + Handle bookOntology, + Logger &logger) { // set up ontology node. Rooted ontology{new Ontology(mgr, sys, "headings")}; @@ -78,9 +78,9 @@ static Rooted constructHeadingOntology(Manager &mgr, * This constructs the "list" ontology given the book ontology. */ static Rooted constructListOntology(Manager &mgr, - Handle sys, - Handle bookOntology, - Logger &logger) + Handle sys, + Handle bookOntology, + Logger &logger) { // set up ontology node. Rooted ontology{new Ontology(mgr, sys, "list")}; @@ -97,7 +97,8 @@ static Rooted constructListOntology(Manager &mgr, for (auto &listType : listTypes) { Rooted list{new StructuredClass( mgr, listType, ontology, Cardinality::any(), p, false)}; - Rooted list_field{new FieldDescriptor(mgr, list)}; + Rooted list_field = + list->createFieldDescriptor(logger).first; list_field->addChild(item); } return ontology; @@ -107,15 +108,17 @@ static Rooted constructListOntology(Manager &mgr, * This constructs the "emphasis" ontology. */ static Rooted constructEmphasisOntology(Manager &mgr, - Handle sys, - Logger &logger) + Handle sys, + Logger &logger) { // set up ontology node. Rooted ontology{new Ontology(mgr, sys, "emphasis")}; // create AnnotationClasses - Rooted em{new AnnotationClass(mgr, "emphasized", ontology)}; + Rooted em{ + new AnnotationClass(mgr, "emphasized", ontology)}; - Rooted strong{new AnnotationClass(mgr, "strong", ontology)}; + Rooted strong{ + new AnnotationClass(mgr, "strong", ontology)}; return ontology; } diff --git a/test/plugins/html/DemoOutputTest.cpp b/test/plugins/html/DemoOutputTest.cpp index debb667..1c54a14 100644 --- a/test/plugins/html/DemoOutputTest.cpp +++ b/test/plugins/html/DemoOutputTest.cpp @@ -24,10 +24,13 @@ #include #include +#include #include #include #include +#include +#include #include #include @@ -59,7 +62,7 @@ TEST(DemoHTMLTransformer, writeHTML) // we can only do a rough check here. DemoHTMLTransformer transformer; std::stringstream out; - transformer.writeHTML(doc, out); + transformer.writeHTML(doc, out, logger); const std::string res = out.str(); ASSERT_FALSE(res == ""); ASSERT_TRUE(res.find("Was ist Aufklärung?") != std::string::npos); @@ -106,12 +109,57 @@ TEST(DemoHTMLTransformer, AnnotationProcessing) // Check serialization. DemoHTMLTransformer transformer; std::stringstream out; - transformer.writeHTML(doc, out, false); + transformer.writeHTML(doc, out, logger, false); const std::string res = out.str(); // In HTML the overlapping structure must be serialized as follows: ASSERT_TRUE( res.find("blablubbla") != std::string::npos); } + +struct XmlStandaloneEnvironment : public StandaloneEnvironment { + OsxmlParser parser; + FileLocator fileLocator; + + XmlStandaloneEnvironment(ConcreteLogger &logger) + : StandaloneEnvironment(logger) + { + fileLocator.addDefaultSearchPaths(); + fileLocator.addUnittestSearchPath("osxmlparser"); + + registry.registerDefaultExtensions(); + registry.registerParser({"text/vnd.ousia.osml+xml"}, + {&RttiTypes::Node}, &parser); + registry.registerResourceLocator(&fileLocator); + } +}; + +TEST(DemoHTMLTransformer, pipelineTest) +{ + // Construct Manager + TerminalLogger logger{std::cerr, true}; + XmlStandaloneEnvironment env(logger); + Rooted book_document_node = + env.parse("complex_book.osxml", "", "", RttiSet{&RttiTypes::Document}); + ASSERT_FALSE(logger.hasError()); + ASSERT_FALSE(book_document_node == nullptr); + ASSERT_TRUE(book_document_node->isa(&RttiTypes::Document)); + Rooted doc = book_document_node.cast(); + ASSERT_TRUE(doc->validate(logger)); + ASSERT_FALSE(logger.hasError()); + + // we can only do a rough check here. + DemoHTMLTransformer transformer; + std::stringstream out; + transformer.writeHTML(doc, out, logger); + const std::string res = out.str(); + ASSERT_FALSE(res == ""); + ASSERT_TRUE(res.find("Was ist Aufklärung?") != std::string::npos); + ASSERT_TRUE(res.find( + "Aufklärung ist der Ausgang des Menschen aus seiner " + "selbstverschuldeten Unmündigkeit") != std::string::npos); + ASSERT_TRUE(res.find("Sapere aude!") != std::string::npos); +} + } } -- cgit v1.2.3