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.text.DateFormat;
20 import java.util.Date;
21 import java.util.Locale;
22 import java.util.TimeZone;
23
24
25
26
27
28
29 public class DateValidatorTest extends AbstractCalendarValidatorTest {
30
31 private DateValidator dateValidator;
32
33
34
35
36
37 public DateValidatorTest(String name) {
38 super(name);
39 }
40
41
42
43
44
45 @Override
46 protected void setUp() throws Exception {
47 super.setUp();
48 dateValidator = new DateValidator();
49 validator = dateValidator;
50 }
51
52
53
54
55
56 public void testLocaleProviders() throws Exception {
57 String localeProviders = System.getProperty("java.locale.providers");
58 if (localeProviders != null) {
59 assertTrue("java.locale.providers must start with COMPAT", localeProviders.startsWith("COMPAT"));
60 }
61 String txt = "3/20/15 10:59:00 PM";
62 DateFormat dateformat= DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, Locale.US);
63 dateformat.setTimeZone(TimeZone.getTimeZone("GMT"));
64 Date date = dateformat.parse(txt);
65 assertNotNull(date);
66 }
67
68
69
70 public void testDateValidatorMethods() {
71 Locale.setDefault(Locale.US);
72 Locale locale = Locale.GERMAN;
73 String pattern = "yyyy-MM-dd";
74 String patternVal = "2005-12-31";
75 String germanVal = "31 Dez 2005";
76 String germanPattern = "dd MMM yyyy";
77 String localeVal = "31.12.2005";
78 String defaultVal = "12/31/05";
79 String XXXX = "XXXX";
80 Date expected = createCalendar(null, 20051231, 0).getTime();
81
82 assertEquals("validate(A) default", expected, DateValidator.getInstance().validate(defaultVal));
83 assertEquals("validate(A) locale ", expected, DateValidator.getInstance().validate(localeVal, locale));
84 assertEquals("validate(A) pattern", expected, DateValidator.getInstance().validate(patternVal, pattern));
85 assertEquals("validate(A) both", expected, DateValidator.getInstance().validate(germanVal, germanPattern, Locale.GERMAN));
86
87 assertTrue("isValid(A) default", DateValidator.getInstance().isValid(defaultVal));
88 assertTrue("isValid(A) locale ", DateValidator.getInstance().isValid(localeVal, locale));
89 assertTrue("isValid(A) pattern", DateValidator.getInstance().isValid(patternVal, pattern));
90 assertTrue("isValid(A) both", DateValidator.getInstance().isValid(germanVal, germanPattern, Locale.GERMAN));
91
92 assertNull("validate(B) default", DateValidator.getInstance().validate(XXXX));
93 assertNull("validate(B) locale ", DateValidator.getInstance().validate(XXXX, locale));
94 assertNull("validate(B) pattern", DateValidator.getInstance().validate(XXXX, pattern));
95 assertNull("validate(B) both", DateValidator.getInstance().validate("31 Dec 2005", germanPattern, Locale.GERMAN));
96
97 assertFalse("isValid(B) default", DateValidator.getInstance().isValid(XXXX));
98 assertFalse("isValid(B) locale ", DateValidator.getInstance().isValid(XXXX, locale));
99 assertFalse("isValid(B) pattern", DateValidator.getInstance().isValid(XXXX, pattern));
100 assertFalse("isValid(B) both", DateValidator.getInstance().isValid("31 Dec 2005", germanPattern, Locale.GERMAN));
101
102
103 TimeZone zone = (TimeZone.getDefault().getRawOffset() == EET.getRawOffset() ? EST : EET);
104 Date expectedZone = createCalendar(zone, 20051231, 0).getTime();
105 assertFalse("default/zone same "+zone, expected.getTime() == expectedZone.getTime());
106
107 assertEquals("validate(C) default", expectedZone, DateValidator.getInstance().validate(defaultVal, zone));
108 assertEquals("validate(C) locale ", expectedZone, DateValidator.getInstance().validate(localeVal, locale, zone));
109 assertEquals("validate(C) pattern", expectedZone, DateValidator.getInstance().validate(patternVal, pattern, zone));
110 assertEquals("validate(C) both", expectedZone, DateValidator.getInstance().validate(germanVal, germanPattern, Locale.GERMAN, zone));
111 }
112
113
114
115
116 public void testCompare() {
117 int sameTime = 124522;
118 int testDate = 20050823;
119 Date diffHour = createDate(GMT, testDate, 115922);
120
121 Date value = createDate(GMT, testDate, sameTime);
122 Date date20050824 = createDate(GMT, 20050824, sameTime);
123 Date date20050822 = createDate(GMT, 20050822, sameTime);
124
125 Date date20050830 = createDate(GMT, 20050830, sameTime);
126 Date date20050816 = createDate(GMT, 20050816, sameTime);
127
128 Date date20050901 = createDate(GMT, 20050901, sameTime);
129 Date date20050801 = createDate(GMT, 20050801, sameTime);
130 Date date20050731 = createDate(GMT, 20050731, sameTime);
131
132 Date date20051101 = createDate(GMT, 20051101, sameTime);
133 Date date20051001 = createDate(GMT, 20051001, sameTime);
134 Date date20050701 = createDate(GMT, 20050701, sameTime);
135 Date date20050630 = createDate(GMT, 20050630, sameTime);
136 Date date20050110 = createDate(GMT, 20050110, sameTime);
137
138 Date date20060101 = createDate(GMT, 20060101, sameTime);
139 Date date20050101 = createDate(GMT, 20050101, sameTime);
140 Date date20041231 = createDate(GMT, 20041231, sameTime);
141
142 assertEquals("date LT", -1, dateValidator.compareDates(value, date20050824, GMT));
143 assertEquals("date EQ", 0, dateValidator.compareDates(value, diffHour, GMT));
144 assertEquals("date GT", 1, dateValidator.compareDates(value, date20050822, GMT));
145
146 assertEquals("week LT", -1, dateValidator.compareWeeks(value, date20050830, GMT));
147 assertEquals("week =1", 0, dateValidator.compareWeeks(value, date20050824, GMT));
148 assertEquals("week =2", 0, dateValidator.compareWeeks(value, date20050822, GMT));
149 assertEquals("week =3", 0, dateValidator.compareWeeks(value, date20050822, GMT));
150 assertEquals("week GT", 1, dateValidator.compareWeeks(value, date20050816, GMT));
151
152 assertEquals("mnth LT", -1, dateValidator.compareMonths(value, date20050901, GMT));
153 assertEquals("mnth =1", 0, dateValidator.compareMonths(value, date20050830, GMT));
154 assertEquals("mnth =2", 0, dateValidator.compareMonths(value, date20050801, GMT));
155 assertEquals("mnth =3", 0, dateValidator.compareMonths(value, date20050816, GMT));
156 assertEquals("mnth GT", 1, dateValidator.compareMonths(value, date20050731, GMT));
157
158 assertEquals("qtrA <1", -1, dateValidator.compareQuarters(value, date20051101, GMT));
159 assertEquals("qtrA <2", -1, dateValidator.compareQuarters(value, date20051001, GMT));
160 assertEquals("qtrA =1", 0, dateValidator.compareQuarters(value, date20050901, GMT));
161 assertEquals("qtrA =2", 0, dateValidator.compareQuarters(value, date20050701, GMT));
162 assertEquals("qtrA =3", 0, dateValidator.compareQuarters(value, date20050731, GMT));
163 assertEquals("qtrA GT", 1, dateValidator.compareQuarters(value, date20050630, GMT));
164
165
166 assertEquals("qtrB LT", -1, dateValidator.compareQuarters(value, date20051101, GMT, 2));
167 assertEquals("qtrB =1", 0, dateValidator.compareQuarters(value, date20051001, GMT, 2));
168 assertEquals("qtrB =2", 0, dateValidator.compareQuarters(value, date20050901, GMT, 2));
169 assertEquals("qtrB =3", 1, dateValidator.compareQuarters(value, date20050701, GMT, 2));
170 assertEquals("qtrB =4", 1, dateValidator.compareQuarters(value, date20050731, GMT, 2));
171 assertEquals("qtrB GT", 1, dateValidator.compareQuarters(value, date20050630, GMT, 2));
172 assertEquals("qtrB prev", 1, dateValidator.compareQuarters(value, date20050110, GMT, 2));
173
174 assertEquals("year LT", -1, dateValidator.compareYears(value, date20060101, GMT));
175 assertEquals("year EQ", 0, dateValidator.compareYears(value, date20050101, GMT));
176 assertEquals("year GT", 1, dateValidator.compareYears(value, date20041231, GMT));
177
178
179 Date sameDayTwoAm = createDate(GMT, testDate, 20000);
180 assertEquals("date LT", -1, dateValidator.compareDates(value, date20050824, EST));
181 assertEquals("date EQ", 0, dateValidator.compareDates(value, diffHour, EST));
182 assertEquals("date EQ", 1, dateValidator.compareDates(value, sameDayTwoAm, EST));
183 assertEquals("date GT", 1, dateValidator.compareDates(value, date20050822, EST));
184 }
185 }