1   package test.net.sourceforge.pmd.ast;
2   
3   import net.sourceforge.pmd.PMD;
4   import net.sourceforge.pmd.TargetJDK1_4;
5   import net.sourceforge.pmd.ast.ASTCompilationUnit;
6   import net.sourceforge.pmd.ast.ASTFieldDeclaration;
7   import net.sourceforge.pmd.ast.ASTType;
8   import net.sourceforge.pmd.ast.ASTVariableDeclarator;
9   import net.sourceforge.pmd.ast.ASTVariableDeclaratorId;
10  import net.sourceforge.pmd.ast.Dimensionable;
11  import net.sourceforge.pmd.ast.JavaParser;
12  import test.net.sourceforge.pmd.testframework.ParserTst;
13  
14  import java.io.StringReader;
15  
16  public class ASTFieldDeclarationTest extends ParserTst{
17  
18      public void testIsArray() {
19          JavaParser parser = (new TargetJDK1_4()).createParser(new StringReader(TEST1));
20          ASTCompilationUnit cu = parser.CompilationUnit();
21          Dimensionable node = (Dimensionable)cu.findChildrenOfType(ASTFieldDeclaration.class).get(0);
22          assertTrue(node.isArray());
23          assertEquals(1, node.getArrayDepth());
24      }
25  
26      public void testMultiDimensionalArray() {
27          JavaParser parser = (new TargetJDK1_4()).createParser(new StringReader(TEST2));
28          ASTCompilationUnit cu = parser.CompilationUnit();
29          Dimensionable node = (Dimensionable)cu.findChildrenOfType(ASTFieldDeclaration.class).get(0);
30          assertEquals(3, node.getArrayDepth());
31      }
32  
33      private static final String TEST1 =
34      "class Foo {" + PMD.EOL +
35      " String[] foo;" + PMD.EOL +
36      "}";
37  
38      private static final String TEST2 =
39      "class Foo {" + PMD.EOL +
40      " String[][][] foo;" + PMD.EOL +
41      "}";
42      
43      public void testGetVariableName() {
44      	int id = 0;
45      	ASTFieldDeclaration n = new ASTFieldDeclaration(id++);
46      	ASTType t = new ASTType(id++);
47      	ASTVariableDeclarator decl = new ASTVariableDeclarator(id++);
48      	ASTVariableDeclaratorId declid = new ASTVariableDeclaratorId(id++);
49      	n.jjtAddChild(t, 0);
50      	t.jjtAddChild(decl, 0);
51      	decl.jjtAddChild(declid, 0);
52      	declid.setImage("foo");
53      	
54      	assertEquals("foo", n.getVariableName());
55      	
56      }
57  }