blob: 95c933aec40127a40277b6a70eb1864332e62967 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.validator;
import java.io.IOException;
import java.util.Locale;
import org.xml.sax.SAXException;
/**
* Performs Validation Test for locale validations.
*
* @version $Revision$
*/
public class LocaleTest extends AbstractCommonTest {
/**
* The key used to retrieve the set of validation rules from the xml file.
*/
protected static String FORM_KEY = "nameForm";
/** The key used to retrieve the validator action. */
protected static String ACTION = "required";
/**
* Constructor for the LocaleTest object
*
* @param name param
*/
public LocaleTest(String name) {
super(name);
}
/**
* Load <code>ValidatorResources</code> from validator-locale.xml.
*
* @throws IOException If something goes wrong
* @throws SAXException If something goes wrong
*/
@Override
protected void setUp()
throws IOException, SAXException {
// Load resources
loadResources("LocaleTest-config.xml");
}
/** The teardown method for JUnit */
@Override
protected void tearDown() {
}
/**
* See what happens when we try to validate with a Locale, Country and
* variant. Also check if the added locale validation field is getting used.
*
* @throws ValidatorException If something goes wrong
*/
public void testLocale1()
throws ValidatorException {
// Create bean to run test on.
NameBean name = new NameBean();
name.setFirstName("");
name.setLastName("");
valueTest(name, new Locale("en", "US", "TEST1"), false, false, false);
}
/**
* See what happens when we try to validate with a Locale, Country and
* variant
*
* @throws ValidatorException If something goes wrong
*/
public void testLocale2()
throws ValidatorException {
// Create bean to run test on.
NameBean name = new NameBean();
name.setFirstName("");
name.setLastName("");
valueTest(name, new Locale("en", "US", "TEST2"), true, false, true);
}
/**
* See what happens when we try to validate with a Locale, Country and
* variant
*
* @throws ValidatorException If something goes wrong
*/
public void testLocale3()
throws ValidatorException {
// Create bean to run test on.
NameBean name = new NameBean();
name.setFirstName("");
name.setLastName("");
valueTest(name, new Locale("en", "UK"), false, true, true);
}
/**
* See if a locale of en_UK_TEST falls back to en_UK instead of default form
* set. Bug #16920 states that this isn't happening, even though it is
* passing this test. see #16920.
*
* @throws ValidatorException If something goes wrong
*/
public void testLocale4()
throws ValidatorException {
// Create bean to run test on.
NameBean name = new NameBean();
name.setFirstName("");
name.setLastName("");
valueTest(name, new Locale("en", "UK", "TEST"), false, true, true);
}
/**
* See if a locale of language=en falls back to default form set.
*
* @throws ValidatorException If something goes wrong
*/
public void testLocale5()
throws ValidatorException {
// Create bean to run test on.
NameBean name = new NameBean();
name.setFirstName("");
name.setLastName("");
valueTest(name, new Locale("en", ""), false, false, true);
}
/**
* Utlity class to run a test on a value.
*
* @param name param
* @param loc param
* @param firstGood param
* @param lastGood param
* @param middleGood param
* @throws ValidatorException If something goes wrong
*/
private void valueTest(Object name, Locale loc, boolean firstGood, boolean lastGood, boolean middleGood)
throws ValidatorException {
// Construct validator based on the loaded resources
// and the form key
Validator validator = new Validator(resources, FORM_KEY);
// add the name bean to the validator as a resource
// for the validations to be performed on.
validator.setParameter(Validator.BEAN_PARAM, name);
validator.setParameter(Validator.LOCALE_PARAM, loc);
// Get results of the validation.
ValidatorResults results = null;
// throws ValidatorException,
// but we aren't catching for testing
// since no validation methods we use
// throw this
results = validator.validate();
assertNotNull("Results are null.", results);
ValidatorResult resultlast = results.getValidatorResult("lastName");
ValidatorResult resultfirst = results.getValidatorResult("firstName");
ValidatorResult resultmiddle = results.getValidatorResult("middleName");
if (firstGood) {
assertNull(resultfirst);
}
else {
assertNotNull(resultfirst);
}
if (middleGood) {
assertNull(resultmiddle);
}
else {
assertNotNull(resultmiddle);
}
if (lastGood) {
assertNull(resultlast);
}
else {
assertNotNull(resultlast);
}
}
}