1
2
3
4 package net.sourceforge.pmd.symboltable;
5
6 import static org.junit.Assert.assertEquals;
7 import static org.junit.Assert.assertTrue;
8 import net.sourceforge.pmd.PMD;
9 import net.sourceforge.pmd.lang.java.ast.ASTFormalParameter;
10 import net.sourceforge.pmd.lang.java.ast.ASTTryStatement;
11 import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId;
12 import net.sourceforge.pmd.lang.java.symboltable.Scope;
13 import net.sourceforge.pmd.lang.java.symboltable.VariableNameDeclaration;
14
15 import org.junit.Test;
16
17 import java.util.List;
18 public class VariableNameDeclarationTest extends STBBaseTst {
19
20 @Test
21 public void testConstructor() {
22 parseCode(TEST1);
23 List nodes = acu.findDescendantsOfType(ASTVariableDeclaratorId.class);
24 Scope s = ((ASTVariableDeclaratorId) nodes.get(0)).getScope();
25 VariableNameDeclaration decl = s.getVariableDeclarations().keySet().iterator().next();
26 assertEquals("bar", decl.getImage());
27 assertEquals(3, decl.getNode().getBeginLine());
28 }
29
30 @Test
31 public void testExceptionBlkParam() {
32 ASTVariableDeclaratorId id = new ASTVariableDeclaratorId(3);
33 id.testingOnly__setBeginLine(10);
34 id.setImage("foo");
35 ASTFormalParameter param = new ASTFormalParameter(2);
36 id.jjtSetParent(param);
37 param.jjtSetParent(new ASTTryStatement(1));
38 VariableNameDeclaration decl = new VariableNameDeclaration(id);
39 assertTrue(decl.isExceptionBlockParameter());
40 }
41
42 @Test
43 public void testIsArray() {
44 parseCode(TEST3);
45 VariableNameDeclaration decl = acu.findDescendantsOfType(ASTVariableDeclaratorId.class).get(0).getScope().getVariableDeclarations().keySet().iterator().next();
46 assertTrue(decl.isArray());
47 }
48
49 @Test
50 public void testPrimitiveType() {
51 parseCode(TEST1);
52 VariableNameDeclaration decl = acu.findDescendantsOfType(ASTVariableDeclaratorId.class).get(0).getScope().getVariableDeclarations().keySet().iterator().next();
53 assertTrue(decl.isPrimitiveType());
54 }
55
56 @Test
57 public void testArrayIsReferenceType() {
58 parseCode(TEST3);
59 VariableNameDeclaration decl = acu.findDescendantsOfType(ASTVariableDeclaratorId.class).get(0).getScope().getVariableDeclarations().keySet().iterator().next();
60 assertTrue(decl.isReferenceType());
61 }
62
63 @Test
64 public void testPrimitiveTypeImage() {
65 parseCode(TEST3);
66 VariableNameDeclaration decl = acu.findDescendantsOfType(ASTVariableDeclaratorId.class).get(0).getScope().getVariableDeclarations().keySet().iterator().next();
67 assertEquals("int", decl.getTypeImage());
68 }
69
70 @Test
71 public void testRefTypeImage() {
72 parseCode(TEST4);
73 VariableNameDeclaration decl = acu.findDescendantsOfType(ASTVariableDeclaratorId.class).get(0).getScope().getVariableDeclarations().keySet().iterator().next();
74 assertEquals("String", decl.getTypeImage());
75 }
76
77 @Test
78 public void testParamTypeImage() {
79 parseCode(TEST5);
80 VariableNameDeclaration decl = acu.findDescendantsOfType(ASTVariableDeclaratorId.class).get(0).getScope().getVariableDeclarations().keySet().iterator().next();
81 assertEquals("String", decl.getTypeImage());
82 }
83
84 public static final String TEST1 =
85 "public class Foo {" + PMD.EOL +
86 " void foo() {" + PMD.EOL +
87 " int bar = 42;" + PMD.EOL +
88 " }" + PMD.EOL +
89 "}";
90
91 public static final String TEST2 =
92 "public class Foo {" + PMD.EOL +
93 " void foo() {" + PMD.EOL +
94 " try {} catch(Exception e) {}" + PMD.EOL +
95 " }" + PMD.EOL +
96 "}";
97
98 public static final String TEST3 =
99 "public class Foo {" + PMD.EOL +
100 " void foo() {" + PMD.EOL +
101 " int[] x;" + PMD.EOL +
102 " }" + PMD.EOL +
103 "}";
104
105 public static final String TEST4 =
106 "public class Foo {" + PMD.EOL +
107 " void foo() {" + PMD.EOL +
108 " String x;" + PMD.EOL +
109 " }" + PMD.EOL +
110 "}";
111 public static final String TEST5 =
112 "public class Foo {" + PMD.EOL +
113 " void foo(String x) {}" + PMD.EOL +
114 "}";
115
116 public static junit.framework.Test suite() {
117 return new junit.framework.JUnit4TestAdapter(VariableNameDeclarationTest.class);
118 }
119 }