MentaContainer

Rev

Rev 88 | Rev 92 | 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
 
199
                Factory f = new ClassFactory(TestObj3_1.class).addInitValue(new Integer(20));
200
 
201
                TestObj3_1 o = f.getInstance();
202
 
203
                Assert.assertEquals(20, o.x);
204
        }
205
 
206
 
207
        private static class TestObj4 {
208
 
209
                int x;
210
                String s;
211
                Long l1;
212
                long l2;
213
 
214
                public TestObj4(int x, String s, Long l1, long l2) {
215
                        this.x = x;
216
                        this.s = s;
217
                        this.l1 = l1;
218
                        this.l2 = l2;
219
                }
220
        }
221
 
222
        @Test
223
        public void testMixInitValues() {
224
 
225
                Factory f = new ClassFactory(TestObj4.class).addInitValue(20).addInitValue("hello").addInitValue(new Long(20)).addInitValue(20L);
226
 
227
                TestObj4 o = f.getInstance();
228
 
229
                Assert.assertEquals(20, o.x);
230
                Assert.assertEquals("hello", o.s);
231
                Assert.assertEquals(new Long(20), o.l1);
232
                Assert.assertEquals(20, o.l2);
233
        }
24 soliveira 234
}