1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 package org.seasar.groovy;
48
49 import java.util.List;
50
51 import junit.framework.TestCase;
52
53 import org.seasar.framework.container.S2Container;
54 import org.seasar.framework.container.factory.S2ContainerFactory;
55 import org.seasar.framework.container.impl.S2ContainerImpl;
56
57
58 /***
59 * @author takai
60 */
61 public class S2ContainerGroovyFactoryTest
62 extends TestCase
63 {
64 private static final String TEST_FILE =
65 "org/seasar/groovy/TestFactory.groovy";
66
67 public void testBuild() {
68 S2ContainerGroovyFactory factory = new S2ContainerGroovyFactory();
69 S2Container container = factory.build(TEST_FILE);
70
71 assertNotNull(container);
72 assertTrue(container.getComponent(List.class) instanceof List);
73 }
74
75 public void testBuildWithClassLoader() {
76 MyLoader loader = new MyLoader(Thread.currentThread().getContextClassLoader());
77 S2ContainerGroovyFactory factory = new S2ContainerGroovyFactory();
78
79 try {
80 S2Container container = factory.build(TEST_FILE, loader);
81 fail("should be thrown NoClassDefFoundError");
82 } catch (SeasarBuilderException e) {
83 assertTrue(loader.visited);
84 }
85 }
86
87 public void testBuildWithParent() {
88 S2Container parent = new S2ContainerImpl();
89
90 S2ContainerGroovyFactory factory = new S2ContainerGroovyFactory();
91 S2Container container = factory.include(parent, TEST_FILE);
92
93 assertNotNull(container);
94 assertTrue(container.getComponent(List.class) instanceof List);
95
96 }
97
98 public void testCreate() {
99 S2Container container = S2ContainerGroovyFactory.create(TEST_FILE);
100 assertNotNull(container);
101 assertTrue(container.getComponent(List.class) instanceof List);
102
103 try {
104 S2Container container2 =
105 S2ContainerGroovyFactory.create("no/such/File");
106 fail("should be thrown SeasarBuilderException.");
107 } catch (SeasarBuilderException e) {
108 }
109
110 try {
111 S2Container container2 =
112 S2ContainerGroovyFactory.create("org/seasar/groovy/TestFactoryEmptyFile.groovy");
113 fail("should be thrown SeasarBuilderException.");
114 } catch (SeasarBuilderException e) {
115 }
116 }
117
118 public void testS2Builder(){
119 S2Container container = S2ContainerFactory.create("org/seasar/groovy/TestFactory.groovy");
120 assertNotNull(container);
121 assertTrue(container.getComponent(List.class) instanceof List);
122 }
123
124 class MyLoader
125 extends ClassLoader
126 {
127 public boolean visited = false;
128
129 public MyLoader(ClassLoader loader){
130 super(loader);
131 }
132
133 protected synchronized Class loadClass(String name, boolean resolve)
134 throws ClassNotFoundException
135 {
136 if (name.equals("java.util.ArrayList")) {
137 visited = true;
138 throw new ClassNotFoundException();
139 } else {
140 return Class.forName(name);
141 }
142 }
143 }
144 }