1 package test.net.sourceforge.pmd.symboltable; 2 3 import static org.junit.Assert.assertEquals; 4 import net.sourceforge.pmd.PMD; 5 import net.sourceforge.pmd.ast.ASTMethodDeclaration; 6 import net.sourceforge.pmd.symboltable.MethodScope; 7 import net.sourceforge.pmd.symboltable.NameOccurrence; 8 import net.sourceforge.pmd.symboltable.VariableNameDeclaration; 9 10 import org.junit.Test; 11 12 import java.util.List; 13 import java.util.Map; 14 15 public class MethodScopeTest extends STBBaseTst { 16 17 @Test 18 public void testMethodParameterOccurrenceRecorded() { 19 parseCode(TEST1); 20 Map m = acu.findChildrenOfType(ASTMethodDeclaration.class).get(0).getScope().getVariableDeclarations(); 21 VariableNameDeclaration vnd = (VariableNameDeclaration) m.keySet().iterator().next(); 22 assertEquals("bar", vnd.getImage()); 23 List occs = (List) m.get(vnd); 24 NameOccurrence occ = (NameOccurrence) occs.get(0); 25 assertEquals(3, occ.getLocation().getBeginLine()); 26 } 27 28 @Test 29 public void testMethodName() { 30 parseCode(TEST1); 31 ASTMethodDeclaration meth = acu.findChildrenOfType(ASTMethodDeclaration.class).get(0); 32 MethodScope ms = (MethodScope) meth.getScope(); 33 assertEquals(ms.getName(), "foo"); 34 } 35 @Test 36 public void testGenerics() { 37 parseCode15(TEST_GENERICS); 38 } 39 40 public static final String TEST1 = 41 "public class Foo {" + PMD.EOL + 42 " void foo(int bar) {" + PMD.EOL + 43 " bar = 2;" + PMD.EOL + 44 " }" + PMD.EOL + 45 "}"; 46 47 private static final String TEST_GENERICS = 48 "public class Tree {" + PMD.EOL + 49 " private List<Object> subForest;" + PMD.EOL + 50 " public <B> Tree<B> fmap(final F<B> f) { return Tree.<B>foo(); }" + PMD.EOL + 51 " public List<Object> subForest() { return null; }" + PMD.EOL + 52 "}" + PMD.EOL; 53 54 public static junit.framework.Test suite() { 55 return new junit.framework.JUnit4TestAdapter(MethodScopeTest.class); 56 } 57 }