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 java.io.IOException;
25 import java.util.Locale;
26
27 import junit.framework.Test;
28 import junit.framework.TestSuite;
29
30 import org.xml.sax.SAXException;
31
32 /***
33 * Performs Validation Test for <code>long</code> validations.
34 */
35 public class LocaleTest extends TestCommon {
36
37 /***
38 * The key used to retrieve the set of validation rules from the xml file.
39 */
40 protected static String FORM_KEY = "nameForm";
41
42 /*** The key used to retrieve the validator action. */
43 protected static String ACTION = "required";
44
45 /***
46 * Constructor for the LocaleTest object
47 *
48 * @param name param
49 */
50 public LocaleTest(String name) {
51 super(name);
52 }
53
54 /***
55 * Start the tests.
56 *
57 * @param theArgs the arguments. Not used
58 */
59 public static void main(String[] theArgs) {
60 junit.awtui.TestRunner.main(new String[]{LocaleTest.class.getName()});
61 }
62
63 /***
64 * @return a test suite (<code>TestSuite</code>) that includes all methods
65 * starting with "test"
66 */
67 public static Test suite() {
68
69 return new TestSuite(LocaleTest.class);
70 }
71
72 /***
73 * Load <code>ValidatorResources</code> from validator-locale.xml.
74 *
75 * @exception IOException If something goes wrong
76 * @exception SAXException If something goes wrong
77 */
78 protected void setUp()
79 throws IOException, SAXException {
80
81 loadResources("LocaleTest-config.xml");
82 }
83
84 /*** The teardown method for JUnit */
85 protected void tearDown() {
86 }
87
88 /***
89 * See what happens when we try to validate with a Locale, Country and
90 * variant. Also check if the added locale validation field is getting used.
91 *
92 * @exception ValidatorException If something goes wrong
93 */
94 public void testLocale1()
95 throws ValidatorException {
96
97 NameBean name = new NameBean();
98 name.setFirstName("");
99 name.setLastName("");
100
101 valueTest(name, new Locale("en", "US", "TEST1"), false, false, false);
102 }
103
104 /***
105 * See what happens when we try to validate with a Locale, Country and
106 * variant
107 *
108 * @exception ValidatorException If something goes wrong
109 */
110 public void testLocale2()
111 throws ValidatorException {
112
113 NameBean name = new NameBean();
114 name.setFirstName("");
115 name.setLastName("");
116
117 valueTest(name, new Locale("en", "US", "TEST2"), true, false, true);
118 }
119
120 /***
121 * See what happens when we try to validate with a Locale, Country and
122 * variant
123 *
124 * @exception ValidatorException If something goes wrong
125 */
126 public void testLocale3()
127 throws ValidatorException {
128
129 NameBean name = new NameBean();
130 name.setFirstName("");
131 name.setLastName("");
132
133 valueTest(name, new Locale("en", "UK"), false, true, true);
134 }
135
136 /***
137 * See if a locale of en_UK_TEST falls back to en_UK instead of default form
138 * set. Bug #16920 states that this isn't happening, even though it is
139 * passing this test. see #16920.
140 *
141 * @exception ValidatorException If something goes wrong
142 */
143 public void testLocale4()
144 throws ValidatorException {
145
146 NameBean name = new NameBean();
147 name.setFirstName("");
148 name.setLastName("");
149
150 valueTest(name, new Locale("en", "UK", "TEST"), false, true, true);
151 }
152
153 /***
154 * See if a locale of language=en falls back to default form set.
155 *
156 * @exception ValidatorException If something goes wrong
157 */
158 public void testLocale5()
159 throws ValidatorException {
160
161 NameBean name = new NameBean();
162 name.setFirstName("");
163 name.setLastName("");
164
165 valueTest(name, new Locale("en", ""), false, false, true);
166 }
167
168 /***
169 * Utlity class to run a test on a value.
170 *
171 * @param name param
172 * @param loc param
173 * @param firstGood param
174 * @param lastGood param
175 * @param middleGood param
176 * @exception ValidatorException If something goes wrong
177 */
178 private void valueTest(Object name, Locale loc, boolean firstGood, boolean lastGood, boolean middleGood)
179 throws ValidatorException {
180
181
182
183 Validator validator = new Validator(resources, FORM_KEY);
184
185
186 validator.setParameter(Validator.BEAN_PARAM, name);
187 validator.setParameter(Validator.LOCALE_PARAM, loc);
188
189 ValidatorResults results = null;
190
191
192
193
194
195 results = validator.validate();
196
197 assertNotNull("Results are null.", results);
198
199 ValidatorResult resultlast = results.getValidatorResult("lastName");
200 ValidatorResult resultfirst = results.getValidatorResult("firstName");
201 ValidatorResult resultmiddle = results.getValidatorResult("middleName");
202
203 if (firstGood) {
204 assertNull(resultfirst);
205 }
206 else {
207 assertNotNull(resultfirst);
208 }
209
210 if (middleGood) {
211 assertNull(resultmiddle);
212 }
213 else {
214 assertNotNull(resultmiddle);
215 }
216
217 if (lastGood) {
218 assertNull(resultlast);
219 }
220 else {
221 assertNotNull(resultlast);
222 }
223 }
224 }
225