1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.commons.validator;
23
24 import junit.framework.TestCase;
25
26 /***
27 * Test <code>Field</code> objects.
28 */
29 public class FieldTest extends TestCase {
30
31
32 protected Field field;
33
34 /***
35 * FieldTest constructor.
36 */
37 public FieldTest() {
38 super();
39 }
40
41 /***
42 * FieldTest constructor.
43 * @param name
44 */
45 public FieldTest(String name) {
46 super(name);
47 }
48
49 /***
50 * Test setup
51 */
52 public void setUp() {
53 field = new Field();
54 }
55
56 /***
57 * Test clean up
58 */
59 public void tearDown() {
60 field = null;
61 }
62
63 /***
64 * test Field with no arguments
65 */
66 public void testEmptyArgs() {
67
68 assertEquals("Empty Args(1) ", 0, field.getArgs("required").length);
69
70 }
71 /***
72 * test Field with only 'default' arguments, no positions specified.
73 */
74 public void testDefaultPositionImplied() {
75
76 field.addArg(createArg("default-position-0"));
77 field.addArg(createArg("default-position-1"));
78 field.addArg(createArg("default-position-2"));
79
80 assertEquals("testDefaultPositionImplied(1) ", 3, field.getArgs("required").length);
81 assertEquals("testDefaultPositionImplied(2) ", "default-position-0", field.getArg("required", 0).getKey());
82 assertEquals("testDefaultPositionImplied(3) ", "default-position-1", field.getArg("required", 1).getKey());
83 assertEquals("testDefaultPositionImplied(4) ", "default-position-2", field.getArg("required", 2).getKey());
84
85 }
86
87 /***
88 * test Field with only 'default' arguments, positions specified.
89 */
90 public void testDefaultUsingPositions() {
91
92 field.addArg(createArg("default-position-1", 1));
93 field.addArg(createArg("default-position-0", 0));
94 field.addArg(createArg("default-position-2", 2));
95
96 assertEquals("testDefaultUsingPositions(1) ", 3, field.getArgs("required").length);
97 assertEquals("testDefaultUsingPositions(2) ", "default-position-0", field.getArg("required", 0).getKey());
98 assertEquals("testDefaultUsingPositions(3) ", "default-position-1", field.getArg("required", 1).getKey());
99 assertEquals("testDefaultUsingPositions(4) ", "default-position-2", field.getArg("required", 2).getKey());
100
101 }
102
103 /***
104 * test Field with only 'default' arguments, position specified for one argument
105 */
106 public void testDefaultOnePosition() {
107
108 field.addArg(createArg("default-position-0"));
109 field.addArg(createArg("default-position-2", 2));
110 field.addArg(createArg("default-position-3"));
111
112 assertEquals("testDefaultOnePosition(1) ", 4, field.getArgs("required").length);
113 assertEquals("testDefaultOnePosition(2) ", "default-position-0", field.getArg("required", 0).getKey());
114 assertNull("testDefaultOnePosition(3) ", field.getArg("required", 1));
115 assertEquals("testDefaultOnePosition(4) ", "default-position-2", field.getArg("required", 2).getKey());
116 assertEquals("testDefaultOnePosition(5) ", "default-position-3", field.getArg("required", 3).getKey());
117
118 }
119
120 /***
121 * test Field with only 'default' arguments, some position specified.
122 */
123 public void testDefaultSomePositions() {
124
125 field.addArg(createArg("default-position-0"));
126 field.addArg(createArg("default-position-2", 2));
127 field.addArg(createArg("default-position-3"));
128 field.addArg(createArg("default-position-1", 1));
129
130 assertEquals("testDefaultSomePositions(1) ", 4, field.getArgs("required").length);
131 assertEquals("testDefaultSomePositions(2) ", "default-position-0", field.getArg("required", 0).getKey());
132 assertEquals("testDefaultSomePositions(3) ", "default-position-1", field.getArg("required", 1).getKey());
133 assertEquals("testDefaultSomePositions(4) ", "default-position-2", field.getArg("required", 2).getKey());
134 assertEquals("testDefaultSomePositions(5) ", "default-position-3", field.getArg("required", 3).getKey());
135
136 }
137
138 /***
139 * test Field with a 'default' argument overriden using 'position' property
140 */
141 public void testOverrideUsingPositionA() {
142
143 field.addArg(createArg("default-position-0"));
144 field.addArg(createArg("default-position-1"));
145 field.addArg(createArg("default-position-2"));
146 field.addArg(createArg("required-position-1", "required", 1));
147
148
149 assertEquals("testOverrideUsingPositionA(1) ", 3, field.getArgs("required").length);
150 assertEquals("testOverrideUsingPositionA(2) ", "required-position-1", field.getArg("required", 1).getKey());
151
152
153 assertEquals("testOverrideUsingPositionA(3) ", 3, field.getArgs("mask").length);
154 assertEquals("testOverrideUsingPositionA(4) ", "default-position-1", field.getArg("mask", 1).getKey());
155
156
157 assertEquals("testOverrideUsingPositionA(5) ", "default-position-1", field.getArg(1).getKey());
158
159 }
160
161 /***
162 * test Field with a 'default' argument overriden using 'position' property
163 */
164 public void testOverrideUsingPositionB() {
165
166 field.addArg(createArg("required-position-3", "required", 3));
167 field.addArg(createArg("required-position-1", "required", 1));
168 field.addArg(createArg("default-position-0"));
169 field.addArg(createArg("default-position-1"));
170 field.addArg(createArg("default-position-2"));
171
172
173 assertEquals("testOverrideUsingPositionB(1) ", 4, field.getArgs("required").length);
174 assertEquals("testOverrideUsingPositionB(2) ", "default-position-0", field.getArg("required", 0).getKey());
175 assertEquals("testOverrideUsingPositionB(3) ", "required-position-1", field.getArg("required", 1).getKey());
176 assertEquals("testOverrideUsingPositionB(4) ", "default-position-2", field.getArg("required", 2).getKey());
177 assertEquals("testOverrideUsingPositionB(5) ", "required-position-3", field.getArg("required", 3).getKey());
178
179
180 assertEquals("testOverrideUsingPositionB(6) ", 4, field.getArgs("mask").length);
181 assertEquals("testOverrideUsingPositionB(6) ", "default-position-0", field.getArg("mask", 0).getKey());
182 assertEquals("testOverrideUsingPositionB(7) ", "default-position-1", field.getArg("mask", 1).getKey());
183 assertEquals("testOverrideUsingPositionB(8) ", "default-position-2", field.getArg("mask", 2).getKey());
184 assertNull("testOverrideUsingPositionB(9) ", field.getArg("mask", 3));
185
186 }
187
188 /***
189 * test Field with a 'default' argument overriden without positions specified.
190 */
191 public void testOverridePositionImplied() {
192
193 field.addArg(createArg("default-position-0"));
194 field.addArg(createArg("required-position-1", "required"));
195 field.addArg(createArg("required-position-2", "required"));
196 field.addArg(createArg("mask-position-1", "mask"));
197
198
199 assertEquals("testOverridePositionImplied(1) ", 3, field.getArgs("required").length);
200 assertEquals("testOverridePositionImplied(2) ", "default-position-0", field.getArg("required", 0).getKey());
201 assertEquals("testOverridePositionImplied(3) ", "required-position-1", field.getArg("required", 1).getKey());
202 assertEquals("testOverridePositionImplied(4) ", "required-position-2", field.getArg("required", 2).getKey());
203
204
205 assertEquals("testOverridePositionImplied(5) ", 3, field.getArgs("mask").length);
206 assertEquals("testOverridePositionImplied(6) ", "default-position-0", field.getArg("mask", 0).getKey());
207 assertEquals("testOverridePositionImplied(7) ", "mask-position-1", field.getArg("mask", 1).getKey());
208 assertNull("testOverridePositionImplied(8) ", field.getArg("mask", 2));
209
210
211 assertEquals("testOverridePositionImplied(9) ", "default-position-0", field.getArg(0).getKey());
212 assertNull("testOverridePositionImplied(10) ", field.getArg(1));
213 assertNull("testOverridePositionImplied(11) ", field.getArg(2));
214
215 }
216
217 /***
218 * test Field with a 'default' argument overriden with some positions specified
219 */
220 public void testOverrideSomePosition() {
221
222 field.addArg(createArg("default-position-0"));
223 field.addArg(createArg("default-position-1"));
224 field.addArg(createArg("default-position-2"));
225 field.addArg(createArg("required-position-1", "required", 1));
226 field.addArg(createArg("required-position-2", "required"));
227 field.addArg(createArg("mask-position-3", "mask"));
228
229
230 assertEquals("testOverrideSomePosition(1) ", 4, field.getArgs("required").length);
231 assertEquals("testOverrideSomePosition(2) ", "default-position-0", field.getArg("required", 0).getKey());
232 assertEquals("testOverrideSomePosition(3) ", "required-position-1", field.getArg("required", 1).getKey());
233 assertEquals("testOverrideSomePosition(4) ", "required-position-2", field.getArg("required", 2).getKey());
234 assertNull("testOverrideSomePosition(5) ", field.getArg("required", 3));
235
236
237 assertEquals("testOverrideSomePosition(6) ", 4, field.getArgs("mask").length);
238 assertEquals("testOverrideSomePosition(7) ", "default-position-0", field.getArg("mask", 0).getKey());
239 assertEquals("testOverrideSomePosition(8) ", "default-position-1", field.getArg("mask", 1).getKey());
240 assertEquals("testOverrideSomePosition(9) ", "default-position-2", field.getArg("mask", 2).getKey());
241 assertEquals("testOverrideSomePosition(10) ", "mask-position-3", field.getArg("mask", 3).getKey());
242
243
244 assertEquals("testOverrideSomePosition(11) ", "default-position-0", field.getArg(0).getKey());
245 assertEquals("testOverrideSomePosition(12) ", "default-position-1", field.getArg(1).getKey());
246 assertEquals("testOverrideSomePosition(13) ", "default-position-2", field.getArg(2).getKey());
247 assertNull("testOverrideSomePosition(14) ", field.getArg(3));
248
249 }
250
251 /***
252 * Convenience Method - create argument (no name or position specified)
253 */
254 private Arg createArg(String key) {
255 Arg arg = new Arg();
256 arg.setKey(key);
257 return arg;
258 }
259
260 /***
261 * Convenience Method - create argument (no name, position specified)
262 */
263 private Arg createArg(String key, int position) {
264 Arg arg = createArg(key);
265 arg.setPosition(position);
266 return arg;
267 }
268
269 /***
270 * Convenience Method - create argument (name specified, no position)
271 */
272 private Arg createArg(String key, String name) {
273 Arg arg = createArg(key);
274 arg.setName(name);
275 return arg;
276 }
277
278 /***
279 * Convenience Method - create argument (name & position specified)
280 */
281 private Arg createArg(String key, String name, int position) {
282 Arg arg = createArg(key, name);
283 arg.setPosition(position);
284 return arg;
285 }
286
287 }