diff options
Diffstat (limited to 'test/plugins/html/DemoOutputTest.cpp')
-rw-r--r-- | test/plugins/html/DemoOutputTest.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/plugins/html/DemoOutputTest.cpp b/test/plugins/html/DemoOutputTest.cpp index 4ab2c53..5a34112 100644 --- a/test/plugins/html/DemoOutputTest.cpp +++ b/test/plugins/html/DemoOutputTest.cpp @@ -49,6 +49,7 @@ TEST(DemoHTMLTransformer, writeHTML) // Construct the document. Rooted<model::Document> doc = model::constructAdvancedDocument( mgr, logger, bookDom, headingDom, listDom, emDom); + ASSERT_TRUE(doc != nullptr); #ifdef MANAGER_GRAPHVIZ_EXPORT // dump the manager state @@ -59,5 +60,49 @@ TEST(DemoHTMLTransformer, writeHTML) DemoHTMLTransformer transformer; transformer.writeHTML(doc, std::cout); } + +TEST(DemoHTMLTransformer, AnnotationProcessing) +{ + // Construct Manager + TerminalLogger logger{std::cerr, true}; + Manager mgr{1}; + Rooted<model::SystemTypesystem> sys{new model::SystemTypesystem(mgr)}; + // Get the domains. + Rooted<model::Domain> bookDom = + model::constructBookDomain(mgr, sys, logger); + Rooted<model::Domain> emDom = + model::constructEmphasisDomain(mgr, sys, logger); + // Construct a document only containing overlapping annotations. + // it has the form: <em>bla<strong>blub</em>bla</strong> + Rooted<model::Document> doc{new model::Document(mgr, "annotations.oxd")}; + doc->addDomains({bookDom, emDom}); + Rooted<model::StructuredEntity> book = + buildRootStructuredEntity(doc, logger, {"book"}); + ASSERT_TRUE(book != nullptr); + Rooted<model::StructuredEntity> p = + buildStructuredEntity(doc, logger, book, {"paragraph"}); + ASSERT_TRUE(p != nullptr); + Rooted<model::AnnotationEntity::Anchor> em_start = + buildAnchor(logger, p, "1"); + ASSERT_TRUE(em_start != nullptr); + ASSERT_TRUE(addText(logger, doc, p, "bla")); + Rooted<model::AnnotationEntity::Anchor> strong_start = + buildAnchor(logger, p, "2"); + ASSERT_TRUE(strong_start != nullptr); + ASSERT_TRUE(addText(logger, doc, p, "blub")); + Rooted<model::AnnotationEntity::Anchor> em_end = + buildAnchor(logger, p, "3"); + ASSERT_TRUE(em_end != nullptr); + ASSERT_TRUE(addText(logger, doc, p, "bla")); + Rooted<model::AnnotationEntity::Anchor> strong_end = + buildAnchor(logger, p, "4"); + ASSERT_TRUE(strong_end != nullptr); + buildAnnotationEntity(doc, logger, {"emphasized"}, em_start, em_end); + buildAnnotationEntity(doc, logger, {"strong"}, strong_start, strong_end); + + // TODO: change this. Don't use printouts + DemoHTMLTransformer transformer; + transformer.writeHTML(doc, std::cout); +} } } |