1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.struts.action;
22
23 import junit.framework.Test;
24 import junit.framework.TestCase;
25 import junit.framework.TestSuite;
26
27 import org.apache.commons.beanutils.DynaProperty;
28 import org.apache.struts.config.FormBeanConfig;
29 import org.apache.struts.config.FormPropertyConfig;
30
31
32
33
34
35 public class TestDynaActionFormClass extends TestCase {
36
37
38
39
40 protected static final FormPropertyConfig[] dynaProperties =
41 {
42 new FormPropertyConfig("booleanProperty", "boolean", "true", "true"),
43 new FormPropertyConfig("booleanSecond", "boolean", "true", "true"),
44 new FormPropertyConfig("doubleProperty", "double", "321.0", "GET"),
45 new FormPropertyConfig("floatProperty", "float", "123.0",
46 "POST, HEAD"),
47 new FormPropertyConfig("intArray", "int[]",
48 "{ 0, 10,20, \"30\" '40' }"),
49 new FormPropertyConfig("intIndexed", "int[]",
50 " 0 100, 200, 300, 400 "),
51 new FormPropertyConfig("intProperty", "int", "123"),
52 new FormPropertyConfig("listIndexed", "java.util.List", null),
53 new FormPropertyConfig("longProperty", "long", "321"),
54 new FormPropertyConfig("mappedProperty", "java.util.Map", null),
55 new FormPropertyConfig("mappedIntProperty", "java.util.Map", null),
56
57
58
59 new FormPropertyConfig("shortProperty", "short", "987"),
60 new FormPropertyConfig("stringArray", "java.lang.String[]",
61 "{ 'String 0', 'String 1', 'String 2', 'String 3', 'String 4'}"),
62 new FormPropertyConfig("stringIndexed", "java.lang.String[]",
63 "{ 'String 0', 'String 1', 'String 2', 'String 3', 'String 4'}"),
64 new FormPropertyConfig("stringProperty", "java.lang.String",
65 "This is a string"),
66 };
67
68
69
70
71
72
73
74 protected FormBeanConfig beanConfig = null;
75
76
77
78
79 protected DynaActionFormClass dynaClass = null;
80
81
82
83
84
85
86 public TestDynaActionFormClass(String theName) {
87 super(theName);
88 }
89
90
91
92
93
94
95 public static void main(String[] theArgs) {
96 junit.awtui.TestRunner.main(new String[] {
97 TestDynaActionFormClass.class.getName()
98 });
99 }
100
101
102
103
104
105 public static Test suite() {
106
107 return new TestSuite(TestDynaActionFormClass.class);
108 }
109
110
111 public void setUp() {
112
113 beanConfig = new FormBeanConfig();
114 beanConfig.setName("dynaForm");
115 beanConfig.setType("org.apache.struts.action.DynaActionForm");
116
117
118 for (int i = 0; i < dynaProperties.length; i++) {
119 beanConfig.addFormPropertyConfig(dynaProperties[i]);
120 }
121
122
123 dynaClass = new DynaActionFormClass(beanConfig);
124 }
125
126 public void tearDown() {
127 dynaClass = null;
128 beanConfig = null;
129 }
130
131
132
133 public void testConfigAdd() {
134 FormPropertyConfig prop = null;
135
136
137 prop = beanConfig.findFormPropertyConfig("fooProperty");
138 assertNull("fooProperty not found", prop);
139 beanConfig.addFormPropertyConfig(new FormPropertyConfig("fooProperty",
140 "java.lang.String", ""));
141 prop = beanConfig.findFormPropertyConfig("fooProperty");
142 assertNotNull("fooProperty found", prop);
143
144
145 beanConfig.freeze();
146 prop = beanConfig.findFormPropertyConfig("barProperty");
147 assertNull("barProperty not found", prop);
148
149 try {
150 beanConfig.addFormPropertyConfig(new FormPropertyConfig(
151 "barProperty", "java.lang.String", ""));
152 fail("barProperty add not prevented");
153 } catch (IllegalStateException e) {
154 ;
155 }
156 }
157
158
159 public void testConfigCreate() {
160 assertTrue("dynamic is correct", beanConfig.getDynamic());
161 assertEquals("name is correct", "dynaForm", beanConfig.getName());
162 assertEquals("type is correct",
163 "org.apache.struts.action.DynaActionForm", beanConfig.getType());
164 }
165
166
167 public void testConfigDuplicate() {
168 FormPropertyConfig prop = null;
169
170 assertNull("booleanProperty is found", prop);
171
172 try {
173 beanConfig.addFormPropertyConfig(new FormPropertyConfig(
174 "booleanProperty", "java.lang.String", ""));
175 fail("Adding duplicate property not prevented");
176 } catch (IllegalArgumentException e) {
177 ;
178 }
179 }
180
181
182 public void testConfigInitialValues() {
183 assertEquals("booleanProperty value", Boolean.TRUE,
184 beanConfig.findFormPropertyConfig("booleanProperty").initial());
185 assertEquals("booleanSecond value", Boolean.TRUE,
186 beanConfig.findFormPropertyConfig("booleanSecond").initial());
187 assertEquals("doubleProperty value", new Double(321.0),
188 beanConfig.findFormPropertyConfig("doubleProperty").initial());
189 assertEquals("floatProperty value", new Float((float) 123.0),
190 beanConfig.findFormPropertyConfig("floatProperty").initial());
191 assertEquals("intProperty value", new Integer(123),
192 beanConfig.findFormPropertyConfig("intProperty").initial());
193
194
195 assertEquals("longProperty value", new Long(321),
196 beanConfig.findFormPropertyConfig("longProperty").initial());
197
198
199
200
201
202 assertEquals("shortProperty value", new Short((short) 987),
203 beanConfig.findFormPropertyConfig("shortProperty").initial());
204
205
206
207 assertEquals("stringProperty value", "This is a string",
208 beanConfig.findFormPropertyConfig("stringProperty").initial());
209 }
210
211
212 public void testConfigProperties() {
213 for (int i = 0; i < dynaProperties.length; i++) {
214 FormPropertyConfig dynaProperty =
215 beanConfig.findFormPropertyConfig(dynaProperties[i].getName());
216
217 assertNotNull("Found dynaProperty " + dynaProperties[i].getName(),
218 dynaProperty);
219 assertEquals("dynaProperty name for " + dynaProperties[i].getName(),
220 dynaProperties[i].getName(), dynaProperty.getName());
221 assertEquals("dynaProperty type for " + dynaProperties[i].getName(),
222 dynaProperties[i].getType(), dynaProperty.getType());
223 assertEquals("dynaProperty initial for "
224 + dynaProperties[i].getName(), dynaProperties[i].getInitial(),
225 dynaProperty.getInitial());
226 }
227 }
228
229
230 public void testConfigRemove() {
231 FormPropertyConfig prop = null;
232
233
234 prop = beanConfig.findFormPropertyConfig("booleanProperty");
235 assertNotNull("booleanProperty found", prop);
236 beanConfig.removeFormPropertyConfig(prop);
237 prop = beanConfig.findFormPropertyConfig("booleanProperty");
238 assertNull("booleanProperty not deleted", prop);
239
240
241 beanConfig.freeze();
242 prop = beanConfig.findFormPropertyConfig("booleanSecond");
243 assertNotNull("booleanSecond found", prop);
244
245 try {
246 beanConfig.removeFormPropertyConfig(prop);
247 fail("booleanSecond remove not prevented");
248 } catch (IllegalStateException e) {
249 ;
250 }
251 }
252
253
254
255 public void testClassCreate() {
256 assertEquals("name", "dynaForm", dynaClass.getName());
257
258 for (int i = 0; i < dynaProperties.length; i++) {
259 DynaProperty prop =
260 dynaClass.getDynaProperty(dynaProperties[i].getName());
261
262 assertNotNull("Found property " + dynaProperties[i].getName());
263 assertEquals("Class for property " + dynaProperties[i].getName(),
264 dynaProperties[i].getTypeClass(), prop.getType());
265 }
266 }
267 }