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.ASTVariableDeclaratorId;
8   import net.sourceforge.pmd.ast.SimpleNode;
9   import net.sourceforge.pmd.symboltable.ClassScope;
10  import net.sourceforge.pmd.symboltable.NameOccurrence;
11  import net.sourceforge.pmd.symboltable.VariableNameDeclaration;
12  
13  public class ClassScopeTest extends TestCase {
14  
15      public void testContains() {
16          ClassScope s = new ClassScope("Foo");
17          ASTVariableDeclaratorId node = new ASTVariableDeclaratorId(1);
18          node.setImage("bar");
19          s.addDeclaration(new VariableNameDeclaration(node));
20          assertTrue(s.getVariableDeclarations(false).keySet().iterator().hasNext());
21      }
22  
23      public void testCantContainsSuperToString() {
24          ClassScope s = new ClassScope("Foo");
25          SimpleNode node = new SimpleNode(1);
26          node.setImage("super.toString");
27          assertTrue(!s.contains(new NameOccurrence(node, node.getImage())));
28      }
29  
30      public void testContainsStaticVariablePrefixedWithClassName() {
31          ClassScope s = new ClassScope("Foo");
32          ASTVariableDeclaratorId node = new ASTVariableDeclaratorId(1);
33          node.setImage("X");
34          s.addDeclaration(new VariableNameDeclaration(node));
35  
36          SimpleNode node2 = new SimpleNode(2);
37          node2.setImage("Foo.X");
38          assertTrue(s.contains(new NameOccurrence(node2, node2.getImage())));
39      }
40  
41      public void testClassName() {
42          ClassScope s = new ClassScope("Foo");
43          assertEquals("Foo", s.getClassName());
44      }
45  
46      // FIXME - these will break when this goes from Anonymous$1 to Foo$1
47      public void testAnonymousInnerClassName() {
48          ClassScope s = new ClassScope();
49          assertEquals("Anonymous$1", s.getClassName());
50          s = new ClassScope();
51          assertEquals("Anonymous$2", s.getClassName());
52      }
53  
54  
55  }