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.math.BigDecimal;
020: import java.util.Locale;
021:
022: /**
023: * Test Case for BigDecimalValidator.
024: *
025: * @version $Revision: 478334 $ $Date: 2006-11-22 21:31:54 +0000 (Wed, 22 Nov 2006) $
026: */
027: public class BigDecimalValidatorTest extends BaseNumberValidatorTest {
028:
029: /**
030: * Main
031: * @param args arguments
032: */
033: public static void main(String[] args) {
034: junit.textui.TestRunner.run(BigDecimalValidatorTest.class);
035: }
036:
037: /**
038: * Constructor
039: * @param name test name
040: */
041: public BigDecimalValidatorTest(String name) {
042: super (name);
043: }
044:
045: protected void setUp() throws Exception {
046: super .setUp();
047:
048: validator = new BigDecimalValidator(false);
049: strictValidator = new BigDecimalValidator();
050:
051: testPattern = "#,###.###";
052:
053: // testValidateMinMax()
054: max = null;
055: maxPlusOne = null;
056: min = null;
057: minMinusOne = null;
058:
059: // testInvalidStrict()
060: invalidStrict = new String[] { null, "", "X", "X12", "12X",
061: "1X2", "1.234X" };
062:
063: // testInvalidNotStrict()
064: invalid = new String[] { null, "", "X", "X12" };
065:
066: // testValid()
067: testNumber = new BigDecimal("1234.5");
068: Number testNumber2 = new BigDecimal(".1");
069: Number testNumber3 = new BigDecimal("12345.67899");
070: testZero = new BigDecimal("0");
071: validStrict = new String[] { "0", "1234.5", "1,234.5", ".1",
072: "12345.678990" };
073: validStrictCompare = new Number[] { testZero, testNumber,
074: testNumber, testNumber2, testNumber3 };
075: valid = new String[] { "0", "1234.5", "1,234.5", "1,234.5",
076: "1234.5X" };
077: validCompare = new Number[] { testZero, testNumber, testNumber,
078: testNumber, testNumber };
079:
080: testStringUS = "1,234.5";
081: testStringDE = "1.234,5";
082:
083: // Localized Pattern test
084: localeValue = testStringDE;
085: localePattern = "#.###,#";
086: testLocale = Locale.GERMANY;
087: localeExpected = testNumber;
088:
089: }
090:
091: /**
092: * Test BigDecimalValidator validate Methods
093: */
094: public void testBigDecimalValidatorMethods() {
095: Locale locale = Locale.GERMAN;
096: String pattern = "0,00,00";
097: String patternVal = "1,23,45";
098: String germanPatternVal = "1.23.45";
099: String localeVal = "12.345";
100: String defaultVal = "12,345";
101: String XXXX = "XXXX";
102: BigDecimal expected = new BigDecimal(12345);
103: assertEquals("validate(A) default", expected,
104: BigDecimalValidator.getInstance().validate(defaultVal));
105: assertEquals("validate(A) locale ", expected,
106: BigDecimalValidator.getInstance().validate(localeVal,
107: locale));
108: assertEquals("validate(A) pattern", expected,
109: BigDecimalValidator.getInstance().validate(patternVal,
110: pattern));
111: assertEquals("validate(A) both", expected, BigDecimalValidator
112: .getInstance().validate(germanPatternVal, pattern,
113: Locale.GERMAN));
114:
115: assertTrue("isValid(A) default", BigDecimalValidator
116: .getInstance().isValid(defaultVal));
117: assertTrue("isValid(A) locale ", BigDecimalValidator
118: .getInstance().isValid(localeVal, locale));
119: assertTrue("isValid(A) pattern", BigDecimalValidator
120: .getInstance().isValid(patternVal, pattern));
121: assertTrue("isValid(A) both", BigDecimalValidator.getInstance()
122: .isValid(germanPatternVal, pattern, Locale.GERMAN));
123:
124: assertNull("validate(B) default", BigDecimalValidator
125: .getInstance().validate(XXXX));
126: assertNull("validate(B) locale ", BigDecimalValidator
127: .getInstance().validate(XXXX, locale));
128: assertNull("validate(B) pattern", BigDecimalValidator
129: .getInstance().validate(XXXX, pattern));
130: assertNull("validate(B) both", BigDecimalValidator
131: .getInstance().validate(patternVal, pattern,
132: Locale.GERMAN));
133:
134: assertFalse("isValid(B) default", BigDecimalValidator
135: .getInstance().isValid(XXXX));
136: assertFalse("isValid(B) locale ", BigDecimalValidator
137: .getInstance().isValid(XXXX, locale));
138: assertFalse("isValid(B) pattern", BigDecimalValidator
139: .getInstance().isValid(XXXX, pattern));
140: assertFalse("isValid(B) both", BigDecimalValidator
141: .getInstance().isValid(patternVal, pattern,
142: Locale.GERMAN));
143: }
144:
145: /**
146: * Test BigDecimal Range/Min/Max
147: */
148: public void testBigDecimalRangeMinMax() {
149: BigDecimalValidator validator = new BigDecimalValidator(true,
150: AbstractNumberValidator.STANDARD_FORMAT, true);
151: BigDecimal number9 = new BigDecimal("9");
152: BigDecimal number10 = new BigDecimal("10");
153: BigDecimal number11 = new BigDecimal("11");
154: BigDecimal number19 = new BigDecimal("19");
155: BigDecimal number20 = new BigDecimal("20");
156: BigDecimal number21 = new BigDecimal("21");
157:
158: float min = (float) 10;
159: float max = (float) 20;
160:
161: // Test isInRange()
162: assertFalse("isInRange(A) < min", validator.isInRange(number9,
163: min, max));
164: assertTrue("isInRange(A) = min", validator.isInRange(number10,
165: min, max));
166: assertTrue("isInRange(A) in range", validator.isInRange(
167: number11, min, max));
168: assertTrue("isInRange(A) = max", validator.isInRange(number20,
169: min, max));
170: assertFalse("isInRange(A) > max", validator.isInRange(number21,
171: min, max));
172:
173: // Test minValue()
174: assertFalse("minValue(A) < min", validator.minValue(number9,
175: min));
176: assertTrue("minValue(A) = min", validator.minValue(number10,
177: min));
178: assertTrue("minValue(A) > min", validator.minValue(number11,
179: min));
180:
181: // Test minValue()
182: assertTrue("maxValue(A) < max", validator.maxValue(number19,
183: max));
184: assertTrue("maxValue(A) = max", validator.maxValue(number20,
185: max));
186: assertFalse("maxValue(A) > max", validator.maxValue(number21,
187: max));
188: }
189: }
|