/** * 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 static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Iterator; import java.util.Set; import org.junit.Test; import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.java.JavaLanguageModule; import net.sourceforge.pmd.lang.java.ParserTst; public class ASTFormalParameterTest extends ParserTst { @Test public void testVarargs() { int nrOfVarArgs = 0; int nrOfNoVarArgs = 0; Set<ASTFormalParameter> ops = getNodes(LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.5"), ASTFormalParameter.class, TEST1); for (Iterator<ASTFormalParameter> iter = ops.iterator(); iter.hasNext();) { ASTFormalParameter b = iter.next(); ASTVariableDeclaratorId variableDeclId = b.getFirstDescendantOfType(ASTVariableDeclaratorId.class); if (!"x".equals(variableDeclId.getImage())) { assertTrue(b.isVarargs()); nrOfVarArgs++; } else { assertFalse(b.isVarargs()); nrOfNoVarArgs++; } } // Ensure that both possibilities are tested assertEquals(1, nrOfVarArgs); assertEquals(1, nrOfNoVarArgs); } private static final String TEST1 = "class Foo {" + PMD.EOL + " void bar(int x, int... others) {}" + PMD.EOL + "}"; }