MentaContainer

Rev

Rev 91 | Rev 93 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
24 soliveira 1
package org.mentacontainer.impl;
2
 
3
import junit.framework.Assert;
4
 
5
import org.junit.Test;
91 soliveira 6
import org.mentacontainer.Container;
88 soliveira 7
import org.mentacontainer.Factory;
24 soliveira 8
 
88 soliveira 9
public class ClassFactoryTest {
24 soliveira 10
 
11
        private static class User {
12
 
13
                private String username;
14
 
15
                public User() { }
16
 
17
                public User(String username) {
18
                        this.username = username;
19
                }
20
 
21
                public String getUsername() {
22
                        return username;
23
                }
24
 
25
                public void setUsername(String username) {
26
                        this.username = username;
27
                }
28
        }
29
 
30
        @Test
91 soliveira 31
        public void testFactory() {
24 soliveira 32
 
88 soliveira 33
                Factory c1 = new ClassFactory(User.class).addInitValue("saoj");
24 soliveira 34
 
91 soliveira 35
                Factory c2 = new ClassFactory(User.class).addPropertyValue("username", "soliveira");
24 soliveira 36
 
41 soliveira 37
                User u1 = c1.getInstance();
24 soliveira 38
 
41 soliveira 39
                User u2 = c2.getInstance();
24 soliveira 40
 
41
                Assert.assertTrue(u1 != u2);
42
 
43
                Assert.assertTrue(!u1.getUsername().equals(u2.getUsername()));
44
        }
91 soliveira 45
 
46
        private static class TestObj1 {
47
 
48
                String s;
49
                int i;
50
                long l;
51
                User u;
52
 
53
                public TestObj1(String s, int i, long l, User u) {
54
                        this.s = s;
55
                        this.i = i;
56
                        this.l = l;
57
                        this.u = u;
58
                }
59
        }
60
 
61
        @Test
62
        public void testDependable1() {
63
 
64
                Container c = new MentaContainer();
65
 
66
                c.ioc("myString", String.class).addInitValue("hello");
67
 
68
                Factory c1 = new ClassFactory(c, TestObj1.class).addInitDependency("myString").addInitValue(20).addInitValue(30000L)
69
                                .addInitValue(new User("saoj"));
70
 
71
                TestObj1 o = c1.getInstance();
72
 
73
                Assert.assertEquals("hello", o.s);
74
                Assert.assertEquals(20, o.i);
75
                Assert.assertEquals(30000L, o.l);
76
                Assert.assertEquals("saoj", o.u.getUsername());
77
        }
78
 
79
        private static class TestObj1_1 {
80
 
81
                String s;
82
                int i;
83
 
84
                public TestObj1_1() { }
85
 
86
                public void setS(String s) { this.s = s; }
87
                public void setI(int i) { this.i = i; }
88
        }
89
 
90
        @Test
91
        public void testDependable2() {
92
 
93
                Container c = new MentaContainer();
94
 
95
                c.ioc("myString", String.class).addInitValue("hello");
96
 
97
                Factory c1 = new ClassFactory(c, TestObj1_1.class).addPropertyDependency("s", "myString").addPropertyValue("i", 30);
98
 
99
                TestObj1_1 o = c1.getInstance();
100
 
101
                Assert.assertEquals("hello", o.s);
102
                Assert.assertEquals(30, o.i);
103
        }
104
 
105
        private static class TestObj2 {
106
 
107
                int x;
108
 
109
                public TestObj2() { }
110
 
111
                public void setInteger(int x) {
112
                        this.x = x;
113
                }
114
        }
115
 
116
        @Test
117
        public void testPrimitivePropertyValue1() {
118
 
119
                Factory f = new ClassFactory(TestObj2.class).addPropertyValue("integer", 20);
120
 
121
                TestObj2 o = f.getInstance();
122
 
123
                Assert.assertEquals(20, o.x);
124
        }
125
 
126
        @Test
127
        public void testPrimitivePropertyValue2() {
128
 
129
                Factory f = new ClassFactory(TestObj2.class).addPropertyValue("integer", new Integer(20));
130
 
131
                TestObj2 o = f.getInstance();
132
 
133
                Assert.assertEquals(20, o.x);
134
        }
135
 
136
        private static class TestObj2_1 {
137
 
138
                int x;
139
 
140
                public TestObj2_1() { }
141
 
142
                public void setInteger(Integer x) {
143
                        this.x = x;
144
                }
145
        }      
146
 
147
        @Test
148
        public void testPrimitivePropertyValue3() {
149
 
150
                Factory f = new ClassFactory(TestObj2_1.class).addPropertyValue("integer", 20);
151
 
152
                TestObj2_1 o = f.getInstance();
153
 
154
                Assert.assertEquals(20, o.x);
155
        }
156
 
157
        @Test
158
        public void testPrimitivePropertyValue4() {
159
 
160
                Factory f = new ClassFactory(TestObj2_1.class).addPropertyValue("integer", new Integer(20));
161
 
162
                TestObj2_1 o = f.getInstance();
163
 
164
                Assert.assertEquals(20, o.x);
165
        }      
166
 
167
 
168
        private static class TestObj3 {
169
 
170
                int x;
171
 
172
                public TestObj3(int x) {
173
                        this.x = x;
174
                }
175
        }
176
 
177
        @Test
178
        public void testPrimitiveInitValue1() {
179
 
180
                Factory f = new ClassFactory(TestObj3.class).addInitValue(20);
181
 
182
                TestObj3 o = f.getInstance();
183
 
184
                Assert.assertEquals(20, o.x);
185
        }
186
 
187
        private static class TestObj3_1 {
188
 
189
                int x;
190
 
191
                public TestObj3_1(Integer x) {
192
                        this.x = x;
193
                }
194
        }
195
 
196
        @Test
197
        public void testPrimitiveInitValue2() {
198
 
92 soliveira 199
                Factory f = new ClassFactory(TestObj3_1.class).addInitValue(20);
91 soliveira 200
 
201
                TestObj3_1 o = f.getInstance();
202
 
203
                Assert.assertEquals(20, o.x);
204
        }
205
 
92 soliveira 206
        private static class TestObj3_2 {
207
 
208
                int x;
209
                long l;
210
 
211
                public TestObj3_2(Integer x, long l) {
212
                        this.x = x;
213
                        this.l = l;
214
                }
215
        }
91 soliveira 216
 
92 soliveira 217
        @Test
218
        public void testPrimitiveInitValue3() {
219
 
220
                Factory f = new ClassFactory(TestObj3_2.class).addInitValue(20).addInitPrimitive(30L);
221
 
222
                TestObj3_2 o = f.getInstance();
223
 
224
                Assert.assertEquals(20, o.x);
225
                Assert.assertEquals(30L, o.l);
226
        }      
227
 
91 soliveira 228
        private static class TestObj4 {
229
 
230
                int x;
231
                String s;
232
                Long l1;
233
                long l2;
234
 
235
                public TestObj4(int x, String s, Long l1, long l2) {
236
                        this.x = x;
237
                        this.s = s;
238
                        this.l1 = l1;
239
                        this.l2 = l2;
240
                }
241
        }
242
 
243
        @Test
244
        public void testMixInitValues() {
245
 
92 soliveira 246
                Factory f = new ClassFactory(TestObj4.class).addInitPrimitive(20).addInitValue("hello").addInitValue(20L).addInitPrimitive(20L);
91 soliveira 247
 
248
                TestObj4 o = f.getInstance();
249
 
250
                Assert.assertEquals(20, o.x);
251
                Assert.assertEquals("hello", o.s);
252
                Assert.assertEquals(new Long(20), o.l1);
253
                Assert.assertEquals(20, o.l2);
254
        }
24 soliveira 255
}