diff options
Diffstat (limited to 'test/formats')
| -rw-r--r-- | test/formats/osml/OsmlParserTest.cpp | 55 | 
1 files changed, 49 insertions, 6 deletions
diff --git a/test/formats/osml/OsmlParserTest.cpp b/test/formats/osml/OsmlParserTest.cpp index cc711b4..78ddf17 100644 --- a/test/formats/osml/OsmlParserTest.cpp +++ b/test/formats/osml/OsmlParserTest.cpp @@ -98,8 +98,8 @@ TEST(OsmlParser, rollbackOnInvalidElement)  	logger.reset();  	ASSERT_FALSE(logger.hasError()); -	Rooted<Node> node = -	    env.parse("rollback_on_invalid_element.osml", "", "", RttiSet{&RttiTypes::Node}); +	Rooted<Node> node = env.parse("rollback_on_invalid_element.osml", "", "", +	                              RttiSet{&RttiTypes::Node});  	ASSERT_TRUE(logger.hasError());  	ASSERT_TRUE(node != nullptr); @@ -191,8 +191,8 @@ TEST(OsmlParser, explicitFields)  	OsmlStandaloneEnvironment env(logger);  	logger.reset(); -	Rooted<Node> node = env.parse("explicit_fields.osml", "", "", -	                              RttiSet{&RttiTypes::Node}); +	Rooted<Node> node = +	    env.parse("explicit_fields.osml", "", "", RttiSet{&RttiTypes::Node});  	ASSERT_FALSE(logger.hasError());  	ASSERT_TRUE(node != nullptr); @@ -204,8 +204,8 @@ TEST(OsmlParser, simpleAnnotation)  	OsmlStandaloneEnvironment env(logger);  	logger.reset(); -	Rooted<Node> node = env.parse("simple_annotation.osml", "", "", -	                              RttiSet{&RttiTypes::Node}); +	Rooted<Node> node = +	    env.parse("simple_annotation.osml", "", "", RttiSet{&RttiTypes::Node});  	ASSERT_FALSE(logger.hasError());  	ASSERT_TRUE(node != nullptr); @@ -238,5 +238,48 @@ TEST(OsmlParser, errorAnnotationBoundaries)  	ASSERT_TRUE(node->isa(&RttiTypes::Document));  } +TEST(OsmlParser, syntaxDescription) +{ +	OsmlStandaloneEnvironment env(logger); +	logger.reset(); + +	Rooted<Node> node = +	    env.parse("syntax_description.osml", "", "", RttiSet{&RttiTypes::Node}); +	ASSERT_FALSE(logger.hasError()); + +	ASSERT_TRUE(node != nullptr); +	ASSERT_TRUE(node->isa(&RttiTypes::Ontology)); + +	Rooted<Ontology> ontology = node.cast<Ontology>(); +	auto nodes = ontology->resolve(&RttiTypes::StructuredClass, "b"); +	ASSERT_EQ(1U, nodes.size()); + +	Rooted<StructuredClass> structure = nodes[0].node.cast<StructuredClass>(); +	auto descrs = structure->getFieldDescriptors(); +	ASSERT_EQ(2U, descrs.size()); + +	ASSERT_EQ("f1", descrs[0]->getName()); +	ASSERT_EQ("f2", descrs[1]->getName()); + +	ASSERT_FALSE(descrs[0]->getOpenToken().special); +	ASSERT_EQ("=", descrs[0]->getOpenToken().token); + +	ASSERT_EQ(Tokens::Newline, descrs[0]->getCloseToken().id); +	ASSERT_TRUE(descrs[0]->getCloseToken().special); +	ASSERT_EQ("", descrs[0]->getCloseToken().token); + +	ASSERT_EQ(WhitespaceMode::PRESERVE, descrs[0]->getWhitespaceMode()); + +	ASSERT_FALSE(descrs[1]->getOpenToken().special); +	ASSERT_EQ("++", descrs[1]->getOpenToken().token); + +	ASSERT_FALSE(descrs[1]->getCloseToken().special); +	ASSERT_EQ("--", descrs[1]->getCloseToken().token); + +	ASSERT_EQ(WhitespaceMode::COLLAPSE, descrs[1]->getWhitespaceMode()); + +	ASSERT_FALSE(structure->getShortToken().special); +	ASSERT_EQ("~", structure->getShortToken().token); +}  }  | 
