1// © 2016 and later: Unicode, Inc. and others. 2// License & terms of use: http://www.unicode.org/copyright.html#License 3/* 4 ******************************************************************************* 5 * Copyright (C) 2006-2012, International Business Machines Corporation and * 6 * others. All Rights Reserved. * 7 ******************************************************************************* 8 */ 9 10package com.ibm.icu.tests; 11 12import java.util.Date; 13import java.util.Locale; 14 15import com.ibm.icu.text.DateFormat; 16import com.ibm.icu.util.Calendar; 17import com.ibm.icu.util.TimeZone; 18import com.ibm.icu.util.ULocale; 19 20public class CalendarTest extends ICUTestCase { 21 22 /* 23 * Test method for 'com.ibm.icu.util.Calendar.hashCode()' 24 */ 25 public void testHashCode() { 26 Calendar cal1 = Calendar.getInstance(); 27 Calendar cal2 = Calendar.getInstance(); 28 Calendar cal3 = Calendar.getInstance(); 29 30 long t = System.currentTimeMillis(); 31 cal1.setTimeInMillis(t); 32 cal2.setTimeInMillis(t); 33 cal3.setTimeInMillis(t); 34 35 cal3.setMinimalDaysInFirstWeek(cal3.getMinimalDaysInFirstWeek()+1); 36 testEHCS(cal1, cal2, cal3); 37 } 38 39 /* 40 * Test method for 'com.ibm.icu.util.Calendar.Calendar(Calendar)' 41 */ 42 public void testCalendar() { 43 // tested implicitly everywhere 44 } 45 46 /* 47 * Test method for 'com.ibm.icu.util.Calendar.getInstance()' 48 */ 49 public void testGetInstance() { 50 // tested by testEHCS 51 } 52 53 /* 54 * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone)' 55 */ 56 public void testGetInstanceTimeZone() { 57 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 58 Calendar cal = Calendar.getInstance(tz); 59 assertNotNull(cal); 60 assertNotNull(cal.getTime()); 61 assertEquals(tz, cal.getTimeZone()); 62 } 63 64 /* 65 * Test method for 'com.ibm.icu.util.Calendar.getInstance(Locale)' 66 */ 67 public void testGetInstanceLocale() { 68 Calendar cal = Calendar.getInstance(Locale.US); 69 assertNotNull(cal); 70 assertNotNull(cal.getTime()); 71 } 72 73 /* 74 * Test method for 'com.ibm.icu.util.Calendar.getInstance(ULocale)' 75 */ 76 public void testGetInstanceULocale() { 77 Calendar cal = Calendar.getInstance(ULocale.US); 78 assertNotNull(cal); 79 assertNotNull(cal.getTime()); 80 } 81 82 /* 83 * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, Locale)' 84 */ 85 public void testGetInstanceTimeZoneLocale() { 86 TimeZone tz = TimeZone.getTimeZone("America/New_York"); 87 Calendar cal = Calendar.getInstance(tz, Locale.US); 88 assertNotNull(cal); 89 assertNotNull(cal.getTime()); 90 } 91 92 /* 93 * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, ULocale)' 94 */ 95 public void testGetInstanceTimeZoneULocale() { 96 TimeZone tz = TimeZone.getTimeZone("America/New_York"); 97 Calendar cal = Calendar.getInstance(tz, ULocale.US); 98 assertNotNull(cal); 99 assertNotNull(cal.getTime()); 100 } 101 102 /* 103 * Test method for 'com.ibm.icu.util.Calendar.getAvailableLocales()' 104 */ 105 public void testGetAvailableLocales() { 106 assertNotNull(Calendar.getAvailableLocales()); 107 } 108 109 /* 110 * Test method for 'com.ibm.icu.util.Calendar.getAvailableULocales()' 111 */ 112 public void testGetAvailableULocales() { 113 assertNotNull(Calendar.getAvailableULocales()); 114 } 115 116 /* 117 * Test method for 'com.ibm.icu.util.Calendar.getTime()' 118 */ 119 public void testGetTime() { 120 Calendar cal = Calendar.getInstance(); 121 assertNotNull(cal.getTime()); 122 } 123 124 /* 125 * Test method for 'com.ibm.icu.util.Calendar.setTime(Date)' 126 */ 127 public void testSetTime() { 128 Calendar cal = Calendar.getInstance(); 129 cal.clear(); 130 cal.set(2006, 0, 20, 9, 30, 0); 131 Date date = cal.getTime(); 132 cal = Calendar.getInstance(); 133 cal.setTime(date); 134 assertEquals(date, cal.getTime()); 135 } 136 137 /* 138 * Test method for 'com.ibm.icu.util.Calendar.getTimeInMillis()' 139 */ 140 public void testGetTimeInMillis() { 141 Calendar cal = Calendar.getInstance(); 142 assertTrue(0 != cal.getTimeInMillis()); 143 } 144 145 /* 146 * Test method for 'com.ibm.icu.util.Calendar.setTimeInMillis(long)' 147 */ 148 public void testSetTimeInMillis() { 149 Calendar cal = Calendar.getInstance(); 150 cal.clear(); 151 cal.set(2006, 0, 20, 9, 30, 0); 152 long millis = cal.getTimeInMillis(); 153 Date date = cal.getTime(); 154 155 cal = Calendar.getInstance(); 156 cal.setTimeInMillis(millis); 157 158 assertEquals(date, cal.getTime()); 159 } 160 161 /* 162 * Test method for 'com.ibm.icu.util.Calendar.get(int)' 163 */ 164 public void testGet() { 165 Calendar cal = Calendar.getInstance(); 166 cal.clear(); 167 cal.set(2006, 0, 20, 9, 30, 0); 168 assertEquals(0, cal.get(Calendar.MONTH)); 169 assertEquals(20, cal.get(Calendar.DAY_OF_MONTH)); 170 assertEquals(30, cal.get(Calendar.MINUTE)); 171 } 172 173 /* 174 * Test method for 'com.ibm.icu.util.Calendar.set(int, int)' 175 */ 176 public void testSetIntInt() { 177 Calendar cal = Calendar.getInstance(); 178 cal.set(Calendar.YEAR, 1977); 179 assertEquals(1977, cal.get(Calendar.YEAR)); 180 } 181 182 /* 183 * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int)' 184 */ 185 public void testSetIntIntInt() { 186 Calendar cal = Calendar.getInstance(); 187 cal.set(1997, 9, 15); 188 assertEquals(15, cal.get(Calendar.DATE)); 189 } 190 191 /* 192 * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int)' 193 */ 194 public void testSetIntIntIntIntInt() { 195 Calendar cal = Calendar.getInstance(); 196 cal.set(1997, 9, 15, 14, 25); 197 assertEquals(25, cal.get(Calendar.MINUTE)); 198 } 199 200 /* 201 * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int, int)' 202 */ 203 public void testSetIntIntIntIntIntInt() { 204 Calendar cal = Calendar.getInstance(); 205 cal.set(1997, 9, 15, 14, 25, 51); 206 assertEquals(51, cal.get(Calendar.SECOND)); 207 } 208 209 /* 210 * Test method for 'com.ibm.icu.util.Calendar.clear()' 211 */ 212 public void testClear() { 213 Calendar cal = Calendar.getInstance(); 214 cal.set(1997, 9, 15, 14, 25, 51); 215 cal.clear(); 216 assertEquals(0, cal.get(Calendar.MONTH)); 217 } 218 219 /* 220 * Test method for 'com.ibm.icu.util.Calendar.clear(int)' 221 */ 222 public void testClearInt() { 223 Calendar cal = Calendar.getInstance(); 224 cal.set(1997, 9, 15, 14, 25, 51); 225 assertTrue(cal.isSet(Calendar.DAY_OF_MONTH)); 226 cal.clear(Calendar.DAY_OF_MONTH); 227 assertFalse(cal.isSet(Calendar.DAY_OF_MONTH)); 228 } 229 230 /* 231 * Test method for 'com.ibm.icu.util.Calendar.isSet(int)' 232 */ 233 public void testIsSet() { 234 // see testClearInt 235 } 236 237 /* 238 * Test method for 'com.ibm.icu.util.Calendar.equals(Object)' 239 */ 240 public void testEqualsObject() { 241 // tested by testHashCode 242 } 243 244 /* 245 * Test method for 'com.ibm.icu.util.Calendar.isEquivalentTo(Calendar)' 246 */ 247 public void testIsEquivalentTo() { 248 Calendar cal = Calendar.getInstance(); 249 Calendar cal2 = Calendar.getInstance(); 250 cal2.set(1994, 6, 21, 8, 7); 251 assertTrue(cal.isEquivalentTo(cal2)); 252 cal.setTimeZone(TimeZone.getTimeZone("CST")); 253 cal2.setTimeZone(TimeZone.getTimeZone("PDT")); 254 assertFalse(cal.isEquivalentTo(cal2)); 255 } 256 257 /* 258 * Test method for 'com.ibm.icu.util.Calendar.before(Object)' 259 */ 260 public void testBefore() { 261 Calendar cal = Calendar.getInstance(); 262 cal.set(Calendar.YEAR, 1990); 263 assertTrue(cal.before(new Date())); 264 assertTrue(cal.before(Calendar.getInstance())); 265 } 266 267 /* 268 * Test method for 'com.ibm.icu.util.Calendar.after(Object)' 269 */ 270 public void testAfter() { 271 Calendar cal = Calendar.getInstance(); 272 cal.set(Calendar.YEAR, 3058); 273 assertTrue(cal.after(new Date())); 274 assertTrue(cal.after(Calendar.getInstance())); 275 } 276 277 /* 278 * Test method for 'com.ibm.icu.util.Calendar.getActualMaximum(int)' 279 */ 280 public void testGetActualMaximum() { 281 Calendar cal = Calendar.getInstance(Locale.US); 282 assertEquals(11, cal.getActualMaximum(Calendar.MONTH)); 283 } 284 285 /* 286 * Test method for 'com.ibm.icu.util.Calendar.getActualMinimum(int)' 287 */ 288 public void testGetActualMinimum() { 289 Calendar cal = Calendar.getInstance(Locale.US); 290 assertEquals(0, cal.getActualMinimum(Calendar.MONTH)); 291 } 292 293 /* 294 * Test method for 'com.ibm.icu.util.Calendar.roll(int, boolean)' 295 */ 296 public void testRollIntBoolean() { 297 Calendar cal = Calendar.getInstance(Locale.US); 298 cal.set(1997, 1, 27); 299 cal.roll(Calendar.DATE, true); 300 assertEquals(28, cal.get(Calendar.DATE)); 301 } 302 303 /* 304 * Test method for 'com.ibm.icu.util.Calendar.roll(int, int)' 305 */ 306 public void testRollIntInt() { 307 Calendar cal = Calendar.getInstance(Locale.US); 308 cal.set(1997, 1, 27); 309 cal.roll(Calendar.DATE, 3); 310 assertEquals(2, cal.get(Calendar.DATE)); 311 } 312 313 /* 314 * Test method for 'com.ibm.icu.util.Calendar.add(int, int)' 315 */ 316 public void testAdd() { 317 Calendar cal = Calendar.getInstance(Locale.US); 318 cal.set(1997, 1, 27); 319 cal.add(Calendar.DATE, 3); 320 assertEquals(2, cal.get(Calendar.DATE)); 321 assertEquals(2, cal.get(Calendar.MONTH)); 322 } 323 324 /* 325 * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(Locale)' 326 */ 327 public void testGetDisplayNameLocale() { 328 Calendar cal = Calendar.getInstance(); 329 assertEquals("Gregorian Calendar", cal.getDisplayName(Locale.US)); 330 } 331 332 /* 333 * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(ULocale)' 334 */ 335 public void testGetDisplayNameULocale() { 336 Calendar cal = Calendar.getInstance(); 337 assertEquals("Gregorian Calendar", cal.getDisplayName(ULocale.US)); 338 } 339 340 /* 341 * Test method for 'com.ibm.icu.util.Calendar.compareTo(Calendar)' 342 */ 343 public void testCompareToCalendar() { 344 Calendar cal = Calendar.getInstance(); 345 cal.set(Calendar.YEAR, 1990); 346 assertTrue(0 > cal.compareTo(Calendar.getInstance())); 347 } 348 349 /* 350 * Test method for 'com.ibm.icu.util.Calendar.compareTo(Object)' 351 */ 352 public void testCompareToObject() { 353 Calendar cal = Calendar.getInstance(); 354 cal.set(Calendar.YEAR, 1990); 355 assertTrue(0 > cal.compareTo(Calendar.getInstance())); 356 } 357 358 /* 359 * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, Locale)' 360 */ 361 public void testGetDateTimeFormatIntIntLocale() { 362 Calendar cal = Calendar.getInstance(); 363 cal.set(1990, 8, 16, 20, 3); 364 DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, Locale.US); 365 assertEquals("September 16, 1990 8:03 PM", df.format(cal)); 366 } 367 368 /* 369 * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, ULocale)' 370 */ 371 public void testGetDateTimeFormatIntIntULocale() { 372 Calendar cal = Calendar.getInstance(); 373 cal.set(1990, 8, 16, 20, 3); 374 DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, ULocale.US); 375 assertEquals("September 16, 1990 8:03 PM", df.format(cal)); 376 } 377 378 /* 379 * Test method for 'com.ibm.icu.util.Calendar.fieldDifference(Date, int)' 380 */ 381 public void testFieldDifference() { 382 Calendar cal = Calendar.getInstance(); 383 cal.set(Calendar.DAY_OF_MONTH, 0); 384 Date date = cal.getTime(); 385 cal.add(Calendar.DAY_OF_MONTH, 5); 386 assertEquals(-5, cal.fieldDifference(date, Calendar.DAY_OF_MONTH)); 387 } 388 389 /* 390 * Test method for 'com.ibm.icu.util.Calendar.getTimeZone()' 391 */ 392 public void testGetTimeZone() { 393 Calendar cal = Calendar.getInstance(); 394 assertNotNull(cal.getTimeZone()); 395 } 396 397 /* 398 * Test method for 'com.ibm.icu.util.Calendar.setTimeZone(TimeZone)' 399 */ 400 public void testSetTimeZone() { 401 Calendar cal = Calendar.getInstance(); 402 TimeZone value1 = cal.getTimeZone(); 403 String tzn = "PDT".equals(value1.getID()) ? "CST" : "PDT"; 404 TimeZone value2 = TimeZone.getTimeZone(tzn); 405 cal.setTimeZone(value2); 406 TimeZone result = cal.getTimeZone(); 407 assertNotEqual(value1, result); 408 assertEquals(value2, result); 409 } 410 411 /* 412 * Test method for 'com.ibm.icu.util.Calendar.setLenient(boolean)' 413 */ 414 public void testSetLenient() { 415 Calendar cal = Calendar.getInstance(); 416 boolean lenient = cal.isLenient(); 417 cal.setLenient(!lenient); 418 assertFalse(lenient == cal.isLenient()); 419 420 // not testing if it has the expected effect 421 } 422 423 /* 424 * Test method for 'com.ibm.icu.util.Calendar.isLenient()' 425 */ 426 public void testIsLenient() { 427 // tested by testSetLenient 428 } 429 430 /* 431 * Test method for 'com.ibm.icu.util.Calendar.setFirstDayOfWeek(int)' 432 */ 433 public void testSetFirstDayOfWeek() { 434 Calendar cal = Calendar.getInstance(); 435 int firstDay = cal.getFirstDayOfWeek(); 436 cal.setFirstDayOfWeek(firstDay+1); 437 assertEquals(firstDay+1, cal.getFirstDayOfWeek()); 438 439 // don't test functionality 440 } 441 442 /* 443 * Test method for 'com.ibm.icu.util.Calendar.getFirstDayOfWeek()' 444 */ 445 public void testGetFirstDayOfWeek() { 446 // tested by testSetFirstDayOfWeek 447 } 448 449 /* 450 * Test method for 'com.ibm.icu.util.Calendar.setMinimalDaysInFirstWeek(int)' 451 */ 452 public void testSetMinimalDaysInFirstWeek() { 453 Calendar cal = Calendar.getInstance(); 454 int firstDay = cal.getMinimalDaysInFirstWeek(); 455 cal.setMinimalDaysInFirstWeek(firstDay+1); 456 assertEquals(firstDay+1, cal.getMinimalDaysInFirstWeek()); 457 458 // don't test functionality 459 } 460 461 /* 462 * Test method for 'com.ibm.icu.util.Calendar.getMinimalDaysInFirstWeek()' 463 */ 464 public void testGetMinimalDaysInFirstWeek() { 465 // tested by testSetMinimalDaysInFirstWeek 466 } 467 468 /* 469 * Test method for 'com.ibm.icu.util.Calendar.getMinimum(int)' 470 */ 471 public void testGetMinimum() { 472 Calendar cal = Calendar.getInstance(); 473 assertEquals(1, cal.getMinimum(Calendar.DAY_OF_WEEK)); 474 } 475 476 /* 477 * Test method for 'com.ibm.icu.util.Calendar.getMaximum(int)' 478 */ 479 public void testGetMaximum() { 480 Calendar cal = Calendar.getInstance(); 481 assertEquals(7, cal.getMaximum(Calendar.DAY_OF_WEEK)); 482 } 483 484 /* 485 * Test method for 'com.ibm.icu.util.Calendar.getGreatestMinimum(int)' 486 */ 487 public void testGetGreatestMinimum() { 488 Calendar cal = Calendar.getInstance(); 489 assertEquals(1, cal.getGreatestMinimum(Calendar.DATE)); 490 } 491 492 /* 493 * Test method for 'com.ibm.icu.util.Calendar.getLeastMaximum(int)' 494 */ 495 public void testGetLeastMaximum() { 496 Calendar cal = Calendar.getInstance(); 497 assertEquals(28, cal.getLeastMaximum(Calendar.DATE)); 498 } 499 500 /* 501 * Test method for 'com.ibm.icu.util.Calendar.getDayOfWeekType(int)' 502 */ 503 public void testGetDayOfWeekType() { 504 Calendar cal = Calendar.getInstance(Locale.US); 505 assertEquals(Calendar.WEEKDAY, cal.getDayOfWeekType(Calendar.FRIDAY)); 506 assertEquals(Calendar.WEEKEND, cal.getDayOfWeekType(Calendar.SATURDAY)); 507 } 508 509 /* 510 * Test method for 'com.ibm.icu.util.Calendar.isWeekend(Date)' 511 */ 512 public void testIsWeekendDate() { 513 Calendar cal = Calendar.getInstance(Locale.US); 514 cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); 515 assertTrue(cal.isWeekend(cal.getTime())); 516 cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); 517 assertFalse(cal.isWeekend(cal.getTime())); 518 } 519 520 /* 521 * Test method for 'com.ibm.icu.util.Calendar.isWeekend()' 522 */ 523 public void testIsWeekend() { 524 Calendar cal = Calendar.getInstance(Locale.US); 525 cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); 526 assertTrue(cal.isWeekend()); 527 cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); 528 assertFalse(cal.isWeekend()); 529 } 530 531 /* 532 * Test method for 'com.ibm.icu.util.Calendar.clone()' 533 */ 534 public void testClone() { 535 // tested by testHashCode 536 } 537 538 /* 539 * Test method for 'com.ibm.icu.util.Calendar.toString()' 540 */ 541 public void testToString() { 542 Calendar cal = Calendar.getInstance(); 543 assertNotNull(cal.toString()); 544 } 545 546 /* 547 * Test method for 'com.ibm.icu.util.Calendar.getType()' 548 */ 549 public void testGetType() { 550 Calendar cal = Calendar.getInstance(Locale.US); 551 assertEquals("gregorian", cal.getType()); 552 } 553} 554