summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-17 18:45:19 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-17 18:45:19 +0100
commitbf5f5e97d7bb40fd8da4b45dde9aa1bb23105af4 (patch)
tree3629cb92b35589beac4b9185cab7bbb5a80d24ba
parent2662f67a6c3cf74bbefff26abeac2c67ee02a57c (diff)
Added test for bug #79
-rw-r--r--test/formats/osml/OsmlParserTest.cpp15
-rw-r--r--testdata/osmlparser/rollback_on_invalid_element.osml18
2 files changed, 33 insertions, 0 deletions
diff --git a/test/formats/osml/OsmlParserTest.cpp b/test/formats/osml/OsmlParserTest.cpp
index a97573b..d12721e 100644
--- a/test/formats/osml/OsmlParserTest.cpp
+++ b/test/formats/osml/OsmlParserTest.cpp
@@ -91,6 +91,21 @@ TEST(OsmlParser, emptyTypesystem)
ASSERT_TRUE(node->isa(&RttiTypes::Typesystem));
ASSERT_EQ("testTypesystem", node->getName());
}
+
+TEST(OsmlParser, rollbackOnInvalidElement)
+{
+ OsmlStandaloneEnvironment env(logger);
+ logger.reset();
+
+ ASSERT_FALSE(logger.hasError());
+ Rooted<Node> node =
+ env.parse("rollback_on_invalid_element.osml", "", "", RttiSet{&RttiTypes::Node});
+ ASSERT_TRUE(logger.hasError());
+
+ ASSERT_TRUE(node != nullptr);
+ ASSERT_TRUE(node->isa(&RttiTypes::Document));
+}
+
TEST(OsmlParser, inlineDomain)
{
OsmlStandaloneEnvironment env(logger);
diff --git a/testdata/osmlparser/rollback_on_invalid_element.osml b/testdata/osmlparser/rollback_on_invalid_element.osml
new file mode 100644
index 0000000..671c76d
--- /dev/null
+++ b/testdata/osmlparser/rollback_on_invalid_element.osml
@@ -0,0 +1,18 @@
+\begin{document}
+
+\domain#testDomain
+ \struct#test[isRoot=true]
+ \field
+ \childRef[ref=a]
+ \struct#a
+ \field
+ \childRef[ref=b]
+ \struct#b
+ \primitive[type=string,optional=true]
+
+\begin{test}
+\a{!}
+\b
+\a
+\end{test}
+\end{document}