1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.beanutils;
19
20 import junit.framework.TestCase;
21
22
23
24
25
26
27
28 public class BeanToPropertyValueTransformerTestCase extends TestCase {
29
30 private static final Integer expectedIntegerValue = new Integer(123);
31 private static final Long expectedLongValue = new Long(123);
32 private static final Float expectedFloatValue = new Float(123.123f);
33 private static final Double expectedDoubleValue = new Double(567879.12344d);
34 private static final Boolean expectedBooleanValue = Boolean.TRUE;
35 private static final Byte expectedByteValue = new Byte("12");
36
37
38
39
40
41
42 public BeanToPropertyValueTransformerTestCase(final String name) {
43 super(name);
44 }
45
46
47
48
49 public void testTransformWithSimpleStringProperty() {
50 final BeanToPropertyValueTransformer transformer =
51 new BeanToPropertyValueTransformer("stringProperty");
52 final TestBean testBean = new TestBean("foo");
53 assertEquals("foo", transformer.transform(testBean));
54 }
55
56
57
58
59
60 public void testTransformWithSimpleStringPropertyAndNullValue() {
61 final BeanToPropertyValueTransformer transformer =
62 new BeanToPropertyValueTransformer("stringProperty");
63 final TestBean testBean = new TestBean((String) null);
64 assertNull(transformer.transform(testBean));
65 }
66
67
68
69
70 public void testTransformWithSimpleIntProperty() {
71 final BeanToPropertyValueTransformer transformer =
72 new BeanToPropertyValueTransformer("intProperty");
73 final TestBean testBean = new TestBean(expectedIntegerValue.intValue());
74 assertEquals(expectedIntegerValue, transformer.transform(testBean));
75 }
76
77
78
79
80 public void testTransformWithSimpleLongProperty() {
81 final BeanToPropertyValueTransformer transformer =
82 new BeanToPropertyValueTransformer("longProperty");
83 final TestBean testBean = new TestBean();
84 testBean.setLongProperty(expectedLongValue.longValue());
85 assertEquals(expectedLongValue, transformer.transform(testBean));
86 }
87
88
89
90
91 public void testTransformWithSimpleFloatProperty() {
92 final BeanToPropertyValueTransformer transformer =
93 new BeanToPropertyValueTransformer("floatProperty");
94 final TestBean testBean = new TestBean(expectedFloatValue.floatValue());
95 assertEquals(expectedFloatValue, transformer.transform(testBean));
96 }
97
98
99
100
101 public void testTransformWithSimpleDoubleProperty() {
102 final BeanToPropertyValueTransformer transformer =
103 new BeanToPropertyValueTransformer("doubleProperty");
104 final TestBean testBean = new TestBean(expectedDoubleValue.doubleValue());
105 assertEquals(expectedDoubleValue, transformer.transform(testBean));
106 }
107
108
109
110
111 public void testTransformWithSimpleByteProperty() {
112 final BeanToPropertyValueTransformer transformer =
113 new BeanToPropertyValueTransformer("byteProperty");
114 final TestBean testBean = new TestBean();
115 testBean.setByteProperty(expectedByteValue.byteValue());
116 assertEquals(expectedByteValue, transformer.transform(testBean));
117 }
118
119
120
121
122 public void testTransformWithSimpleBooleanProperty() {
123 final BeanToPropertyValueTransformer transformer =
124 new BeanToPropertyValueTransformer("booleanProperty");
125 final TestBean testBean = new TestBean(expectedBooleanValue.booleanValue());
126 assertEquals(expectedBooleanValue, transformer.transform(testBean));
127 }
128
129
130
131
132 public void testTransformWithWriteOnlyProperty() {
133 try {
134 new BeanToPropertyValueTransformer("writeOnlyProperty").transform(new TestBean());
135 } catch (final IllegalArgumentException e) {
136
137 }
138 }
139
140
141
142
143 public void testTransformWithReadOnlyProperty() {
144 final BeanToPropertyValueTransformer transformer =
145 new BeanToPropertyValueTransformer("readOnlyProperty");
146 final TestBean testBean = new TestBean();
147 assertEquals(testBean.getReadOnlyProperty(), transformer.transform(testBean));
148 }
149
150
151
152
153 public void testTransformWithInvalidProperty() {
154 try {
155 new BeanToPropertyValueTransformer("bogusProperty").transform(new TestBean());
156 } catch (final IllegalArgumentException e) {
157
158 }
159 }
160
161
162
163
164 public void testTransformWithNestedProperty() {
165 final BeanToPropertyValueTransformer transformer =
166 new BeanToPropertyValueTransformer("anotherNested.stringProperty");
167 final TestBean testBean = new TestBean();
168 final TestBean nestedBean = new TestBean("foo");
169 testBean.setAnotherNested(nestedBean);
170 assertEquals("foo", transformer.transform(testBean));
171 }
172
173
174
175
176 public void testTransformWithMappedProperty() {
177 BeanToPropertyValueTransformer transformer =
178 new BeanToPropertyValueTransformer("mappedProperty(test-key)");
179 final TestBean testBean = new TestBean();
180
181
182 testBean.setMappedProperty("test-key", "test-value");
183 assertEquals("test-value", transformer.transform(testBean));
184
185
186 transformer = new BeanToPropertyValueTransformer("mappedProperty(bogus-key)");
187 assertEquals(null, transformer.transform(testBean));
188 }
189
190
191
192
193 public void testTransformWithIndexedProperty() {
194 BeanToPropertyValueTransformer transformer =
195 new BeanToPropertyValueTransformer("intIndexed[0]");
196 final TestBean testBean = new TestBean();
197 testBean.setIntIndexed(0, expectedIntegerValue.intValue());
198 assertEquals(expectedIntegerValue, transformer.transform(testBean));
199
200
201 transformer = new BeanToPropertyValueTransformer("intIndexed[9999]");
202
203 try {
204 transformer.transform(testBean);
205 fail("Should have thrown an ArrayIndexOutOfBoundsException");
206 } catch (final ArrayIndexOutOfBoundsException e) {
207
208 }
209 }
210
211
212
213
214 public void testTransformWithNestedIndexedProperty() {
215 final BeanToPropertyValueTransformer transformer =
216 new BeanToPropertyValueTransformer("anotherNested.intIndexed[0]");
217 final TestBean testBean = new TestBean();
218 final TestBean nestedBean = new TestBean();
219 nestedBean.setIntIndexed(0, expectedIntegerValue.intValue());
220 testBean.setAnotherNested(nestedBean);
221 assertEquals(expectedIntegerValue, transformer.transform(testBean));
222 }
223
224
225
226
227 public void testTransformWithNullInPath() {
228 final BeanToPropertyValueTransformer transformer =
229 new BeanToPropertyValueTransformer("anotherNested.stringProperty");
230
231 try {
232 transformer.transform(new TestBean());
233 fail("Should have throw IllegalArgumentException");
234 } catch (final IllegalArgumentException e) {
235
236 }
237 }
238
239
240
241
242 public void testTransformWithNullInPathAndIgnoreTrue() {
243 final BeanToPropertyValueTransformer transformer =
244 new BeanToPropertyValueTransformer("anotherNested.stringProperty",true);
245 assertEquals(null, transformer.transform(new TestBean()));
246 }
247 }