1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.validator.routines;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertNull;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import java.math.BigDecimal;
25 import java.util.Locale;
26
27 import org.junit.jupiter.api.BeforeEach;
28 import org.junit.jupiter.api.Test;
29
30
31
32
33 public class BigDecimalValidatorTest extends AbstractNumberValidatorTest {
34
35 @Override
36 @BeforeEach
37 protected void setUp() {
38 super.setUp();
39
40 validator = new BigDecimalValidator(false);
41 strictValidator = new BigDecimalValidator();
42
43 testPattern = "#,###.###";
44
45
46 max = null;
47 maxPlusOne = null;
48 min = null;
49 minMinusOne = null;
50
51
52 invalidStrict = new String[] { null, "", "X", "X12", "12X", "1X2", "1.234X" };
53
54
55 invalid = new String[] { null, "", "X", "X12" };
56
57
58 testNumber = new BigDecimal("1234.5");
59 final Number testNumber2 = new BigDecimal(".1");
60 final Number testNumber3 = new BigDecimal("12345.67899");
61 testZero = new BigDecimal("0");
62 validStrict = new String[] { "0", "1234.5", "1,234.5", ".1", "12345.678990" };
63 validStrictCompare = new Number[] { testZero, testNumber, testNumber, testNumber2, testNumber3 };
64 valid = new String[] { "0", "1234.5", "1,234.5", "1,234.5", "1234.5X" };
65 validCompare = new Number[] { testZero, testNumber, testNumber, testNumber, testNumber };
66
67 testStringUS = "1,234.5";
68 testStringDE = "1.234,5";
69
70
71 localeValue = testStringDE;
72 localePattern = "#.###,#";
73 testLocale = Locale.GERMANY;
74 localeExpected = testNumber;
75
76 }
77
78
79
80
81 @Test
82 public void testBigDecimalRangeMinMax() {
83 final BigDecimalValidator validator = new BigDecimalValidator(true, AbstractNumberValidator.STANDARD_FORMAT, true);
84 final BigDecimal number9 = new BigDecimal("9");
85 final BigDecimal number10 = new BigDecimal("10");
86 final BigDecimal number11 = new BigDecimal("11");
87 final BigDecimal number19 = new BigDecimal("19");
88 final BigDecimal number20 = new BigDecimal("20");
89 final BigDecimal number21 = new BigDecimal("21");
90
91 final float min = 10;
92 final float max = 20;
93
94
95 assertFalse(validator.isInRange(number9, min, max), "isInRange(A) < min");
96 assertTrue(validator.isInRange(number10, min, max), "isInRange(A) = min");
97 assertTrue(validator.isInRange(number11, min, max), "isInRange(A) in range");
98 assertTrue(validator.isInRange(number20, min, max), "isInRange(A) = max");
99 assertFalse(validator.isInRange(number21, min, max), "isInRange(A) > max");
100
101
102 assertFalse(validator.minValue(number9, min), "minValue(A) < min");
103 assertTrue(validator.minValue(number10, min), "minValue(A) = min");
104 assertTrue(validator.minValue(number11, min), "minValue(A) > min");
105
106
107 assertTrue(validator.maxValue(number19, max), "maxValue(A) < max");
108 assertTrue(validator.maxValue(number20, max), "maxValue(A) = max");
109 assertFalse(validator.maxValue(number21, max), "maxValue(A) > max");
110 }
111
112
113
114
115 @Test
116 public void testBigDecimalValidatorMethods() {
117 final Locale locale = Locale.GERMAN;
118 final String pattern = "0,00,00";
119 final String patternVal = "1,23,45";
120 final String germanPatternVal = "1.23.45";
121 final String localeVal = "12.345";
122 final String defaultVal = "12,345";
123 final String XXXX = "XXXX";
124 final BigDecimal expected = new BigDecimal(12345);
125 assertEquals(expected, BigDecimalValidator.getInstance().validate(defaultVal), "validate(A) default");
126 assertEquals(expected, BigDecimalValidator.getInstance().validate(localeVal, locale), "validate(A) locale ");
127 assertEquals(expected, BigDecimalValidator.getInstance().validate(patternVal, pattern), "validate(A) pattern");
128 assertEquals(expected, BigDecimalValidator.getInstance().validate(germanPatternVal, pattern, Locale.GERMAN), "validate(A) both");
129
130 assertTrue(BigDecimalValidator.getInstance().isValid(defaultVal), "isValid(A) default");
131 assertTrue(BigDecimalValidator.getInstance().isValid(localeVal, locale), "isValid(A) locale ");
132 assertTrue(BigDecimalValidator.getInstance().isValid(patternVal, pattern), "isValid(A) pattern");
133 assertTrue(BigDecimalValidator.getInstance().isValid(germanPatternVal, pattern, Locale.GERMAN), "isValid(A) both");
134
135 assertNull(BigDecimalValidator.getInstance().validate(XXXX), "validate(B) default");
136 assertNull(BigDecimalValidator.getInstance().validate(XXXX, locale), "validate(B) locale");
137 assertNull(BigDecimalValidator.getInstance().validate(XXXX, pattern), "validate(B) pattern");
138 assertNull(BigDecimalValidator.getInstance().validate(patternVal, pattern, Locale.GERMAN), "validate(B) both");
139
140 assertFalse(BigDecimalValidator.getInstance().isValid(XXXX), "isValid(B) default");
141 assertFalse(BigDecimalValidator.getInstance().isValid(XXXX, locale), "isValid(B) locale");
142 assertFalse(BigDecimalValidator.getInstance().isValid(XXXX, pattern), "isValid(B) pattern");
143 assertFalse(BigDecimalValidator.getInstance().isValid(patternVal, pattern, Locale.GERMAN), "isValid(B) both");
144 }
145 }