KickJava   Java API By Example, From Geeks To Geeks.

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


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.Collection JavaDoc;
12 import java.util.HashSet JavaDoc;
13 import java.util.LinkedList JavaDoc;
14 import java.util.Set JavaDoc;
15
16
17 /**
18  * @author Jörg Schaible
19  * @version $Revision: 1796 $
20  */

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

32     public static class Bowl {
33         private final LinkedList JavaDoc fishes;
34         private final Collection JavaDoc cods;
35
36         public Bowl(LinkedList JavaDoc fishes, Collection JavaDoc cods) {
37             this.fishes = fishes;
38             this.cods = cods;
39         }
40
41         public Collection JavaDoc getFishes() {
42             return fishes;
43         }
44
45         public Collection JavaDoc getCods() {
46             return cods;
47         }
48     }
49
50     // END SNIPPET: bowl
51

52     public void testShouldCreateBowlWithFishCollection() {
53
54         // START SNIPPET: usage
55

56         pico.registerComponentImplementation(Shark.class);
57         pico.registerComponentImplementation(Cod.class);
58         pico.registerComponentImplementation(Bowl.class, Bowl.class, new Parameter[]{
59                 new ComponentParameter(Fish.class, false), new ComponentParameter(Cod.class, false)});
60         // END SNIPPET: usage
61

62         Shark shark = (Shark) pico.getComponentInstanceOfType(Shark.class);
63         Cod cod = (Cod) pico.getComponentInstanceOfType(Cod.class);
64         Bowl bowl = (Bowl) pico.getComponentInstanceOfType(Bowl.class);
65
66         Collection JavaDoc fishes = bowl.getFishes();
67         assertEquals(2, fishes.size());
68         assertTrue(fishes.contains(shark));
69         assertTrue(fishes.contains(cod));
70
71         Collection JavaDoc cods = bowl.getCods();
72         assertEquals(1, cods.size());
73         assertTrue(cods.contains(cod));
74     }
75
76     public void testShouldCreateBowlWithFishesOnly() {
77
78         // START SNIPPET: directUsage
79

80         final Set JavaDoc set = new HashSet JavaDoc();
81         pico.registerComponentImplementation(Shark.class);
82         pico.registerComponentImplementation(Cod.class);
83         pico.registerComponentImplementation(Bowl.class, Bowl.class, new Parameter[]{
84                 new ComponentParameter(Fish.class, false), new ComponentParameter(Cod.class, false)});
85         pico.registerComponentInstance(set);
86
87         Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class);
88         // END SNIPPET: directUsage
89

90         Shark shark = (Shark) pico.getComponentInstanceOfType(Shark.class);
91         Cod cod = (Cod) pico.getComponentInstanceOfType(Cod.class);
92
93         // START SNIPPET: directDemo
94

95         Collection JavaDoc cods = bowl.getCods();
96         assertEquals(0, cods.size());
97         assertSame(set, cods);
98
99         Collection JavaDoc fishes = bowl.getFishes();
100         assertEquals(2, fishes.size());
101         // END SNIPPET: directDemo
102

103         assertTrue(fishes.contains(cod));
104         assertTrue(fishes.contains(shark));
105     }
106
107     public void testShouldCreateBowlWithFishCollectionAnyway() {
108
109         // START SNIPPET: ensureCollection
110

111         pico.registerComponentImplementation(Shark.class);
112         pico.registerComponentImplementation(Cod.class);
113         pico.registerComponentImplementation(Bowl.class, Bowl.class, new Parameter[]{
114                 new CollectionComponentParameter(Fish.class, false), new CollectionComponentParameter(Cod.class, false)});
115         // This component will match both arguments of Bowl's constructor
116
pico.registerComponentInstance(new LinkedList JavaDoc());
117
118         Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class);
119         // END SNIPPET: ensureCollection
120

121         Shark shark = (Shark) pico.getComponentInstanceOfType(Shark.class);
122         Cod cod = (Cod) pico.getComponentInstanceOfType(Cod.class);
123
124         Collection JavaDoc fishes = bowl.getFishes();
125         assertEquals(2, fishes.size());
126         Collection JavaDoc cods = bowl.getCods();
127         assertEquals(1, cods.size());
128
129         assertTrue(fishes.contains(shark));
130         assertTrue(fishes.contains(cod));
131         assertTrue(cods.contains(cod));
132     }
133
134     public void testShouldCreateBowlWithNoFishAtAll() {
135
136         // START SNIPPET: emptyCollection
137

138         pico.registerComponentImplementation(Bowl.class, Bowl.class, new Parameter[]{
139                 new ComponentParameter(Fish.class, true), new ComponentParameter(Cod.class, true)});
140
141         Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class);
142         // END SNIPPET: emptyCollection
143

144         Collection JavaDoc fishes = bowl.getFishes();
145         assertEquals(0, fishes.size());
146         Collection JavaDoc cods = bowl.getCods();
147         assertEquals(0, cods.size());
148     }
149 }
Popular Tags