MentaContainer

Rev

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