2 *******************************************************************************
\r
3 * Copyright (C) 2006-2008, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
8 package com.ibm.icu.tests;
\r
10 import java.util.Date;
\r
11 import java.util.Locale;
\r
13 import com.ibm.icu.text.DateFormat;
\r
14 import com.ibm.icu.util.Calendar;
\r
15 import com.ibm.icu.util.TimeZone;
\r
16 import com.ibm.icu.util.ULocale;
\r
18 public class CalendarTest extends ICUTestCase {
\r
21 * Test method for 'com.ibm.icu.util.Calendar.hashCode()'
\r
23 public void testHashCode() {
\r
24 Calendar cal1 = Calendar.getInstance();
\r
25 Calendar cal2 = Calendar.getInstance();
\r
26 Calendar cal3 = Calendar.getInstance();
\r
27 cal3.setMinimalDaysInFirstWeek(cal3.getMinimalDaysInFirstWeek()+1);
\r
28 testEHCS(cal1, cal2, cal3);
\r
32 * Test method for 'com.ibm.icu.util.Calendar.Calendar(Calendar)'
\r
34 public void testCalendar() {
\r
35 // tested implicitly everywhere
\r
39 * Test method for 'com.ibm.icu.util.Calendar.getInstance()'
\r
41 public void testGetInstance() {
\r
42 // tested by testEHCS
\r
46 * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone)'
\r
48 public void testGetInstanceTimeZone() {
\r
49 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
\r
50 Calendar cal = Calendar.getInstance(tz);
\r
52 assertNotNull(cal.getTime());
\r
53 assertEquals(tz, cal.getTimeZone());
\r
57 * Test method for 'com.ibm.icu.util.Calendar.getInstance(Locale)'
\r
59 public void testGetInstanceLocale() {
\r
60 Calendar cal = Calendar.getInstance(Locale.US);
\r
62 assertNotNull(cal.getTime());
\r
66 * Test method for 'com.ibm.icu.util.Calendar.getInstance(ULocale)'
\r
68 public void testGetInstanceULocale() {
\r
69 Calendar cal = Calendar.getInstance(ULocale.US);
\r
71 assertNotNull(cal.getTime());
\r
75 * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, Locale)'
\r
77 public void testGetInstanceTimeZoneLocale() {
\r
78 TimeZone tz = TimeZone.getTimeZone("America/New_York");
\r
79 Calendar cal = Calendar.getInstance(tz, Locale.US);
\r
81 assertNotNull(cal.getTime());
\r
85 * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, ULocale)'
\r
87 public void testGetInstanceTimeZoneULocale() {
\r
88 TimeZone tz = TimeZone.getTimeZone("America/New_York");
\r
89 Calendar cal = Calendar.getInstance(tz, ULocale.US);
\r
91 assertNotNull(cal.getTime());
\r
95 * Test method for 'com.ibm.icu.util.Calendar.getAvailableLocales()'
\r
97 public void testGetAvailableLocales() {
\r
98 assertNotNull(Calendar.getAvailableLocales());
\r
102 * Test method for 'com.ibm.icu.util.Calendar.getAvailableULocales()'
\r
104 public void testGetAvailableULocales() {
\r
105 assertNotNull(Calendar.getAvailableULocales());
\r
109 * Test method for 'com.ibm.icu.util.Calendar.getTime()'
\r
111 public void testGetTime() {
\r
112 Calendar cal = Calendar.getInstance();
\r
113 assertNotNull(cal.getTime());
\r
117 * Test method for 'com.ibm.icu.util.Calendar.setTime(Date)'
\r
119 public void testSetTime() {
\r
120 Calendar cal = Calendar.getInstance();
\r
122 cal.set(2006, 0, 20, 9, 30, 0);
\r
123 Date date = cal.getTime();
\r
124 cal = Calendar.getInstance();
\r
126 assertEquals(date, cal.getTime());
\r
130 * Test method for 'com.ibm.icu.util.Calendar.getTimeInMillis()'
\r
132 public void testGetTimeInMillis() {
\r
133 Calendar cal = Calendar.getInstance();
\r
134 assertTrue(0 != cal.getTimeInMillis());
\r
138 * Test method for 'com.ibm.icu.util.Calendar.setTimeInMillis(long)'
\r
140 public void testSetTimeInMillis() {
\r
141 Calendar cal = Calendar.getInstance();
\r
143 cal.set(2006, 0, 20, 9, 30, 0);
\r
144 long millis = cal.getTimeInMillis();
\r
145 Date date = cal.getTime();
\r
147 cal = Calendar.getInstance();
\r
148 cal.setTimeInMillis(millis);
\r
150 assertEquals(date, cal.getTime());
\r
154 * Test method for 'com.ibm.icu.util.Calendar.get(int)'
\r
156 public void testGet() {
\r
157 Calendar cal = Calendar.getInstance();
\r
159 cal.set(2006, 0, 20, 9, 30, 0);
\r
160 assertEquals(0, cal.get(Calendar.MONTH));
\r
161 assertEquals(20, cal.get(Calendar.DAY_OF_MONTH));
\r
162 assertEquals(30, cal.get(Calendar.MINUTE));
\r
166 * Test method for 'com.ibm.icu.util.Calendar.set(int, int)'
\r
168 public void testSetIntInt() {
\r
169 Calendar cal = Calendar.getInstance();
\r
170 cal.set(Calendar.YEAR, 1977);
\r
171 assertEquals(1977, cal.get(Calendar.YEAR));
\r
175 * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int)'
\r
177 public void testSetIntIntInt() {
\r
178 Calendar cal = Calendar.getInstance();
\r
179 cal.set(1997, 9, 15);
\r
180 assertEquals(15, cal.get(Calendar.DATE));
\r
184 * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int)'
\r
186 public void testSetIntIntIntIntInt() {
\r
187 Calendar cal = Calendar.getInstance();
\r
188 cal.set(1997, 9, 15, 14, 25);
\r
189 assertEquals(25, cal.get(Calendar.MINUTE));
\r
193 * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int, int)'
\r
195 public void testSetIntIntIntIntIntInt() {
\r
196 Calendar cal = Calendar.getInstance();
\r
197 cal.set(1997, 9, 15, 14, 25, 51);
\r
198 assertEquals(51, cal.get(Calendar.SECOND));
\r
202 * Test method for 'com.ibm.icu.util.Calendar.clear()'
\r
204 public void testClear() {
\r
205 Calendar cal = Calendar.getInstance();
\r
206 cal.set(1997, 9, 15, 14, 25, 51);
\r
208 assertEquals(0, cal.get(Calendar.MONTH));
\r
212 * Test method for 'com.ibm.icu.util.Calendar.clear(int)'
\r
214 public void testClearInt() {
\r
215 Calendar cal = Calendar.getInstance();
\r
216 cal.set(1997, 9, 15, 14, 25, 51);
\r
217 assertTrue(cal.isSet(Calendar.DAY_OF_MONTH));
\r
218 cal.clear(Calendar.DAY_OF_MONTH);
\r
219 assertFalse(cal.isSet(Calendar.DAY_OF_MONTH));
\r
223 * Test method for 'com.ibm.icu.util.Calendar.isSet(int)'
\r
225 public void testIsSet() {
\r
226 // see testClearInt
\r
230 * Test method for 'com.ibm.icu.util.Calendar.equals(Object)'
\r
232 public void testEqualsObject() {
\r
233 // tested by testHashCode
\r
237 * Test method for 'com.ibm.icu.util.Calendar.isEquivalentTo(Calendar)'
\r
239 public void testIsEquivalentTo() {
\r
240 Calendar cal = Calendar.getInstance();
\r
241 Calendar cal2 = Calendar.getInstance();
\r
242 cal2.set(1994, 6, 21, 8, 7);
\r
243 assertTrue(cal.isEquivalentTo(cal2));
\r
244 cal.setTimeZone(TimeZone.getTimeZone("CST"));
\r
245 cal2.setTimeZone(TimeZone.getTimeZone("PDT"));
\r
246 assertFalse(cal.isEquivalentTo(cal2));
\r
250 * Test method for 'com.ibm.icu.util.Calendar.before(Object)'
\r
252 public void testBefore() {
\r
253 Calendar cal = Calendar.getInstance();
\r
254 cal.set(Calendar.YEAR, 1990);
\r
255 assertTrue(cal.before(new Date()));
\r
256 assertTrue(cal.before(Calendar.getInstance()));
\r
260 * Test method for 'com.ibm.icu.util.Calendar.after(Object)'
\r
262 public void testAfter() {
\r
263 Calendar cal = Calendar.getInstance();
\r
264 cal.set(Calendar.YEAR, 3058);
\r
265 assertTrue(cal.after(new Date()));
\r
266 assertTrue(cal.after(Calendar.getInstance()));
\r
270 * Test method for 'com.ibm.icu.util.Calendar.getActualMaximum(int)'
\r
272 public void testGetActualMaximum() {
\r
273 Calendar cal = Calendar.getInstance(Locale.US);
\r
274 assertEquals(11, cal.getActualMaximum(Calendar.MONTH));
\r
278 * Test method for 'com.ibm.icu.util.Calendar.getActualMinimum(int)'
\r
280 public void testGetActualMinimum() {
\r
281 Calendar cal = Calendar.getInstance(Locale.US);
\r
282 assertEquals(0, cal.getActualMinimum(Calendar.MONTH));
\r
286 * Test method for 'com.ibm.icu.util.Calendar.roll(int, boolean)'
\r
288 public void testRollIntBoolean() {
\r
289 Calendar cal = Calendar.getInstance(Locale.US);
\r
290 cal.set(1997, 1, 27);
\r
291 cal.roll(Calendar.DATE, true);
\r
292 assertEquals(28, cal.get(Calendar.DATE));
\r
296 * Test method for 'com.ibm.icu.util.Calendar.roll(int, int)'
\r
298 public void testRollIntInt() {
\r
299 Calendar cal = Calendar.getInstance(Locale.US);
\r
300 cal.set(1997, 1, 27);
\r
301 cal.roll(Calendar.DATE, 3);
\r
302 assertEquals(2, cal.get(Calendar.DATE));
\r
306 * Test method for 'com.ibm.icu.util.Calendar.add(int, int)'
\r
308 public void testAdd() {
\r
309 Calendar cal = Calendar.getInstance(Locale.US);
\r
310 cal.set(1997, 1, 27);
\r
311 cal.add(Calendar.DATE, 3);
\r
312 assertEquals(2, cal.get(Calendar.DATE));
\r
313 assertEquals(2, cal.get(Calendar.MONTH));
\r
317 * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(Locale)'
\r
319 public void testGetDisplayNameLocale() {
\r
320 Calendar cal = Calendar.getInstance();
\r
321 assertEquals("Calendar", cal.getDisplayName(Locale.US));
\r
325 * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(ULocale)'
\r
327 public void testGetDisplayNameULocale() {
\r
328 Calendar cal = Calendar.getInstance();
\r
329 assertEquals("Calendar", cal.getDisplayName(ULocale.US));
\r
333 * Test method for 'com.ibm.icu.util.Calendar.compareTo(Calendar)'
\r
335 public void testCompareToCalendar() {
\r
336 Calendar cal = Calendar.getInstance();
\r
337 cal.set(Calendar.YEAR, 1990);
\r
338 assertTrue(0 > cal.compareTo(Calendar.getInstance()));
\r
342 * Test method for 'com.ibm.icu.util.Calendar.compareTo(Object)'
\r
344 public void testCompareToObject() {
\r
345 Calendar cal = Calendar.getInstance();
\r
346 cal.set(Calendar.YEAR, 1990);
\r
347 assertTrue(0 > cal.compareTo((Object)Calendar.getInstance()));
\r
351 * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, Locale)'
\r
353 public void testGetDateTimeFormatIntIntLocale() {
\r
354 Calendar cal = Calendar.getInstance();
\r
355 cal.set(1990, 8, 16, 20, 3);
\r
356 DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, Locale.US);
\r
357 assertEquals("September 16, 1990 8:03 PM", df.format(cal));
\r
361 * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, ULocale)'
\r
363 public void testGetDateTimeFormatIntIntULocale() {
\r
364 Calendar cal = Calendar.getInstance();
\r
365 cal.set(1990, 8, 16, 20, 3);
\r
366 DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, ULocale.US);
\r
367 assertEquals("September 16, 1990 8:03 PM", df.format(cal));
\r
371 * Test method for 'com.ibm.icu.util.Calendar.fieldDifference(Date, int)'
\r
373 public void testFieldDifference() {
\r
374 Calendar cal = Calendar.getInstance();
\r
375 cal.set(Calendar.DAY_OF_MONTH, 0);
\r
376 Date date = cal.getTime();
\r
377 cal.add(Calendar.DAY_OF_MONTH, 5);
\r
378 assertEquals(-5, cal.fieldDifference(date, Calendar.DAY_OF_MONTH));
\r
382 * Test method for 'com.ibm.icu.util.Calendar.getTimeZone()'
\r
384 public void testGetTimeZone() {
\r
385 Calendar cal = Calendar.getInstance();
\r
386 assertNotNull(cal.getTimeZone());
\r
390 * Test method for 'com.ibm.icu.util.Calendar.setTimeZone(TimeZone)'
\r
392 public void testSetTimeZone() {
\r
393 Calendar cal = Calendar.getInstance();
\r
394 TimeZone value1 = cal.getTimeZone();
\r
395 String tzn = "PDT".equals(value1.getID()) ? "CST" : "PDT";
\r
396 TimeZone value2 = TimeZone.getTimeZone(tzn);
\r
397 cal.setTimeZone(value2);
\r
398 TimeZone result = cal.getTimeZone();
\r
399 assertNotEqual(value1, result);
\r
400 assertEquals(value2, result);
\r
404 * Test method for 'com.ibm.icu.util.Calendar.setLenient(boolean)'
\r
406 public void testSetLenient() {
\r
407 Calendar cal = Calendar.getInstance();
\r
408 boolean lenient = cal.isLenient();
\r
409 cal.setLenient(!lenient);
\r
410 assertFalse(lenient == cal.isLenient());
\r
412 // not testing if it has the expected effect
\r
416 * Test method for 'com.ibm.icu.util.Calendar.isLenient()'
\r
418 public void testIsLenient() {
\r
419 // tested by testSetLenient
\r
423 * Test method for 'com.ibm.icu.util.Calendar.setFirstDayOfWeek(int)'
\r
425 public void testSetFirstDayOfWeek() {
\r
426 Calendar cal = Calendar.getInstance();
\r
427 int firstDay = cal.getFirstDayOfWeek();
\r
428 cal.setFirstDayOfWeek(firstDay+1);
\r
429 assertEquals(firstDay+1, cal.getFirstDayOfWeek());
\r
431 // don't test functionality
\r
435 * Test method for 'com.ibm.icu.util.Calendar.getFirstDayOfWeek()'
\r
437 public void testGetFirstDayOfWeek() {
\r
438 // tested by testSetFirstDayOfWeek
\r
442 * Test method for 'com.ibm.icu.util.Calendar.setMinimalDaysInFirstWeek(int)'
\r
444 public void testSetMinimalDaysInFirstWeek() {
\r
445 Calendar cal = Calendar.getInstance();
\r
446 int firstDay = cal.getMinimalDaysInFirstWeek();
\r
447 cal.setMinimalDaysInFirstWeek(firstDay+1);
\r
448 assertEquals(firstDay+1, cal.getMinimalDaysInFirstWeek());
\r
450 // don't test functionality
\r
454 * Test method for 'com.ibm.icu.util.Calendar.getMinimalDaysInFirstWeek()'
\r
456 public void testGetMinimalDaysInFirstWeek() {
\r
457 // tested by testSetMinimalDaysInFirstWeek
\r
461 * Test method for 'com.ibm.icu.util.Calendar.getMinimum(int)'
\r
463 public void testGetMinimum() {
\r
464 Calendar cal = Calendar.getInstance();
\r
465 assertEquals(1, cal.getMinimum(Calendar.DAY_OF_WEEK));
\r
469 * Test method for 'com.ibm.icu.util.Calendar.getMaximum(int)'
\r
471 public void testGetMaximum() {
\r
472 Calendar cal = Calendar.getInstance();
\r
473 assertEquals(7, cal.getMaximum(Calendar.DAY_OF_WEEK));
\r
477 * Test method for 'com.ibm.icu.util.Calendar.getGreatestMinimum(int)'
\r
479 public void testGetGreatestMinimum() {
\r
480 Calendar cal = Calendar.getInstance();
\r
481 assertEquals(1, cal.getGreatestMinimum(Calendar.DATE));
\r
485 * Test method for 'com.ibm.icu.util.Calendar.getLeastMaximum(int)'
\r
487 public void testGetLeastMaximum() {
\r
488 Calendar cal = Calendar.getInstance();
\r
489 assertEquals(28, cal.getLeastMaximum(Calendar.DATE));
\r
493 * Test method for 'com.ibm.icu.util.Calendar.getDayOfWeekType(int)'
\r
495 public void testGetDayOfWeekType() {
\r
496 Calendar cal = Calendar.getInstance(Locale.US);
\r
497 assertEquals(Calendar.WEEKDAY, cal.getDayOfWeekType(Calendar.FRIDAY));
\r
498 assertEquals(Calendar.WEEKEND, cal.getDayOfWeekType(Calendar.SATURDAY));
\r
502 * Test method for 'com.ibm.icu.util.Calendar.getWeekendTransition(int)'
\r
504 public void testGetWeekendTransition() {
\r
505 Calendar cal = Calendar.getInstance(Locale.US);
\r
507 cal.getWeekendTransition(Calendar.WEEKEND_ONSET);
\r
508 fail("expected IllegalArgumentException from getWeekendTransition");
\r
510 catch (IllegalArgumentException e) {
\r
516 * Test method for 'com.ibm.icu.util.Calendar.isWeekend(Date)'
\r
518 public void testIsWeekendDate() {
\r
519 Calendar cal = Calendar.getInstance(Locale.US);
\r
520 cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
\r
521 assertTrue(cal.isWeekend(cal.getTime()));
\r
522 cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
\r
523 assertFalse(cal.isWeekend(cal.getTime()));
\r
527 * Test method for 'com.ibm.icu.util.Calendar.isWeekend()'
\r
529 public void testIsWeekend() {
\r
530 Calendar cal = Calendar.getInstance(Locale.US);
\r
531 cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
\r
532 assertTrue(cal.isWeekend());
\r
533 cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
\r
534 assertFalse(cal.isWeekend());
\r
538 * Test method for 'com.ibm.icu.util.Calendar.clone()'
\r
540 public void testClone() {
\r
541 // tested by testHashCode
\r
545 * Test method for 'com.ibm.icu.util.Calendar.toString()'
\r
547 public void testToString() {
\r
548 Calendar cal = Calendar.getInstance();
\r
549 assertNotNull(cal.toString());
\r
553 * Test method for 'com.ibm.icu.util.Calendar.getType()'
\r
555 public void testGetType() {
\r
556 Calendar cal = Calendar.getInstance(Locale.US);
\r
557 assertEquals("gregorian", cal.getType());
\r