001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.commons.validator.routines;
018:
019: import java.util.Locale;
020:
021: /**
022: * Test Case for DoubleValidator.
023: *
024: * @version $Revision: 478334 $ $Date: 2006-11-22 21:31:54 +0000 (Wed, 22 Nov 2006) $
025: */
026: public class DoubleValidatorTest extends BaseNumberValidatorTest {
027:
028: /**
029: * Main
030: * @param args arguments
031: */
032: public static void main(String[] args) {
033: junit.textui.TestRunner.run(DoubleValidatorTest.class);
034: }
035:
036: /**
037: * Constructor
038: * @param name test name
039: */
040: public DoubleValidatorTest(String name) {
041: super (name);
042: }
043:
044: protected void setUp() throws Exception {
045: super .setUp();
046:
047: validator = new DoubleValidator(false, 0);
048: strictValidator = new DoubleValidator();
049:
050: testPattern = "#,###.#";
051:
052: // testValidateMinMax()
053: max = null;
054: maxPlusOne = null;
055: min = null;
056: minMinusOne = null;
057:
058: // testInvalidStrict()
059: invalidStrict = new String[] { null, "", "X", "X12", "12X",
060: "1X2" };
061:
062: // testInvalidNotStrict()
063: invalid = new String[] { null, "", "X", "X12" };
064:
065: // testValid()
066: testNumber = new Double(1234.5);
067: testZero = new Double(0);
068: validStrict = new String[] { "0", "1234.5", "1,234.5" };
069: validStrictCompare = new Number[] { testZero, testNumber,
070: testNumber };
071: valid = new String[] { "0", "1234.5", "1,234.5", "1,234.5",
072: "1234.5X" };
073: validCompare = new Number[] { testZero, testNumber, testNumber,
074: testNumber, testNumber };
075:
076: testStringUS = "1,234.5";
077: testStringDE = "1.234,5";
078:
079: // Localized Pattern test
080: localeValue = testStringDE;
081: localePattern = "#.###,#";
082: testLocale = Locale.GERMANY;
083: localeExpected = testNumber;
084:
085: }
086:
087: /**
088: * Test DoubleValidator validate Methods
089: */
090: public void testDoubleValidatorMethods() {
091: Locale locale = Locale.GERMAN;
092: String pattern = "0,00,00";
093: String patternVal = "1,23,45";
094: String germanPatternVal = "1.23.45";
095: String localeVal = "12.345";
096: String defaultVal = "12,345";
097: String XXXX = "XXXX";
098: Double expected = new Double(12345);
099: assertEquals("validate(A) default", expected, DoubleValidator
100: .getInstance().validate(defaultVal));
101: assertEquals("validate(A) locale ", expected, DoubleValidator
102: .getInstance().validate(localeVal, locale));
103: assertEquals("validate(A) pattern", expected, DoubleValidator
104: .getInstance().validate(patternVal, pattern));
105: assertEquals("validate(A) both", expected, DoubleValidator
106: .getInstance().validate(germanPatternVal, pattern,
107: Locale.GERMAN));
108:
109: assertTrue("isValid(A) default", DoubleValidator.getInstance()
110: .isValid(defaultVal));
111: assertTrue("isValid(A) locale ", DoubleValidator.getInstance()
112: .isValid(localeVal, locale));
113: assertTrue("isValid(A) pattern", DoubleValidator.getInstance()
114: .isValid(patternVal, pattern));
115: assertTrue("isValid(A) both", DoubleValidator.getInstance()
116: .isValid(germanPatternVal, pattern, Locale.GERMAN));
117:
118: assertNull("validate(B) default", DoubleValidator.getInstance()
119: .validate(XXXX));
120: assertNull("validate(B) locale ", DoubleValidator.getInstance()
121: .validate(XXXX, locale));
122: assertNull("validate(B) pattern", DoubleValidator.getInstance()
123: .validate(XXXX, pattern));
124: assertNull("validate(B) both", DoubleValidator.getInstance()
125: .validate(patternVal, pattern, Locale.GERMAN));
126:
127: assertFalse("isValid(B) default", DoubleValidator.getInstance()
128: .isValid(XXXX));
129: assertFalse("isValid(B) locale ", DoubleValidator.getInstance()
130: .isValid(XXXX, locale));
131: assertFalse("isValid(B) pattern", DoubleValidator.getInstance()
132: .isValid(XXXX, pattern));
133: assertFalse("isValid(B) both", DoubleValidator.getInstance()
134: .isValid(patternVal, pattern, Locale.GERMAN));
135: }
136:
137: /**
138: * Test Double Range/Min/Max
139: */
140: public void testDoubleRangeMinMax() {
141: DoubleValidator validator = (DoubleValidator) strictValidator;
142: Double number9 = validator.validate("9", "#");
143: Double number10 = validator.validate("10", "#");
144: Double number11 = validator.validate("11", "#");
145: Double number19 = validator.validate("19", "#");
146: Double number20 = validator.validate("20", "#");
147: Double number21 = validator.validate("21", "#");
148:
149: // Test isInRange()
150: assertFalse("isInRange() < min", validator.isInRange(number9,
151: 10, 20));
152: assertTrue("isInRange() = min", validator.isInRange(number10,
153: 10, 20));
154: assertTrue("isInRange() in range", validator.isInRange(
155: number11, 10, 20));
156: assertTrue("isInRange() = max", validator.isInRange(number20,
157: 10, 20));
158: assertFalse("isInRange() > max", validator.isInRange(number21,
159: 10, 20));
160:
161: // Test minValue()
162: assertFalse("minValue() < min", validator.minValue(number9, 10));
163: assertTrue("minValue() = min", validator.minValue(number10, 10));
164: assertTrue("minValue() > min", validator.minValue(number11, 10));
165:
166: // Test minValue()
167: assertTrue("maxValue() < max", validator.maxValue(number19, 20));
168: assertTrue("maxValue() = max", validator.maxValue(number20, 20));
169: assertFalse("maxValue() > max", validator
170: .maxValue(number21, 20));
171: }
172: }
|