1 package net.sourceforge.pmd.symboltable; 2 3 import static org.junit.Assert.assertEquals; 4 import static org.junit.Assert.assertFalse; 5 import net.sourceforge.pmd.PMD; 6 import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; 7 import net.sourceforge.pmd.lang.java.symboltable.ClassNameDeclaration; 8 9 import org.junit.Test; 10 11 import java.util.Iterator; 12 import java.util.Map; 13 public class SourceFileScopeTest extends STBBaseTst { 14 15 @Test 16 public void testClassDeclAppears() { 17 parseCode(TEST1); 18 Map m = acu.getScope().getClassDeclarations(); 19 ClassNameDeclaration classNameDeclaration = (ClassNameDeclaration) m.keySet().iterator().next(); 20 assertEquals(classNameDeclaration.getImage(), "Foo"); 21 } 22 23 @Test 24 public void testPackageIsEmptyString() { 25 parseCode(TEST1); 26 ASTCompilationUnit decl = acu; 27 assertEquals(decl.getScope().getEnclosingSourceFileScope().getPackageName(), ""); 28 } 29 30 @Test 31 public void testPackageNameFound() { 32 parseCode(TEST2); 33 ASTCompilationUnit decl = acu; 34 assertEquals(decl.getScope().getEnclosingSourceFileScope().getPackageName(), "foo.bar"); 35 } 36 37 @Test 38 public void testNestedClasses() { 39 parseCode(TEST3); 40 Map m = acu.getScope().getClassDeclarations(); 41 Iterator iterator = m.keySet().iterator(); 42 ClassNameDeclaration classNameDeclaration = (ClassNameDeclaration) iterator.next(); 43 assertEquals(classNameDeclaration.getImage(), "Foo"); 44 assertFalse(iterator.hasNext()); 45 } 46 47 private static final String TEST1 = 48 "public class Foo {}" + PMD.EOL; 49 50 private static final String TEST2 = 51 "package foo.bar;" + PMD.EOL + 52 "public class Foo {" + PMD.EOL + 53 "}" + PMD.EOL; 54 55 private static final String TEST3 = 56 "public class Foo {" + PMD.EOL + 57 " public class Bar {" + PMD.EOL + 58 " }" + PMD.EOL + 59 "}" + PMD.EOL; 60 61 public static junit.framework.Test suite() { 62 return new junit.framework.JUnit4TestAdapter(SourceFileScopeTest.class); 63 } 64 }