1   package test.net.sourceforge.pmd.typeresolution;
2   
3   import static org.junit.Assert.assertEquals;
4   import static org.junit.Assert.assertNotNull;
5   import net.sourceforge.pmd.typeresolution.PMDASMClassLoader;
6   
7   import org.junit.Before;
8   import org.junit.Test;
9   
10  import java.util.Map;
11  public class PMDASMClassLoaderTest {
12  
13      private PMDASMClassLoader cl;
14      
15      @Before
16      public void setUp() throws Exception {
17          cl = new PMDASMClassLoader(getClass().getClassLoader());
18      }
19  
20      @Test
21      public void testLoadClassWithImportOnDemand() throws Exception {
22          String className = "test.net.sourceforge.pmd.typeresolution.ClassWithImportOnDemand";
23          Class clazz = cl.loadClass(className);
24          assertNotNull(clazz);
25          Map<String, String> imports = cl.getImportedClasses(className);
26          assertNotNull(imports);
27          assertEquals(4, imports.size());
28          assertEquals("java.util.List", imports.get("List"));
29          assertEquals("java.util.ArrayList", imports.get("ArrayList"));
30          assertEquals("java.lang.Object", imports.get("Object"));
31          assertEquals("test.net.sourceforge.pmd.typeresolution.ClassWithImportOnDemand", imports.get("ClassWithImportOnDemand"));
32      }
33      
34      @Test
35      public void testClassWithImportInnerOnDemand() throws Exception {
36          String className = "test.net.sourceforge.pmd.typeresolution.ClassWithImportInnerOnDemand";
37          Class clazz = cl.loadClass(className);
38          assertNotNull(clazz);
39          Map<String, String> imports = cl.getImportedClasses(className);
40          assertNotNull(imports);
41          assertEquals(8, imports.size());
42          assertEquals("java.util.Iterator", imports.get("Iterator"));
43          assertEquals("java.util.Map", imports.get("Map"));
44          assertEquals("java.util.Set", imports.get("Set"));
45          assertEquals("java.util.Map$Entry", imports.get("Entry"));
46          assertEquals("java.util.Map$Entry", imports.get("Map$Entry"));
47          assertEquals("java.util.Map$Entry", imports.get("Map$Entry"));
48          assertEquals("java.lang.Object", imports.get("Object"));
49          assertEquals("test.net.sourceforge.pmd.typeresolution.ClassWithImportInnerOnDemand", imports.get("ClassWithImportInnerOnDemand"));
50      }
51  
52      public static junit.framework.Test suite() {
53          return new junit.framework.JUnit4TestAdapter(PMDASMClassLoaderTest.class);
54      }
55  }