"ID : [a-z]+ ;\n" +
"WS : [ \\r\\n\\t]+ -> skip ;\n";
String input = "x y z;";
String pattern = "<a:ID> <b:ID> <a:ID>;";
ParseTreeMatch m = checkPatternMatch(grammar, "s", input, pattern, "X7");
assertEquals("{ID=[x, y, z], a=[x, z], b=[y]}", m.getLabels().toString());
assertNotNull(m.get("a")); // get first
assertNotNull(m.get("b"));
assertNotNull(m.get("ID"));
assertEquals("z", m.get("a").getText());
assertEquals("y", m.get("b").getText());
assertEquals("z", m.get("ID").getText()); // get last
assertEquals("[x, z]", m.getAll("a").toString());
assertEquals("[y]", m.getAll("b").toString());
assertEquals("[x, y, z]", m.getAll("ID").toString()); // ordered
assertEquals("xyz;", m.getTree().getText()); // whitespace stripped by lexer
assertNull(m.get("undefined"));
assertEquals("[]", m.getAll("undefined").toString());
}