From 378c903e9cd1798a7ca4ebd6cf26c6a2275bcd0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20So=CC=88semann?= Date: Mon, 21 Mar 2016 17:18:09 +0100 Subject: [PATCH] I guess we need more AST nodes to make parsing of real world classes work ;-) --- .../pmd/lang/apex/ast/ApexParserTest.java | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParserTest.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParserTest.java index 0b53b159fc..d2a8271ea6 100644 --- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParserTest.java +++ b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParserTest.java @@ -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 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) {