1 package net.sourceforge.pmd.lang.java.ast;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertTrue;
6
7 import java.util.Iterator;
8 import java.util.Set;
9
10 import net.sourceforge.pmd.PMD;
11 import net.sourceforge.pmd.lang.LanguageRegistry;
12 import net.sourceforge.pmd.lang.java.JavaLanguageModule;
13 import net.sourceforge.pmd.lang.java.ParserTst;
14
15 import org.junit.Test;
16
17
18 public class ASTFormalParameterTest extends ParserTst {
19
20 @Test
21 public void testVarargs() throws Throwable {
22 int nrOfVarArgs = 0;
23 int nrOfNoVarArgs = 0;
24
25 Set<ASTFormalParameter> ops = getNodes(LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.5"), ASTFormalParameter.class, TEST1);
26 for (Iterator<ASTFormalParameter> iter = ops.iterator(); iter.hasNext();) {
27 ASTFormalParameter b = iter.next();
28 ASTVariableDeclaratorId variableDeclId = b.getFirstDescendantOfType(ASTVariableDeclaratorId.class);
29 if (!"x".equals(variableDeclId.getImage())) {
30 assertTrue(b.isVarargs());
31 nrOfVarArgs++;
32 } else {
33 assertFalse(b.isVarargs());
34 nrOfNoVarArgs++;
35 }
36 }
37
38
39 assertEquals(1, nrOfVarArgs);
40 assertEquals(1, nrOfNoVarArgs);
41 }
42
43 private static final String TEST1 =
44 "class Foo {" + PMD.EOL +
45 " void bar(int x, int... others) {}" + PMD.EOL +
46 "}";
47
48 public static junit.framework.Test suite() {
49 return new junit.framework.JUnit4TestAdapter(ASTFormalParameterTest.class);
50 }
51 }