1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package test.net.sourceforge.pmd.symboltable;
5
6 import net.sourceforge.pmd.PMD;
7 import net.sourceforge.pmd.ast.ASTMethodDeclaration;
8 import net.sourceforge.pmd.ast.SimpleNode;
9 import net.sourceforge.pmd.ast.ASTEqualityExpression;
10 import net.sourceforge.pmd.ast.ASTBlock;
11 import net.sourceforge.pmd.ast.ASTCatchStatement;
12 import net.sourceforge.pmd.ast.ASTInitializer;
13 import net.sourceforge.pmd.symboltable.Scope;
14 import net.sourceforge.pmd.symboltable.VariableNameDeclaration;
15
16 import java.util.Iterator;
17 import java.util.Map;
18 import java.util.List;
19
20 public class AcceptanceTest extends STBBaseTst {
21
22 public void testClashingSymbols() {
23 parseCode(TEST1);
24 }
25
26 public void testInitializer() {
27 parseCode(TEST_INITIALIZERS);
28 ASTInitializer a = (ASTInitializer)(acu.findChildrenOfType(ASTInitializer.class)).get(0);
29 assertFalse(a.isStatic());
30 a = (ASTInitializer)(acu.findChildrenOfType(ASTInitializer.class)).get(1);
31 assertTrue(a.isStatic());
32 }
33
34 public void testCatchBlocks() {
35 parseCode(TEST_CATCH_BLOCKS);
36 ASTCatchStatement c = (ASTCatchStatement)(acu.findChildrenOfType(ASTCatchStatement.class)).get(0);
37 ASTBlock a = (ASTBlock)(c.findChildrenOfType(ASTBlock.class)).get(0);
38 Scope s = a.getScope();
39 Map vars = s.getParent().getVariableDeclarations();
40 assertEquals(1, vars.size());
41 VariableNameDeclaration v = (VariableNameDeclaration)vars.keySet().iterator().next();
42 assertEquals("e", v.getImage());
43 assertEquals(1, ((List)vars.get(v)).size());
44 }
45
46 public void testEq() {
47 parseCode(TEST_EQ);
48 ASTEqualityExpression e = (ASTEqualityExpression)(acu.findChildrenOfType(ASTEqualityExpression.class)).get(0);
49 ASTMethodDeclaration method = (ASTMethodDeclaration)e.getFirstParentOfType(ASTMethodDeclaration.class);
50 Scope s = method.getScope();
51 Map m = s.getVariableDeclarations();
52 for (Iterator i = m.keySet().iterator(); i.hasNext();) {
53 VariableNameDeclaration vnd = (VariableNameDeclaration)i.next();
54 SimpleNode node = vnd.getNode();
55
56 }
57
58 }
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 private static final String TEST_DEMO =
83 "public class Foo {" + PMD.EOL +
84 " void bar(ArrayList buz) { " + PMD.EOL +
85 " } " + PMD.EOL +
86 "}" + PMD.EOL;
87
88 private static final String TEST_EQ =
89 "public class Foo {" + PMD.EOL +
90 " boolean foo(String a, String b) { " + PMD.EOL +
91 " return a == b; " + PMD.EOL +
92 " } " + PMD.EOL +
93 "}" + PMD.EOL;
94
95 private static final String TEST1 =
96 "import java.io.*;" + PMD.EOL +
97 "public class Foo {" + PMD.EOL +
98 " void buz( ) {" + PMD.EOL +
99 " Object o = new Serializable() { int x; };" + PMD.EOL +
100 " Object o1 = new Serializable() { int x; };" + PMD.EOL +
101 " }" + PMD.EOL +
102 "}" + PMD.EOL;
103
104 private static final String TEST_INITIALIZERS =
105 "public class Foo {" + PMD.EOL +
106 " {} " + PMD.EOL +
107 " static {} " + PMD.EOL +
108 "}" + PMD.EOL;
109
110 private static final String TEST_CATCH_BLOCKS =
111 "public class Foo {" + PMD.EOL +
112 " void foo() { " + PMD.EOL +
113 " try { " + PMD.EOL +
114 " } catch (Exception e) { " + PMD.EOL +
115 " e.printStackTrace(); " + PMD.EOL +
116 " } " + PMD.EOL +
117 " } " + PMD.EOL +
118 "}" + PMD.EOL;
119
120
121 }