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