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 java.util.Locale;
20
21
22
23
24
25
26 public class IntegerValidatorTest extends AbstractNumberValidatorTest {
27
28 private static final Integer INT_MIN_VAL = Integer.valueOf(Integer.MIN_VALUE);
29 private static final Integer INT_MAX_VAL = Integer.valueOf(Integer.MAX_VALUE);
30 private static final String INT_MAX = "2147483647";
31 private static final String INT_MAX_0 = "2147483647.99999999999999999999999";
32 private static final String INT_MAX_1 = "2147483648";
33 private static final String INT_MIN = "-2147483648";
34 private static final String INT_MIN_0 = "-2147483648.99999999999999999999999";
35 private static final String INT_MIN_1 = "-2147483649";
36
37
38
39
40
41 public IntegerValidatorTest(String name) {
42 super(name);
43 }
44
45 @Override
46 protected void setUp() throws Exception {
47 super.setUp();
48
49 validator = new IntegerValidator(false, 0);
50 strictValidator = new IntegerValidator();
51
52 testPattern = "#,###";
53
54
55 max = Integer.valueOf(Integer.MAX_VALUE);
56 maxPlusOne = Long.valueOf(max.longValue() + 1);
57 min = Integer.valueOf(Integer.MIN_VALUE);
58 minMinusOne = Long.valueOf(min.longValue() - 1);
59
60
61 invalidStrict = new String[] {null, "", "X", "X12", "12X", "1X2", "1.2", INT_MAX_1, INT_MIN_1};
62
63
64 invalid = new String[] {null, "", "X", "X12", INT_MAX_1, INT_MIN_1};
65
66
67 testNumber = Integer.valueOf(1234);
68 testZero = Integer.valueOf(0);
69 validStrict = new String[] {"0", "1234", "1,234", INT_MAX, INT_MIN};
70 validStrictCompare = new Number[] {testZero, testNumber, testNumber, INT_MAX_VAL, INT_MIN_VAL};
71 valid = new String[] {"0", "1234", "1,234", "1,234.5", "1234X", INT_MAX, INT_MIN, INT_MAX_0, INT_MIN_0};
72 validCompare = new Number[] {testZero, testNumber, testNumber, testNumber, testNumber, INT_MAX_VAL, INT_MIN_VAL, INT_MAX_VAL, INT_MIN_VAL};
73
74 testStringUS = "1,234";
75 testStringDE = "1.234";
76
77
78 localeValue = testStringDE;
79 localePattern = "#.###";
80 testLocale = Locale.GERMANY;
81 localeExpected = testNumber;
82 }
83
84
85
86
87 public void testIntegerValidatorMethods() {
88 Locale locale = Locale.GERMAN;
89 String pattern = "0,00,00";
90 String patternVal = "1,23,45";
91 String germanPatternVal = "1.23.45";
92 String localeVal = "12.345";
93 String defaultVal = "12,345";
94 String XXXX = "XXXX";
95 Integer expected = Integer.valueOf(12345);
96 assertEquals("validate(A) default", expected, IntegerValidator.getInstance().validate(defaultVal));
97 assertEquals("validate(A) locale ", expected, IntegerValidator.getInstance().validate(localeVal, locale));
98 assertEquals("validate(A) pattern", expected, IntegerValidator.getInstance().validate(patternVal, pattern));
99 assertEquals("validate(A) both", expected, IntegerValidator.getInstance().validate(germanPatternVal, pattern, Locale.GERMAN));
100
101 assertTrue("isValid(A) default", IntegerValidator.getInstance().isValid(defaultVal));
102 assertTrue("isValid(A) locale ", IntegerValidator.getInstance().isValid(localeVal, locale));
103 assertTrue("isValid(A) pattern", IntegerValidator.getInstance().isValid(patternVal, pattern));
104 assertTrue("isValid(A) both", IntegerValidator.getInstance().isValid(germanPatternVal, pattern, Locale.GERMAN));
105
106 assertNull("validate(B) default", IntegerValidator.getInstance().validate(XXXX));
107 assertNull("validate(B) locale ", IntegerValidator.getInstance().validate(XXXX, locale));
108 assertNull("validate(B) pattern", IntegerValidator.getInstance().validate(XXXX, pattern));
109 assertNull("validate(B) both", IntegerValidator.getInstance().validate(patternVal, pattern, Locale.GERMAN));
110
111 assertFalse("isValid(B) default", IntegerValidator.getInstance().isValid(XXXX));
112 assertFalse("isValid(B) locale ", IntegerValidator.getInstance().isValid(XXXX, locale));
113 assertFalse("isValid(B) pattern", IntegerValidator.getInstance().isValid(XXXX, pattern));
114 assertFalse("isValid(B) both", IntegerValidator.getInstance().isValid(patternVal, pattern, Locale.GERMAN));
115 }
116
117
118
119
120 public void testIntegerRangeMinMax() {
121 IntegerValidator validator = (IntegerValidator)strictValidator;
122 Integer number9 = validator.validate("9", "#");
123 Integer number10 = validator.validate("10", "#");
124 Integer number11 = validator.validate("11", "#");
125 Integer number19 = validator.validate("19", "#");
126 Integer number20 = validator.validate("20", "#");
127 Integer number21 = validator.validate("21", "#");
128
129
130 assertFalse("isInRange() < min", validator.isInRange(number9, 10, 20));
131 assertTrue("isInRange() = min", validator.isInRange(number10, 10, 20));
132 assertTrue("isInRange() in range", validator.isInRange(number11, 10, 20));
133 assertTrue("isInRange() = max", validator.isInRange(number20, 10, 20));
134 assertFalse("isInRange() > max", validator.isInRange(number21, 10, 20));
135
136
137 assertFalse("minValue() < min", validator.minValue(number9, 10));
138 assertTrue("minValue() = min", validator.minValue(number10, 10));
139 assertTrue("minValue() > min", validator.minValue(number11, 10));
140
141
142 assertTrue("maxValue() < max", validator.maxValue(number19, 20));
143 assertTrue("maxValue() = max", validator.maxValue(number20, 20));
144 assertFalse("maxValue() > max", validator.maxValue(number21, 20));
145 }
146 public void testMinMaxValues() {
147 assertTrue("2147483647 is max integer", validator.isValid("2147483647"));
148 assertFalse("2147483648 > max integer", validator.isValid("2147483648"));
149 assertTrue("-2147483648 is min integer", validator.isValid("-2147483648"));
150 assertFalse("-2147483649 < min integer", validator.isValid("-2147483649"));
151 }
152 }