summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/html/DemoOutput.cpp3
-rw-r--r--test/core/XMLTest.cpp2
-rw-r--r--test/plugins/html/DemoOutputTest.cpp45
3 files changed, 48 insertions, 2 deletions
diff --git a/src/plugins/html/DemoOutput.cpp b/src/plugins/html/DemoOutput.cpp
index 296a493..69f2756 100644
--- a/src/plugins/html/DemoOutput.cpp
+++ b/src/plugins/html/DemoOutput.cpp
@@ -306,6 +306,7 @@ Rooted<xml::Element> DemoHTMLTransformer::transformParagraph(
*/
AnnoStack tmp;
Rooted<model::AnnotationEntity> closed = opened.top();
+ current = current->getParent();
opened.pop();
while (closed->getEnd()->getName() != n->getName()) {
/*
@@ -320,7 +321,7 @@ Rooted<xml::Element> DemoHTMLTransformer::transformParagraph(
throw OusiaException("An unopened entity was closed!");
}
closed = opened.top();
- opened.top();
+ opened.pop();
}
// At this point we have closed all necessary entities. Now we
// need to re-open some of them.
diff --git a/test/core/XMLTest.cpp b/test/core/XMLTest.cpp
index f7a0b4a..b11a24c 100644
--- a/test/core/XMLTest.cpp
+++ b/test/core/XMLTest.cpp
@@ -49,7 +49,7 @@ TEST(XMLNode, testSerialize)
// Now this is what we expect to see:
std::string expected{
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<?xml version=\"1.0\"?>\n"
"<html>\n"
"\t<head>\n"
"\t\t<title>\n"
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);
+}
}
}