1 4 package test.net.sourceforge.pmd.symboltable; 5 6 import net.sourceforge.pmd.PMD; 7 import net.sourceforge.pmd.ast.ASTPrimaryExpression; 8 import net.sourceforge.pmd.symboltable.NameFinder; 9 import net.sourceforge.pmd.symboltable.NameOccurrence; 10 11 import java.util.List ; 12 13 public class NameOccurrencesTest extends STBBaseTst { 14 15 public void testSuper() { 16 parseCode(TEST1); 17 List nodes = acu.findChildrenOfType(ASTPrimaryExpression.class); 18 NameFinder occs = new NameFinder((ASTPrimaryExpression) nodes.get(0)); 19 assertEquals("super", ((NameOccurrence) occs.getNames().get(0)).getImage()); 20 } 21 22 public void testThis() { 23 parseCode(TEST2); 24 List nodes = acu.findChildrenOfType(ASTPrimaryExpression.class); 25 NameFinder occs = new NameFinder((ASTPrimaryExpression) nodes.get(0)); 26 assertEquals("this", ((NameOccurrence) occs.getNames().get(0)).getImage()); 27 assertEquals("x", ((NameOccurrence) occs.getNames().get(1)).getImage()); 28 } 29 30 public void testNameLinkage() { 31 parseCode(TEST2); 32 List nodes = acu.findChildrenOfType(ASTPrimaryExpression.class); 33 NameFinder occs = new NameFinder((ASTPrimaryExpression) nodes.get(0)); 34 NameOccurrence thisNameOccurrence = (NameOccurrence) occs.getNames().get(0); 35 assertEquals(thisNameOccurrence.getNameForWhichThisIsAQualifier(), occs.getNames().get(1)); 36 } 37 38 public void testSimpleVariableOccurrence() { 39 parseCode(TEST3); 40 List nodes = acu.findChildrenOfType(ASTPrimaryExpression.class); 41 NameFinder occs = new NameFinder((ASTPrimaryExpression) nodes.get(0)); 42 assertEquals("x", ((NameOccurrence) occs.getNames().get(0)).getImage()); 43 assertFalse(((NameOccurrence) occs.getNames().get(0)).isThisOrSuper()); 44 assertFalse(((NameOccurrence) occs.getNames().get(0)).isMethodOrConstructorInvocation()); 45 assertTrue(((NameOccurrence) occs.getNames().get(0)).isOnLeftHandSide()); 46 } 47 48 public void testQualifiedOccurrence() { 49 parseCode(TEST4); 50 List nodes = acu.findChildrenOfType(ASTPrimaryExpression.class); 51 NameFinder occs = new NameFinder((ASTPrimaryExpression) nodes.get(0)); 52 assertEquals("b", ((NameOccurrence) occs.getNames().get(0)).getImage()); 53 assertEquals("x", ((NameOccurrence) occs.getNames().get(1)).getImage()); 54 } 55 56 public static final String TEST1 = 57 "public class Foo {" + PMD.EOL + 58 " void foo() {" + PMD.EOL + 59 " super.x = 2;" + PMD.EOL + 60 " }" + PMD.EOL + 61 "}"; 62 63 public static final String TEST2 = 64 "public class Foo {" + PMD.EOL + 65 " void foo() {" + PMD.EOL + 66 " this.x = 2;" + PMD.EOL + 67 " }" + PMD.EOL + 68 "}"; 69 70 public static final String TEST3 = 71 "public class Foo {" + PMD.EOL + 72 " void foo() {" + PMD.EOL + 73 " x = 2;" + PMD.EOL + 74 " }" + PMD.EOL + 75 "}"; 76 77 public static final String TEST4 = 78 "public class Foo {" + PMD.EOL + 79 " void foo() {" + PMD.EOL + 80 " b.x = 2;" + PMD.EOL + 81 " }" + PMD.EOL + 82 "}"; 83 } 84 | Popular Tags |