/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.java.ast;
import static org.junit.Assert.assertEquals;
import java.util.Set;
import org.junit.Test;
import net.sourceforge.pmd.lang.java.ParserTst;
public class ClassDeclTest extends ParserTst {
@Test
public void testPublic() {
String[] access = { "public" };
ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
verifyFlags(acd, true, false, false, false);
}
@Test
public void testAbstract() {
String[] access = { "abstract" };
ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
verifyFlags(acd, false, true, false, false);
}
@Test
public void testFinal() {
String[] access = { "final" };
ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
verifyFlags(acd, false, false, true, false);
}
@Test
public void testStrict() {
String[] access = { "strictfp" };
ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
verifyFlags(acd, false, false, false, true);
}
@Test
public void testPublicFinal() {
String[] access = { "public", "final" };
ASTClassOrInterfaceDeclaration acd = getClassDecl(access);
verifyFlags(acd, true, false, true, false);
}
public void verifyFlags(ASTClassOrInterfaceDeclaration acd, boolean bPublic, boolean bAbstract, boolean bFinal,
boolean bStrict) {
assertEquals("Public: ", bPublic, acd.isPublic());
assertEquals("Abstract: ", bAbstract, acd.isAbstract());
assertEquals("Final: ", bFinal, acd.isFinal());
assertEquals("Strict: ", bStrict, acd.isStrictfp());
}
public ASTClassOrInterfaceDeclaration getClassDecl(String[] access) {
String javaCode = "";
for (int i = 0; i < access.length; i++) {
javaCode += access[i] + " ";
}
javaCode += " class Test { } ";
Set<ASTClassOrInterfaceDeclaration> classes = getNodes(ASTClassOrInterfaceDeclaration.class, javaCode);
assertEquals("Wrong number of classes", 1, classes.size());
return classes.iterator().next();
}
}