I guess we need more AST nodes to make parsing of real world classes

work ;-)
This commit is contained in:
Robert Sösemann
2016-03-21 17:18:09 +01:00
parent 18da883596
commit 378c903e9c

View File

@ -7,11 +7,14 @@ package net.sourceforge.pmd.lang.apex.ast;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import net.sourceforge.pmd.lang.apex.ApexParserOptions;
@ -19,22 +22,41 @@ import net.sourceforge.pmd.lang.ast.Node;
public class ApexParserTest {
private String code1 = "public class HelloWorld { public void foo() {} private static int bar() { return 1; } }";
private String code2 = "public class SimpleClass {\n" +
" public void methodWithManyParams(String a, String b, String c, String d, String e, String f, String g) {\n" +
" \n" +
" }\n" +
"}";
@Test
public void testParse() {
ASTUserClass rootNode = parse(code1);
public void understandsSimpleFile() {
// Setup
String code = "public class SimpleClass {\n" +
" public void methodWithManyParams(String a, String b, String c, String d, String e, String f, String g) {\n" +
" \n" +
" }\n" +
"}";
// Exercise
ASTUserClass rootNode = parse(code);
dumpNode(rootNode);
// Verify
List<ASTMethod> methods = rootNode.findDescendantsOfType(ASTMethod.class);
assertEquals(5, methods.size());
}
@Test
public void parsesRealWorldClasses() {
try {
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("MetadataService.cls").getFile());
String sourceCode = FileUtils.readFileToString(file);
ASTUserClass rootNode = parse(sourceCode);
dumpNode(rootNode);
}
catch (IOException e) {
e.printStackTrace();
}
}
// TEST HELPER
private ASTUserClass parse(String code) {