1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.apache.commons.validator;
24
25 import java.io.IOException;
26 import java.util.Iterator;
27 import junit.framework.Test;
28 import junit.framework.TestSuite;
29
30 import org.xml.sax.SAXException;
31
32 /***
33 * Test ValidatorResults.
34 */
35 public class ValidatorResultsTest extends TestCommon {
36
37 private static final String FORM_KEY = "nameForm";
38 private static final String firstNameField = "firstName";
39 private static final String middleNameField = "middleName";
40 private static final String lastNameField = "lastName";
41
42 private String firstName;
43 private String middleName;
44 private String lastName;
45
46 /***
47 * Constructor.
48 */
49 public ValidatorResultsTest(String name) {
50 super(name);
51 }
52
53 /***
54 * Start the tests.
55 *
56 * @param theArgs the arguments. Not used
57 */
58 public static void main(String[] theArgs) {
59 junit.awtui.TestRunner.main(new String[] {ValidatorResultsTest.class.getName()});
60 }
61
62 /***
63 * @return a test suite (<code>TestSuite</code>) that includes all methods
64 * starting with "test"
65 */
66 public static Test suite() {
67
68 return new TestSuite(ValidatorResultsTest.class);
69 }
70
71 /***
72 * Load <code>ValidatorResources</code> from
73 * ValidatorResultsTest-config.xml.
74 */
75 protected void setUp() throws IOException, SAXException {
76
77 loadResources("ValidatorResultsTest-config.xml");
78
79
80 firstName = "foo";
81 middleName = "123";
82 lastName = "456";
83
84 }
85
86 protected void tearDown() {
87 }
88
89 /***
90 * Test all validations ran and passed.
91 */
92 public void testAllValid() throws ValidatorException {
93
94
95 NameBean bean = createNameBean();
96
97
98 ValidatorResults results = validate(bean);
99
100
101 checkValidatorResult(results, firstNameField, "required", true);
102 checkValidatorResult(results, middleNameField, "required", true);
103 checkValidatorResult(results, middleNameField, "int", true);
104 checkValidatorResult(results, middleNameField, "positive", true);
105 checkValidatorResult(results, lastNameField, "required", true);
106 checkValidatorResult(results, lastNameField, "int", true);
107
108 }
109
110 /***
111 * Test some validations failed and some didn't run.
112 */
113 public void testErrors() throws ValidatorException {
114
115 middleName = "XXX";
116 lastName = null;
117
118
119 NameBean bean = createNameBean();
120
121
122 ValidatorResults results = validate(bean);
123
124
125 checkValidatorResult(results, firstNameField, "required", true);
126 checkValidatorResult(results, middleNameField, "required", true);
127 checkValidatorResult(results, middleNameField, "int", false);
128 checkNotRun(results, middleNameField, "positive");
129 checkValidatorResult(results, lastNameField, "required", false);
130 checkNotRun(results, lastNameField, "int");
131
132 }
133
134 /***
135 * Check a validator has not been run for a field and the result.
136 */
137 private void checkNotRun(ValidatorResults results, String field, String action) {
138 ValidatorResult result = results.getValidatorResult(field);
139 assertNotNull(field + " result", result);
140 assertFalse(field + "[" + action + "] run", result.containsAction(action));
141
142 }
143
144 /***
145 * Check a validator has run for a field and the result.
146 */
147 private void checkValidatorResult(ValidatorResults results, String field, String action, boolean expected) {
148 ValidatorResult result = results.getValidatorResult(field);
149
150 assertNotNull(field + " result", result);
151 assertTrue(field + "[" + action + "] not run", result.containsAction(action));
152 assertEquals(field + "[" + action + "] result", expected, result.isValid(action));
153 }
154
155 /***
156 * Create a NameBean.
157 */
158 private NameBean createNameBean() {
159 NameBean name = new NameBean();
160 name.setFirstName(firstName);
161 name.setMiddleName(middleName);
162 name.setLastName(lastName);
163 return name;
164 }
165
166 /***
167 * Validate results.
168 */
169 private ValidatorResults validate(Object bean) throws ValidatorException {
170
171
172
173 Validator validator = new Validator(resources, FORM_KEY);
174
175
176
177 validator.setParameter(Validator.BEAN_PARAM, bean);
178
179
180 ValidatorResults results = validator.validate();
181
182 return results;
183
184 }
185
186 }