@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);
 }