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  }