From bf5f5e97d7bb40fd8da4b45dde9aa1bb23105af4 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Tue, 17 Feb 2015 18:45:19 +0100 Subject: Added test for bug #79 --- test/formats/osml/OsmlParserTest.cpp | 15 +++++++++++++++ testdata/osmlparser/rollback_on_invalid_element.osml | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 testdata/osmlparser/rollback_on_invalid_element.osml 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 = + 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} -- cgit v1.2.3