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 }