1 package jp.sourceforge.stigmata.digger;
10 import org.junit.Assert;
11 import org.junit.Before;
12 import org.junit.Test;
15 * test for ClasspathContext class.
17 * @author Haruaki Tamada
20 public class ClasspathContextTest{
21 private static final String ASM_FILE = "target/asm-3.3.jar";
22 private ClasspathContext context;
26 context = new ClasspathContext();
30 public void testBasic() throws ClassNotFoundException{
31 Assert.assertEquals(0, context.getClasspathSize());
33 Class<?> classFileEntryClass = context.findClass("jp.sourceforge.stigmata.digger.ClassFileEntry");
34 Class<?> classpathContextClass = context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
36 Assert.assertNotNull(classFileEntryClass);
37 Assert.assertNotNull(classpathContextClass);
38 Assert.assertNotNull(context.findEntry("jp.sourceforge.stigmata.digger.ClassFileEntry"));
39 Assert.assertNotNull(context.findEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
43 public void testBasic2() throws Exception{
44 context.addClasspath(new File("target/classes").toURI().toURL());
45 Assert.assertEquals(1, context.getClasspathSize());
46 Assert.assertEquals(new File("target/classes").toURI().toURL(), context.getClasspathList()[0]);
49 Assert.assertEquals(0, context.getClasspathSize());
53 public void testParent() throws Exception{
54 ClasspathContext subContext = new ClasspathContext(context);
55 context.addClasspath(new File("target/classes").toURI().toURL());
56 subContext.addClasspath(new File(ASM_FILE).toURI().toURL());
58 Assert.assertEquals(1, context.getClasspathSize());
59 Assert.assertEquals(2, subContext.getClasspathSize());
61 URL[] url = subContext.getClasspathList();
62 Assert.assertEquals(new File("target/classes").toURI().toURL(), url[0]);
63 Assert.assertEquals(new File(ASM_FILE).toURI().toURL(), url[1]);
66 Assert.assertEquals(1, subContext.getClasspathSize());
68 subContext.clearAll();
69 Assert.assertEquals(0, subContext.getClasspathSize());
73 public void testParent2() throws Exception{
74 ClasspathContext subContext = new ClasspathContext(context);
75 context.addClasspath(new File("target/classes").toURI().toURL());
76 subContext.addClasspath(new File(ASM_FILE).toURI().toURL());
78 Assert.assertTrue(context.isIncludeSystemClasses());
79 subContext.setIncludeSystemClasses(false);
80 Assert.assertFalse(context.isIncludeSystemClasses());
83 @Test(expected=ClassNotFoundException.class)
84 public void testNotExistedClass() throws Exception{
85 context.findClass("not.exists.ClassName");
89 public void testFindEntryNotExistedClass() throws Exception{
90 Assert.assertFalse(context.hasEntry("not.exists.ClassName"));
91 Assert.assertNull(context.findEntry("not.exists.ClassName"));
95 public void testFindEntryNotSearchSystemClasspath() throws Exception{
96 context.setIncludeSystemClasses(false);
97 Assert.assertFalse(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
98 Assert.assertNull(context.findEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
102 public void testFindEntryNotSearchSystemClasspath2() throws Exception{
103 context.addClasspath(new File("target/classes").toURI().toURL());
104 context.setIncludeSystemClasses(false);
105 // fail because classpath was not set.
106 Assert.assertFalse(context.hasEntry("org.objectweb.asm.ClassReader"));
107 Assert.assertNull(context.findEntry("org.objectweb.asm.ClassReader"));
111 public void testFindEntryNotSearchSystemClasspath3() throws Exception{
112 context.addClasspath(new File("target/classes").toURI().toURL());
113 context.setIncludeSystemClasses(false);
114 // always success to load
115 Assert.assertTrue(context.hasEntry("java.lang.Object"));
116 Assert.assertNotNull(context.findClass("java.lang.Object"));
117 // success because addClasspath method was called above.
118 Assert.assertTrue(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
119 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
123 public void testFindEntryNotSearchSystemClasspath4() throws Exception{
124 context.addClasspath(new File("target/classes").toURI().toURL());
125 context.addClasspath(new File(ASM_FILE).toURI().toURL());
126 context.setIncludeSystemClasses(false);
128 Assert.assertTrue(context.hasEntry("java.lang.Object"));
129 Assert.assertNotNull(context.findClass("java.lang.Object"));
130 Assert.assertTrue(context.hasEntry("jp.sourceforge.stigmata.digger.ClasspathContext"));
131 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
132 Assert.assertTrue(context.hasEntry("org.objectweb.asm.ClassReader"));
133 Assert.assertNotNull(context.findClass("org.objectweb.asm.ClassReader"));
136 @Test(expected=ClassNotFoundException.class)
137 public void testNotSearchSystemClasspath() throws Exception{
138 context.setIncludeSystemClasses(false);
139 context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
142 @Test(expected=ClassNotFoundException.class)
143 public void testNotSearchSystemClasspath2() throws Exception{
144 context.addClasspath(new File("target/classes").toURI().toURL());
145 context.setIncludeSystemClasses(false);
146 // fail because classpath was not set.
147 context.findClass("org.objectweb.asm.ClassReader");
151 public void testNotSearchSystemClasspath3() throws Exception{
152 context.addClasspath(new File("target/classes").toURI().toURL());
153 context.setIncludeSystemClasses(false);
154 // always success to load
155 Assert.assertNotNull(context.findClass("java.lang.Object"));
156 // success because addClasspath method was called above.
157 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
161 public void testNotSearchSystemClasspath4() throws Exception{
162 context.addClasspath(new File("target/classes").toURI().toURL());
163 context.addClasspath(new File(ASM_FILE).toURI().toURL());
164 context.setIncludeSystemClasses(false);
165 Assert.assertNotNull(context.findClass("java.lang.Object"));
166 Assert.assertNotNull(context.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
167 Assert.assertNotNull(context.findClass("org.objectweb.asm.ClassReader"));
171 public void testSubContextBasic() throws ClassNotFoundException{
172 ClasspathContext subContext = new ClasspathContext(context);
173 Class<?> classFileEntryClass = subContext.findClass("jp.sourceforge.stigmata.digger.ClassFileEntry");
174 Class<?> classpathContextClass = subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
176 Assert.assertNotNull(classFileEntryClass);
177 Assert.assertNotNull(classpathContextClass);
180 @Test(expected=ClassNotFoundException.class)
181 public void testSubContextNotExistedClass() throws Exception{
182 ClasspathContext subContext = new ClasspathContext(context);
183 subContext.findClass("not.exists.class");
186 @Test(expected=ClassNotFoundException.class)
187 public void testSubContextNotSearchSystemClasspath() throws Exception{
188 context.setIncludeSystemClasses(false);
190 ClasspathContext subContext = new ClasspathContext(context);
191 subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext");
194 @Test(expected=ClassNotFoundException.class)
195 public void testSubContextNotSearchSystemClasspath2() throws Exception{
196 context.addClasspath(new File("target/classes").toURI().toURL());
197 context.setIncludeSystemClasses(false);
199 ClasspathContext subContext = new ClasspathContext(context);
200 // fail because classpath was not set.
201 subContext.findClass("org.objectweb.asm.ClassReader");
204 public void testSubContextNotSearchSystemClasspath3() throws Exception{
205 context.addClasspath(new File("target/classes").toURI().toURL());
206 context.setIncludeSystemClasses(false);
208 ClasspathContext subContext = new ClasspathContext(context);
209 // always success to load
210 Assert.assertNotNull(subContext.findClass("java.lang.Object"));
211 // success because addClasspath method was called above.
212 Assert.assertNotNull(subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
216 public void testSubContextNotSearchSystemClasspath4() throws Exception{
217 context.addClasspath(new File("target/classes").toURI().toURL());
218 context.addClasspath(new File(ASM_FILE).toURI().toURL());
219 context.setIncludeSystemClasses(false);
221 ClasspathContext subContext = new ClasspathContext(context);
222 Assert.assertNotNull(subContext.findClass("java.lang.Object"));
223 Assert.assertNotNull(subContext.findClass("jp.sourceforge.stigmata.digger.ClasspathContext"));
224 Assert.assertNotNull(subContext.findClass("org.objectweb.asm.ClassReader"));
228 public void testWarLoader() throws Exception{
229 context.addClasspath(new File("target/test-classes/resources/samplewar.war").toURI().toURL());
231 Assert.assertNotNull(context.findClass("HelloWorld"));
233 ClasspathContext subContext = new ClasspathContext(context);
234 Assert.assertNotNull(subContext.findClass("HelloWorld"));