1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package test.net.sourceforge.pmd.symboltable; 5 6 import junit.framework.TestCase; 7 import net.sourceforge.pmd.ast.ASTBlock; 8 import net.sourceforge.pmd.ast.ASTClassBodyDeclaration; 9 import net.sourceforge.pmd.ast.ASTCompilationUnit; 10 import net.sourceforge.pmd.ast.ASTConstructorDeclaration; 11 import net.sourceforge.pmd.ast.ASTForStatement; 12 import net.sourceforge.pmd.ast.ASTIfStatement; 13 import net.sourceforge.pmd.ast.ASTMethodDeclaration; 14 import net.sourceforge.pmd.ast.ASTTryStatement; 15 import net.sourceforge.pmd.ast.ASTUnmodifiedClassDeclaration; 16 import net.sourceforge.pmd.ast.ASTUnmodifiedInterfaceDeclaration; 17 import net.sourceforge.pmd.symboltable.BasicScopeFactory; 18 import net.sourceforge.pmd.symboltable.ClassScope; 19 import net.sourceforge.pmd.symboltable.GlobalScope; 20 import net.sourceforge.pmd.symboltable.LocalScope; 21 import net.sourceforge.pmd.symboltable.MethodScope; 22 import net.sourceforge.pmd.symboltable.ScopeFactory; 23 24 import java.util.Stack; 25 26 public class BasicScopeFactoryTest extends TestCase { 27 28 public void testGlobalScope() { 29 ScopeFactory sf = new BasicScopeFactory(); 30 Stack s = new Stack(); 31 sf.openScope(s, new ASTCompilationUnit(1)); 32 assertEquals(1, s.size()); 33 assertTrue(s.get(0) instanceof GlobalScope); 34 } 35 36 public void testClassScope() { 37 ScopeFactory sf = new BasicScopeFactory(); 38 Stack s = new Stack(); 39 sf.openScope(s, new ASTCompilationUnit(1)); 40 sf.openScope(s, new ASTUnmodifiedClassDeclaration(2)); 41 assertTrue(s.get(1) instanceof ClassScope); 42 sf.openScope(s, new ASTUnmodifiedInterfaceDeclaration(1)); 43 assertTrue(s.get(2) instanceof ClassScope); 44 sf.openScope(s, new ASTClassBodyDeclaration(1)); 45 assertTrue(s.get(3) instanceof ClassScope); 46 } 47 48 public void testMethodScope() { 49 ScopeFactory sf = new BasicScopeFactory(); 50 Stack s = new Stack(); 51 sf.openScope(s, new ASTCompilationUnit(1)); 52 sf.openScope(s, new ASTMethodDeclaration(2)); 53 assertTrue(s.get(1) instanceof MethodScope); 54 sf.openScope(s, new ASTConstructorDeclaration(1)); 55 assertTrue(s.get(2) instanceof MethodScope); 56 } 57 58 public void testLocalScope() { 59 ScopeFactory sf = new BasicScopeFactory(); 60 Stack s = new Stack(); 61 sf.openScope(s, new ASTCompilationUnit(1)); 62 sf.openScope(s, new ASTBlock(2)); 63 assertTrue(s.get(1) instanceof LocalScope); 64 sf.openScope(s, new ASTTryStatement(1)); 65 assertTrue(s.get(2) instanceof LocalScope); 66 sf.openScope(s, new ASTForStatement(1)); 67 assertTrue(s.get(3) instanceof LocalScope); 68 sf.openScope(s, new ASTIfStatement(1)); 69 assertTrue(s.get(4) instanceof LocalScope); 70 } 71 }