KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > picocontainer > doc > advanced > ArraysTestCase


1 package org.picocontainer.doc.advanced;
2
3 import junit.framework.TestCase;
4
5 import org.picocontainer.MutablePicoContainer;
6 import org.picocontainer.Parameter;
7 import org.picocontainer.defaults.CollectionComponentParameter;
8 import org.picocontainer.defaults.ComponentParameter;
9 import org.picocontainer.defaults.DefaultPicoContainer;
10
11 import java.util.Arrays JavaDoc;
12 import java.util.List JavaDoc;
13
14
15 /**
16  * @author Aslak Hellesøy
17  * @author Jörg Schaible
18  * @version $Revision: 1804 $
19  */

20 public class ArraysTestCase
21         extends TestCase
22         implements CollectionDemoClasses {
23     private MutablePicoContainer pico;
24
25     protected void setUp() throws Exception JavaDoc {
26         pico = new DefaultPicoContainer();
27     }
28
29     private void explanation() {
30         // START SNIPPET: explanation
31

32         Shark shark = new Shark();
33         Cod cod = new Cod();
34
35         Fish[] fishes = new Fish[]{shark, cod};
36         Cod[] cods = new Cod[]{cod};
37
38         Bowl bowl = new Bowl(fishes, cods);
39         // END SNIPPET: explanation
40
}
41
42     // START SNIPPET: bowl
43

44     public static class Bowl {
45         private final Fish[] fishes;
46         private final Cod[] cods;
47
48         public Bowl(Fish[] fishes, Cod[] cods) {
49             this.fishes = fishes;
50             this.cods = cods;
51         }
52
53         public Fish[] getFishes() {
54             return fishes;
55         }
56
57         public Cod[] getCods() {
58             return cods;
59         }
60     }
61
62     // END SNIPPET: bowl
63

64     public void testShouldCreateBowlWithFishCollection() {
65
66         // START SNIPPET: usage
67

68         pico.registerComponentImplementation(Shark.class);
69         pico.registerComponentImplementation(Cod.class);
70         pico.registerComponentImplementation(Bowl.class);
71
72         Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class);
73         // END SNIPPET: usage
74

75         Shark shark = (Shark) pico.getComponentInstanceOfType(Shark.class);
76         Cod cod = (Cod) pico.getComponentInstanceOfType(Cod.class);
77
78         List JavaDoc fishes = Arrays.asList(bowl.getFishes());
79         assertEquals(2, fishes.size());
80         assertTrue(fishes.contains(shark));
81         assertTrue(fishes.contains(cod));
82
83         List JavaDoc cods = Arrays.asList(bowl.getCods());
84         assertEquals(1, cods.size());
85         assertTrue(cods.contains(cod));
86     }
87
88     public void testShouldCreateBowlWithCodsOnly() {
89
90         // START SNIPPET: directUsage
91

92         pico.registerComponentImplementation(Shark.class);
93         pico.registerComponentImplementation(Cod.class);
94         pico.registerComponentImplementation(Bowl.class);
95         pico.registerComponentInstance(new Fish[]{});
96
97         Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class);
98         // END SNIPPET: directUsage
99

100         Cod cod = (Cod) pico.getComponentInstanceOfType(Cod.class);
101
102         // START SNIPPET: directDemo
103

104         List JavaDoc cods = Arrays.asList(bowl.getCods());
105         assertEquals(1, cods.size());
106
107         List JavaDoc fishes = Arrays.asList(bowl.getFishes());
108         assertEquals(0, fishes.size());
109         // END SNIPPET: directDemo
110

111         assertTrue(cods.contains(cod));
112     }
113
114     public void testShouldCreateBowlWithFishCollectionAnyway() {
115
116         // START SNIPPET: ensureArray
117

118         pico.registerComponentImplementation(Shark.class);
119         pico.registerComponentImplementation(Cod.class);
120         Parameter parameter = new CollectionComponentParameter();
121         pico.registerComponentImplementation(Bowl.class, Bowl.class, new Parameter[]{parameter, parameter});
122         pico.registerComponentInstance(new Fish[]{});
123         pico.registerComponentInstance(new Cod[]{});
124
125         Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class);
126         // END SNIPPET: ensureArray
127

128         Shark shark = (Shark) pico.getComponentInstanceOfType(Shark.class);
129         Cod cod = (Cod) pico.getComponentInstanceOfType(Cod.class);
130
131         // START SNIPPET: ensureDemo
132

133         List JavaDoc fishes = Arrays.asList(bowl.getFishes());
134         assertEquals(2, fishes.size());
135
136         List JavaDoc cods = Arrays.asList(bowl.getCods());
137         assertEquals(1, cods.size());
138         // END SNIPPET: ensureDemo
139

140         assertTrue(fishes.contains(shark));
141         assertTrue(fishes.contains(cod));
142         assertTrue(cods.contains(cod));
143     }
144
145     public void testShouldCreateBowlWithNoFishAtAll() {
146
147         // START SNIPPET: emptyArray
148

149         Parameter parameter = CollectionComponentParameter.ARRAY_ALLOW_EMPTY;
150         pico.registerComponentImplementation(Bowl.class, Bowl.class, new Parameter[]{parameter, parameter});
151
152         Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class);
153         // END SNIPPET: emptyArray
154

155         List JavaDoc fishes = Arrays.asList(bowl.getFishes());
156         assertEquals(0, fishes.size());
157         List JavaDoc cods = Arrays.asList(bowl.getCods());
158         assertEquals(0, cods.size());
159     }
160
161     public void testShouldCreateBowlWithNamedFishesOnly() {
162
163         // START SNIPPET: useKeyType
164

165         pico.registerComponentImplementation(Shark.class);
166         pico.registerComponentImplementation("Nemo", Cod.class);
167         pico.registerComponentImplementation(Bowl.class, Bowl.class, new Parameter[]{
168                 new ComponentParameter(String JavaDoc.class, Fish.class, false), new ComponentParameter(Cod.class, false)});
169
170         Bowl bowl = (Bowl) pico.getComponentInstanceOfType(Bowl.class);
171         // END SNIPPET: useKeyType
172

173         // START SNIPPET: ensureKeyType
174

175         List JavaDoc fishes = Arrays.asList(bowl.getFishes());
176         List JavaDoc cods = Arrays.asList(bowl.getCods());
177         assertEquals(1, fishes.size());
178         assertEquals(1, cods.size());
179         assertEquals(fishes, cods);
180         // END SNIPPET: ensureKeyType
181
}
182 }
Popular Tags