OSDN Git Service

update test
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Mon, 29 Sep 2008 09:24:39 +0000 (09:24 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Mon, 29 Sep 2008 09:24:39 +0000 (09:24 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/digger/trunk@310 acee48c3-7b26-0410-bdac-b3d0e5314bbc

src/main/java/jp/sourceforge/stigmata/digger/ClasspathContext.java
src/test/java/jp/sourceforge/stigmata/digger/ClasspathContextTest.java

index 434cbb1..d8a29ed 100644 (file)
@@ -23,11 +23,7 @@ public class ClasspathContext implements Iterable<URL>{
     private ClassLoader loader = null;
     private boolean includeSystemClass = true;
 
-    private ClasspathContext(boolean flag){
-    }
-
     public ClasspathContext(){
-        this(new RootClasspathContext());
     }
 
     /**
@@ -230,10 +226,4 @@ public class ClasspathContext implements Iterable<URL>{
             throw new ClassNotFoundException(e.getMessage(), e);
         }
     }
-
-    private static class RootClasspathContext extends ClasspathContext{
-        RootClasspathContext(){
-            super(true);
-        }
-    }
 }
index 382ef22..7ca7a2f 100644 (file)
@@ -21,11 +21,61 @@ public class ClasspathContextTest{
 
         Assert.assertNotNull(classFileEntryClass);
         Assert.assertNotNull(classpathContextClass);
+        Assert.assertNotNull(context.findEntry("jp.sourceforge.stigmata.digger.ClassFileEntry"));
+        Assert.assertNotNull(context.findEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
     }
 
     @Test(expected=ClassNotFoundException.class)
     public void testNotExistedClass() throws Exception{
-        context.findClass("not.exists.class");
+        context.findClass("not.exists.ClassName");
+    }
+
+    @Test
+    public void testFindEntryNotExistedClass() throws Exception{
+        Assert.assertFalse(context.hasEntry("not.exists.ClassName"));
+        Assert.assertNull(context.findEntry("not.exists.ClassName"));
+    }
+
+    @Test
+    public void testFindEntryNotSearchSystemClasspath() throws Exception{
+        context.setIncludeSystemClasses(false);
+        Assert.assertFalse(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
+        Assert.assertNull(context.findEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
+    }
+
+    @Test
+    public void testFindEntryNotSearchSystemClasspath2() throws Exception{
+        context.addClasspath(new File("target/classes").toURI().toURL());
+        context.setIncludeSystemClasses(false);
+        // fail because classpath was not set.
+        Assert.assertFalse(context.hasEntry("org.objectweb.asm.ClassReader"));
+        Assert.assertNull(context.findEntry("org.objectweb.asm.ClassReader"));
+    }
+
+    @Test
+    public void testFindEntryNotSearchSystemClasspath3() throws Exception{
+        context.addClasspath(new File("target/classes").toURI().toURL());
+        context.setIncludeSystemClasses(false);
+        // always success to load
+        Assert.assertTrue(context.hasEntry("java.lang.Object"));
+        Assert.assertNotNull(context.findClass("java.lang.Object"));
+        // success because addClasspath method was called above.
+        Assert.assertTrue(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
+        Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
+    }
+
+    @Test
+    public void testFindEntryNotSearchSystemClasspath4() throws Exception{
+        context.addClasspath(new File("target/classes").toURI().toURL());
+        context.addClasspath(new File("target/asm-all-2.2.3.jar").toURI().toURL());
+        context.setIncludeSystemClasses(false);
+
+        Assert.assertTrue(context.hasEntry("java.lang.Object"));
+        Assert.assertNotNull(context.findClass("java.lang.Object"));
+        Assert.assertTrue(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
+        Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
+        Assert.assertTrue(context.hasEntry("org.objectweb.asm.ClassReader"));
+        Assert.assertNotNull(context.findClass("org.objectweb.asm.ClassReader"));
     }
 
     @Test(expected=ClassNotFoundException.class)
@@ -42,6 +92,7 @@ public class ClasspathContextTest{
         context.findClass("org.objectweb.asm.ClassReader");
     }
 
+    @Test
     public void testNotSearchSystemClasspath3() throws Exception{
         context.addClasspath(new File("target/classes").toURI().toURL());
         context.setIncludeSystemClasses(false);
@@ -60,4 +111,61 @@ public class ClasspathContextTest{
         Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
         Assert.assertNotNull(context.findClass("org.objectweb.asm.ClassReader"));
     }
+
+    @Test
+    public void testSubContextBasic() throws ClassNotFoundException{
+        ClasspathContext subContext = new ClasspathContext(context);
+        Class<?> classFileEntryClass = subContext.findClass("jp.sourceforge.stigmata.digger.ClassFileEntry");
+        Class<?> classpathContextClass = subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
+
+        Assert.assertNotNull(classFileEntryClass);
+        Assert.assertNotNull(classpathContextClass);
+    }
+
+    @Test(expected=ClassNotFoundException.class)
+    public void testSubContextNotExistedClass() throws Exception{
+        ClasspathContext subContext = new ClasspathContext(context);
+        subContext.findClass("not.exists.class");
+    }
+
+    @Test(expected=ClassNotFoundException.class)
+    public void testSubContextNotSearchSystemClasspath() throws Exception{
+        context.setIncludeSystemClasses(false);
+
+        ClasspathContext subContext = new ClasspathContext(context);
+        subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
+    }
+
+    @Test(expected=ClassNotFoundException.class)
+    public void testSubContextNotSearchSystemClasspath2() throws Exception{
+        context.addClasspath(new File("target/classes").toURI().toURL());
+        context.setIncludeSystemClasses(false);
+
+        ClasspathContext subContext = new ClasspathContext(context);
+        // fail because classpath was not set.
+        subContext.findClass("org.objectweb.asm.ClassReader");
+    }
+
+    public void testSubContextNotSearchSystemClasspath3() throws Exception{
+        context.addClasspath(new File("target/classes").toURI().toURL());
+        context.setIncludeSystemClasses(false);
+
+        ClasspathContext subContext = new ClasspathContext(context);
+        // always success to load
+        Assert.assertNotNull(subContext.findClass("java.lang.Object"));
+        // success because addClasspath method was called above.
+        Assert.assertNotNull(subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
+    }
+
+    @Test
+    public void testSubContextNotSearchSystemClasspath4() throws Exception{
+        context.addClasspath(new File("target/classes").toURI().toURL());
+        context.addClasspath(new File("target/asm-all-2.2.3.jar").toURI().toURL());
+        context.setIncludeSystemClasses(false);
+
+        ClasspathContext subContext = new ClasspathContext(context);
+        Assert.assertNotNull(subContext.findClass("java.lang.Object"));
+        Assert.assertNotNull(subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
+        Assert.assertNotNull(subContext.findClass("org.objectweb.asm.ClassReader"));
+    }
 }