1 package test.net.sourceforge.pmd.ast;
2
3 import java.util.Iterator;
4 import java.util.Set;
5
6 import net.sourceforge.pmd.PMD;
7 import net.sourceforge.pmd.TargetJDK1_5;
8 import net.sourceforge.pmd.ast.ASTFormalParameter;
9 import net.sourceforge.pmd.ast.ASTVariableDeclaratorId;
10 import test.net.sourceforge.pmd.testframework.ParserTst;
11
12 public class ASTFormalParameterTest extends ParserTst {
13
14 public void testVarargs() throws Throwable {
15 int nrOfVarArgs = 0;
16 int nrOfNoVarArgs = 0;
17
18 Set ops = getNodes(new TargetJDK1_5(), ASTFormalParameter.class, TEST1);
19 for (Iterator iter = ops.iterator(); iter.hasNext();) {
20 ASTFormalParameter b = (ASTFormalParameter) iter.next();
21 ASTVariableDeclaratorId variableDeclId = (ASTVariableDeclaratorId)b.getFirstChildOfType(ASTVariableDeclaratorId.class);
22 if (!"x".equals(variableDeclId.getImage())) {
23 assertTrue(b.isVarargs());
24 nrOfVarArgs++;
25 } else {
26 assertFalse(b.isVarargs());
27 nrOfNoVarArgs++;
28 }
29 }
30
31
32 assertEquals(1, nrOfVarArgs);
33 assertEquals(1, nrOfNoVarArgs);
34 }
35
36 private static final String TEST1 =
37 "class Foo {" + PMD.EOL +
38 " void bar(int x, int... others) {}" + PMD.EOL +
39 "}";
40
41 }