1 package jp.sourceforge.stigmata.digger;
6 import org.junit.Assert;
7 import org.junit.Before;
11 * test for ClasspathContext class.
13 * @author Haruaki Tamada
15 public class ClasspathContextTest{
16 private static final String ASM_FILE = "target/asm-all-4.0.jar";
17 private ClasspathContext context;
21 context = new ClasspathContext();
25 public void testBasic() throws ClassNotFoundException{
26 Assert.assertEquals(0, context.getClasspathSize());
28 Class<?> classFileEntryClass = context.findClass("jp.sourceforge.stigmata.digger.ClassFileEntry");
29 Class<?> classpathContextClass = context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
31 Assert.assertNotNull(classFileEntryClass);
32 Assert.assertNotNull(classpathContextClass);
33 Assert.assertNotNull(context.findEntry("jp.sourceforge.stigmata.digger.ClassFileEntry"));
34 Assert.assertNotNull(context.findEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
38 public void testBasic2() throws Exception{
39 context.addClasspath(new File("target/classes").toURI().toURL());
40 Assert.assertEquals(1, context.getClasspathSize());
41 Assert.assertEquals(new File("target/classes").toURI().toURL(), context.getClasspathList()[0]);
44 Assert.assertEquals(0, context.getClasspathSize());
48 public void testParent() throws Exception{
49 ClasspathContext subContext = new ClasspathContext(context);
50 context.addClasspath(new File("target/classes").toURI().toURL());
51 subContext.addClasspath(new File(ASM_FILE).toURI().toURL());
53 Assert.assertEquals(1, context.getClasspathSize());
54 Assert.assertEquals(2, subContext.getClasspathSize());
56 URL[] url = subContext.getClasspathList();
57 Assert.assertEquals(new File("target/classes").toURI().toURL(), url[0]);
58 Assert.assertEquals(new File(ASM_FILE).toURI().toURL(), url[1]);
61 Assert.assertEquals(1, subContext.getClasspathSize());
63 subContext.clearAll();
64 Assert.assertEquals(0, subContext.getClasspathSize());
68 public void testParent2() throws Exception{
69 ClasspathContext subContext = new ClasspathContext(context);
70 context.addClasspath(new File("target/classes").toURI().toURL());
71 subContext.addClasspath(new File(ASM_FILE).toURI().toURL());
73 Assert.assertTrue(context.isIncludeSystemClasses());
74 subContext.setIncludeSystemClasses(false);
75 Assert.assertFalse(context.isIncludeSystemClasses());
78 @Test(expected=ClassNotFoundException.class)
79 public void testNotExistedClass() throws Exception{
80 context.findClass("not.exists.ClassName");
84 public void testFindEntryNotExistedClass() throws Exception{
85 Assert.assertFalse(context.hasEntry("not.exists.ClassName"));
86 Assert.assertNull(context.findEntry("not.exists.ClassName"));
90 public void testFindEntryNotSearchSystemClasspath() throws Exception{
91 context.setIncludeSystemClasses(false);
92 Assert.assertFalse(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
93 Assert.assertNull(context.findEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
97 public void testFindEntryNotSearchSystemClasspath2() throws Exception{
98 context.addClasspath(new File("target/classes").toURI().toURL());
99 context.setIncludeSystemClasses(false);
100 // fail because classpath was not set.
101 Assert.assertFalse(context.hasEntry("org.objectweb.asm.ClassReader"));
102 Assert.assertNull(context.findEntry("org.objectweb.asm.ClassReader"));
106 public void testFindEntryNotSearchSystemClasspath3() throws Exception{
107 context.addClasspath(new File("target/classes").toURI().toURL());
108 context.setIncludeSystemClasses(false);
109 // always success to load
110 Assert.assertTrue(context.hasEntry("java.lang.Object"));
111 Assert.assertNotNull(context.findClass("java.lang.Object"));
112 // success because addClasspath method was called above.
113 Assert.assertTrue(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
114 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
118 public void testFindEntryNotSearchSystemClasspath4() throws Exception{
119 context.addClasspath(new File("target/classes").toURI().toURL());
120 context.addClasspath(new File(ASM_FILE).toURI().toURL());
121 context.setIncludeSystemClasses(false);
123 Assert.assertTrue(context.hasEntry("java.lang.Object"));
124 Assert.assertNotNull(context.findClass("java.lang.Object"));
125 Assert.assertTrue(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
126 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
127 Assert.assertTrue(context.hasEntry("org.objectweb.asm.ClassReader"));
128 Assert.assertNotNull(context.findClass("org.objectweb.asm.ClassReader"));
131 @Test(expected=ClassNotFoundException.class)
132 public void testNotSearchSystemClasspath() throws Exception{
133 context.setIncludeSystemClasses(false);
134 context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
137 @Test(expected=ClassNotFoundException.class)
138 public void testNotSearchSystemClasspath2() throws Exception{
139 context.addClasspath(new File("target/classes").toURI().toURL());
140 context.setIncludeSystemClasses(false);
141 // fail because classpath was not set.
142 context.findClass("org.objectweb.asm.ClassReader");
146 public void testNotSearchSystemClasspath3() throws Exception{
147 context.addClasspath(new File("target/classes").toURI().toURL());
148 context.setIncludeSystemClasses(false);
149 // always success to load
150 Assert.assertNotNull(context.findClass("java.lang.Object"));
151 // success because addClasspath method was called above.
152 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
156 public void testNotSearchSystemClasspath4() throws Exception{
157 context.addClasspath(new File("target/classes").toURI().toURL());
158 context.addClasspath(new File(ASM_FILE).toURI().toURL());
159 context.setIncludeSystemClasses(false);
160 Assert.assertNotNull(context.findClass("java.lang.Object"));
161 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
162 Assert.assertNotNull(context.findClass("org.objectweb.asm.ClassReader"));
166 public void testSubContextBasic() throws ClassNotFoundException{
167 ClasspathContext subContext = new ClasspathContext(context);
168 Class<?> classFileEntryClass = subContext.findClass("jp.sourceforge.stigmata.digger.ClassFileEntry");
169 Class<?> classpathContextClass = subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
171 Assert.assertNotNull(classFileEntryClass);
172 Assert.assertNotNull(classpathContextClass);
175 @Test(expected=ClassNotFoundException.class)
176 public void testSubContextNotExistedClass() throws Exception{
177 ClasspathContext subContext = new ClasspathContext(context);
178 subContext.findClass("not.exists.class");
181 @Test(expected=ClassNotFoundException.class)
182 public void testSubContextNotSearchSystemClasspath() throws Exception{
183 context.setIncludeSystemClasses(false);
185 ClasspathContext subContext = new ClasspathContext(context);
186 subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
189 @Test(expected=ClassNotFoundException.class)
190 public void testSubContextNotSearchSystemClasspath2() throws Exception{
191 context.addClasspath(new File("target/classes").toURI().toURL());
192 context.setIncludeSystemClasses(false);
194 ClasspathContext subContext = new ClasspathContext(context);
195 // fail because classpath was not set.
196 subContext.findClass("org.objectweb.asm.ClassReader");
199 public void testSubContextNotSearchSystemClasspath3() throws Exception{
200 context.addClasspath(new File("target/classes").toURI().toURL());
201 context.setIncludeSystemClasses(false);
203 ClasspathContext subContext = new ClasspathContext(context);
204 // always success to load
205 Assert.assertNotNull(subContext.findClass("java.lang.Object"));
206 // success because addClasspath method was called above.
207 Assert.assertNotNull(subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
211 public void testSubContextNotSearchSystemClasspath4() throws Exception{
212 context.addClasspath(new File("target/classes").toURI().toURL());
213 context.addClasspath(new File(ASM_FILE).toURI().toURL());
214 context.setIncludeSystemClasses(false);
216 ClasspathContext subContext = new ClasspathContext(context);
217 Assert.assertNotNull(subContext.findClass("java.lang.Object"));
218 Assert.assertNotNull(subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
219 Assert.assertNotNull(subContext.findClass("org.objectweb.asm.ClassReader"));
223 public void testWarLoader() throws Exception{
224 context.addClasspath(new File("target/test-classes/resources/samplewar.war").toURI().toURL());
226 Assert.assertNotNull(context.findClass("HelloWorld"));
228 ClasspathContext subContext = new ClasspathContext(context);
229 Assert.assertNotNull(subContext.findClass("HelloWorld"));