1 package net.sourceforge.pmd.ast; 2 3 import static org.junit.Assert.assertEquals; 4 import static org.junit.Assert.assertFalse; 5 import static org.junit.Assert.assertTrue; 6 import net.sourceforge.pmd.PMD; 7 import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; 8 import net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration; 9 import net.sourceforge.pmd.lang.java.ast.ASTType; 10 import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclarator; 11 import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; 12 import net.sourceforge.pmd.lang.java.ast.Dimensionable; 13 import net.sourceforge.pmd.testframework.ParserTst; 14 15 import org.junit.Test; 16 17 18 public class ASTFieldDeclarationTest extends ParserTst { 19 20 @Test 21 public void testIsArray() { 22 ASTCompilationUnit cu = parseJava14(TEST1); 23 Dimensionable node = cu.findDescendantsOfType(ASTFieldDeclaration.class).get(0); 24 assertTrue(node.isArray()); 25 assertEquals(1, node.getArrayDepth()); 26 } 27 28 @Test 29 public void testMultiDimensionalArray() { 30 ASTCompilationUnit cu = parseJava14(TEST2); 31 Dimensionable node = cu.findDescendantsOfType(ASTFieldDeclaration.class).get(0); 32 assertEquals(3, node.getArrayDepth()); 33 } 34 35 @Test 36 public void testIsSyntacticallyPublic() { 37 ASTCompilationUnit cu = parseJava14(TEST3); 38 ASTFieldDeclaration node = cu.findDescendantsOfType(ASTFieldDeclaration.class).get(0); 39 assertFalse(node.isSyntacticallyPublic()); 40 assertFalse(node.isPackagePrivate()); 41 assertFalse(node.isPrivate()); 42 assertFalse(node.isProtected()); 43 assertTrue(node.isFinal()); 44 assertTrue(node.isStatic()); 45 assertTrue(node.isPublic()); 46 } 47 48 @Test 49 public void testWithEnum() { 50 ASTCompilationUnit cu = parseJava15(TEST4); 51 ASTFieldDeclaration node = cu.findDescendantsOfType(ASTFieldDeclaration.class).get(0); 52 assertFalse(node.isInterfaceMember()); 53 } 54 55 private static final String TEST1 = 56 "class Foo {" + PMD.EOL + 57 " String[] foo;" + PMD.EOL + 58 "}"; 59 60 private static final String TEST2 = 61 "class Foo {" + PMD.EOL + 62 " String[][][] foo;" + PMD.EOL + 63 "}"; 64 65 private static final String TEST3 = 66 "interface Foo {" + PMD.EOL + 67 " int BAR = 6;" + PMD.EOL + 68 "}"; 69 70 private static final String TEST4 = 71 "public enum Foo {" + PMD.EOL + 72 " FOO(1);" + PMD.EOL + 73 " private int x;" + PMD.EOL + 74 "}"; 75 76 @Test 77 public void testGetVariableName() { 78 int id = 0; 79 ASTFieldDeclaration n = new ASTFieldDeclaration(id++); 80 ASTType t = new ASTType(id++); 81 ASTVariableDeclarator decl = new ASTVariableDeclarator(id++); 82 ASTVariableDeclaratorId declid = new ASTVariableDeclaratorId(id++); 83 n.jjtAddChild(t, 0); 84 t.jjtAddChild(decl, 0); 85 decl.jjtAddChild(declid, 0); 86 declid.setImage("foo"); 87 88 assertEquals("foo", n.getVariableName()); 89 90 } 91 92 public static junit.framework.Test suite() { 93 return new junit.framework.JUnit4TestAdapter(ASTFieldDeclarationTest.class); 94 } 95 }