@Test public void testCompactDump_1() throws Exception { String grammarString = "grammar foo.Bar with org.eclipse.xtext.common.Terminals generate foo 'bar' Model:name=ID;"; Grammar grammar = (Grammar) getModel(grammarString); String actual = NodeModelUtils.compactDump( NodeModelUtils.getNode(grammar.getMetamodelDeclarations().get(0)), true); String expected = "GeneratedMetamodel {\n" + " hidden WS returns EString: => ' '\n" + " 'generate' => 'generate'\n" + " name=ValidID {\n" + " hidden WS returns EString: => ' '\n" + " ID => 'foo'\n" + " }\n" + " hidden WS returns EString: => ' '\n" + " ePackage=[EPackage] => ''bar''\n" + "}"; assertEquals(expected.toString(), actual); }
@Test public void testFindNodesForFeature() throws Exception { Grammar grammar = (Grammar) getModel( "grammar foo.Bar with org.eclipse.xtext.common.Terminals generate foo 'bar' Model : name=ID;"); List<INode> nodes = NodeModelUtils.findNodesForFeature(grammar, XtextPackage.eINSTANCE.getGrammar_Name()); assertEquals(1, nodes.size()); assertEquals("foo.Bar", nodes.get(0).getText().trim()); nodes = NodeModelUtils.findNodesForFeature(grammar, XtextPackage.eINSTANCE.getGrammar_Rules()); assertEquals(1, nodes.size()); assertEquals("Model : name=ID;", nodes.get(0).getText().trim()); AbstractMetamodelDeclaration declaration = grammar.getMetamodelDeclarations().get(0); nodes = NodeModelUtils.findNodesForFeature( declaration, XtextPackage.eINSTANCE.getGeneratedMetamodel_Name()); assertEquals(1, nodes.size()); assertEquals("foo", nodes.get(0).getText().trim()); }
@Test public void testCompactDump_2() throws Exception { String grammarString = "grammar foo.Bar with org.eclipse.xtext.common.Terminals generate foo x 'bar' Model:name=ID;"; Grammar grammar = (Grammar) getModelAndExpect(getAsStream(grammarString), 1); String actual = NodeModelUtils.compactDump( NodeModelUtils.getNode(grammar.getMetamodelDeclarations().get(0)), true); String expected = "GeneratedMetamodel {\n" + " hidden WS returns EString: => ' '\n" + " 'generate' => 'generate'\n" + " name=ValidID {\n" + " hidden WS returns EString: => ' '\n" + " ID => 'foo'\n" + " }\n" + " hidden WS returns EString: => ' '\n" + " ID returns EString: => 'x' SyntaxError: [org.eclipse.xtext.diagnostics.Diagnostic.Syntax] extraneous input 'x' expecting RULE_STRING\n" + " hidden WS returns EString: => ' '\n" + " ePackage=[EPackage] => ''bar''\n" + "}"; assertEquals(expected, actual); }