1 /**
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package test.net.sourceforge.pmd.ast;
5
6 import static org.junit.Assert.assertEquals;
7 import net.sourceforge.pmd.ast.ASTClassOrInterfaceDeclaration;
8
9 import org.junit.Test;
10
11 import test.net.sourceforge.pmd.testframework.ParserTst;
12
13 import java.util.Iterator;
14 import java.util.Set;
15
16 public class ClassDeclTest extends ParserTst {
17
18 @Test
19 public void testPublic() throws Throwable {
20 String access[] = {"public"};
21 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
22 verifyFlags(acd, true, false, false, false);
23 }
24
25 @Test
26 public void testAbstract() throws Throwable {
27 String access[] = {"abstract"};
28 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
29 verifyFlags(acd, false, true, false, false);
30 }
31
32 @Test
33 public void testFinal() throws Throwable {
34 String access[] = {"final"};
35 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
36 verifyFlags(acd, false, false, true, false);
37 }
38
39 @Test
40 public void testStrict() throws Throwable {
41 String access[] = {"strictfp"};
42 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
43 verifyFlags(acd, false, false, false, true);
44 }
45
46 @Test
47 public void testPublicFinal() throws Throwable {
48 String access[] = {"public", "final"};
49 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
50 verifyFlags(acd, true, false, true, false);
51 }
52
53 public void verifyFlags(ASTClassOrInterfaceDeclaration acd, boolean bPublic, boolean bAbstract, boolean bFinal, boolean bStrict) {
54 assertEquals("Public: ", bPublic, acd.isPublic());
55 assertEquals("Abstract: ", bAbstract, acd.isAbstract());
56 assertEquals("Final: ", bFinal, acd.isFinal());
57 assertEquals("Strict: ", bStrict, acd.isStrictfp());
58 }
59
60 public ASTClassOrInterfaceDeclaration getClassDecl(String access[]) throws Throwable {
61 String javaCode = "";
62
63 for (int i = 0; i < access.length; i++) {
64 javaCode += access[i] + " ";
65 }
66
67 javaCode += " class Test { } ";
68
69 Set classes = getNodes(ASTClassOrInterfaceDeclaration.class, javaCode);
70
71 assertEquals("Wrong number of classes", 1, classes.size());
72 Iterator i = classes.iterator();
73 return (ASTClassOrInterfaceDeclaration) i.next();
74 }
75
76 public static junit.framework.Test suite() {
77 return new junit.framework.JUnit4TestAdapter(ClassDeclTest.class);
78 }
79 }