blob: 61a86e2839c2dc686357abbdf3ddcea6378cb7dc [file] [log] [blame]
package org.codehaus.groovy.antlr.treewalker;
import junit.framework.TestCase;
import org.custommonkey.xmlunit.XMLUnit;
/**
* Testcases for the antlr AST visitor that prints groovy source code nodes as Pseudo XML.
*/
public class NodePrinterTest extends TestCase {
protected void setUp() throws Exception {
XMLUnit.setIgnoreWhitespace(true);
}
public void testAbstract() throws Exception {
assertPseudoXmlEquals("<MODIFIERS><\"public\"></\"public\"></MODIFIERS><\"abstract\"></\"abstract\"><CLASS_DEF></CLASS_DEF><an identifier></an identifier><EXTENDS_CLAUSE></EXTENDS_CLAUSE><IMPLEMENTS_CLAUSE></IMPLEMENTS_CLAUSE><OBJBLOCK></OBJBLOCK>",
nodify("public abstract class Foo{}"));
}
public void testArrayDeclarator() throws Exception {
assertPseudoXmlEquals(
"<VARIABLE_DEF><TYPE><ARRAY_DECLARATOR><\"int\"></\"int\"></ARRAY_DECLARATOR></TYPE><an identifier></an identifier><'='><\"new\"><\"int\"></\"int\"></\"new\"><ARRAY_DECLARATOR><a numeric literal></a numeric literal></ARRAY_DECLARATOR></\"new\"></'='></VARIABLE_DEF>",
nodify("int[] primes = new int[5]"));
}
public void testRegexMatch() throws Exception {
assertPseudoXmlEquals(
"<\"if\"><an identifier></an identifier><'==~'></'==~'><a string literal></a string literal></\"if\"><SLIST></SLIST>",
nodify("if (foo==~\"bar\"){}"));
}
private void assertPseudoXmlEquals(String expected, String actual) throws Exception {
assertEquals(expected, actual);
}
private String nodify(String input) throws Exception {
TraversalTestHelper traverser = new TraversalTestHelper();
return traverser.traverse(input, NodePrinter.class);
}
}