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 net.sourceforge.pmd.ast.ASTClassOrInterfaceDeclaration;
7 import test.net.sourceforge.pmd.testframework.ParserTst;
8
9 import java.util.Iterator;
10 import java.util.Set;
11
12 public class ClassDeclTest extends ParserTst {
13
14 public void testPublic() throws Throwable {
15 String access[] = {"public"};
16 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
17 verifyFlags(acd, true, false, false, false);
18 }
19
20 public void testAbstract() throws Throwable {
21 String access[] = {"abstract"};
22 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
23 verifyFlags(acd, false, true, false, false);
24 }
25
26 public void testFinal() throws Throwable {
27 String access[] = {"final"};
28 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
29 verifyFlags(acd, false, false, true, false);
30 }
31
32 public void testStrict() throws Throwable {
33 String access[] = {"strictfp"};
34 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
35 verifyFlags(acd, false, false, false, true);
36 }
37
38 public void testPublicFinal() throws Throwable {
39 String access[] = {"public", "final"};
40 ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
41 verifyFlags(acd, true, false, true, false);
42 }
43
44 public void verifyFlags(ASTClassOrInterfaceDeclaration acd, boolean bPublic, boolean bAbstract, boolean bFinal, boolean bStrict) {
45 assertEquals("Public: ", bPublic, acd.isPublic());
46 assertEquals("Abstract: ", bAbstract, acd.isAbstract());
47 assertEquals("Final: ", bFinal, acd.isFinal());
48 assertEquals("Strict: ", bStrict, acd.isStrictfp());
49 }
50
51 public ASTClassOrInterfaceDeclaration getClassDecl(String access[]) throws Throwable {
52 String javaCode = "";
53
54 for (int i = 0; i < access.length; i++) {
55 javaCode += access[i] + " ";
56 }
57
58 javaCode += " class Test { } ";
59
60 Set classes = getNodes(ASTClassOrInterfaceDeclaration.class, javaCode);
61
62 assertEquals("Wrong number of classes", 1, classes.size());
63 Iterator i = classes.iterator();
64 return (ASTClassOrInterfaceDeclaration) i.next();
65 }
66 }