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 }