MentaContainer

Rev

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