View Javadoc
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          //Ensure that both possibilities are tested
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  }