CalendarTest.java revision ddc0d4c2f8d3fea4ddaf6e611ffd73a1169447e8
1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18package tests.api.java.util; 19 20import dalvik.annotation.KnownFailure; 21import dalvik.annotation.TestLevel; 22import dalvik.annotation.TestTargetClass; 23import dalvik.annotation.TestTargetNew; 24import dalvik.annotation.TestTargets; 25import tests.support.Support_Locale; 26 27import java.util.Calendar; 28import java.util.Date; 29import java.util.Locale; 30import java.util.TimeZone; 31 32@TestTargetClass(Calendar.class) 33public class CalendarTest extends junit.framework.TestCase { 34 35 Locale defaultLocale; 36 37 /** 38 * @tests java.util.Calendar#set(int, int) 39 */ 40 @TestTargetNew( 41 level = TestLevel.COMPLETE, 42 notes = "", 43 method = "set", 44 args = {int.class, int.class} 45 ) 46 public void test_setII() { 47 // Test for correct result defined by the last set field 48 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("EST")); 49 50 cal.clear(); 51 cal.set(Calendar.YEAR, 2002); 52 assertTrue("Incorrect result 0: " + cal.getTime().getTime(), cal 53 .getTime().getTime() == 1009861200000L); 54 55 cal.clear(); 56 cal.set(Calendar.YEAR, 2002); 57 cal.set(Calendar.MONTH, Calendar.MARCH); 58 assertTrue("Incorrect result 0a: " + cal.getTime(), cal.getTime() 59 .getTime() == 1014958800000L); 60 61 cal.clear(); 62 cal.set(Calendar.YEAR, 2002); 63 cal.set(Calendar.DATE, 24); 64 assertTrue("Incorrect result 0b: " + cal.getTime(), cal.getTime() 65 .getTime() == 1011848400000L); 66 67 cal.set(Calendar.MONTH, Calendar.OCTOBER); 68 cal.set(Calendar.DATE, 31); 69 cal.set(Calendar.MONTH, Calendar.NOVEMBER); 70 cal.set(Calendar.DATE, 26); 71 assertTrue("Incorrect month: " + cal.get(Calendar.MONTH), cal 72 .get(Calendar.MONTH) == Calendar.NOVEMBER); 73 74 int dow = cal.get(Calendar.DAY_OF_WEEK); 75 cal.set(Calendar.DATE, 27); 76 assertTrue("Incorrect DAY_OF_WEEK: " + cal.get(Calendar.DAY_OF_WEEK) 77 + " expected: " + dow, cal.get(Calendar.DAY_OF_WEEK) != dow); 78 79 cal.clear(); 80 cal.set(Calendar.YEAR, 2002); 81 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 82 assertTrue("Incorrect result 0c1: " + cal.getTime().getTime(), cal 83 .getTime().getTime() == 1010379600000L); 84 85 cal.clear(); 86 cal.set(Calendar.YEAR, 2002); 87 cal.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); 88 assertTrue("Incorrect result 0c2: " + cal.getTime().getTime(), cal 89 .getTime().getTime() == 1009861200000L); 90 91 cal.clear(); 92 cal.set(Calendar.YEAR, 2002); 93 cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); 94 assertTrue("Incorrect result 0c3: " + cal.getTime(), cal.getTime() 95 .getTime() == 1010034000000L); 96 97 cal.clear(); 98 cal.set(Calendar.YEAR, 2002); 99 cal.set(Calendar.WEEK_OF_MONTH, 2); 100 assertTrue("Incorrect result 0d: " + cal.getTime(), cal.getTime() 101 .getTime() == 1010293200000L); 102 103 cal.clear(); 104 cal.set(Calendar.YEAR, 2002); 105 cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 2); 106 assertTrue("Incorrect result 0e: " + cal.getTime(), cal.getTime() 107 .getTime() == 1010898000000L); 108 109 cal.clear(); 110 cal.set(Calendar.YEAR, 2002); 111 cal.set(Calendar.WEEK_OF_YEAR, 11); 112 assertTrue("Incorrect result 0f: " + cal.getTime(), cal.getTime() 113 .getTime() == 1015736400000L); 114 115 cal.clear(); 116 cal.set(Calendar.YEAR, 2002); 117 cal.set(Calendar.DATE, 24); 118 cal.set(Calendar.WEEK_OF_YEAR, 11); 119 assertTrue("Incorrect result 0g: " + cal.getTime(), cal.getTime() 120 .getTime() == 1011848400000L); 121 122 cal.clear(); 123 cal.set(Calendar.YEAR, 2002); 124 cal.get(Calendar.WEEK_OF_YEAR); // Force fields to compute 125 cal.set(Calendar.WEEK_OF_YEAR, 11); 126 assertTrue("Incorrect result 0h: " + cal.getTime(), cal.getTime() 127 .getTime() == 1015909200000L); 128 129 // WEEK_OF_YEAR has priority over MONTH/DATE 130 cal.clear(); 131 cal.set(Calendar.YEAR, 2002); 132 cal.set(Calendar.DAY_OF_YEAR, 170); 133 cal.set(Calendar.WEEK_OF_YEAR, 11); 134 cal.set(Calendar.MONTH, Calendar.JANUARY); 135 cal.set(Calendar.DATE, 5); 136 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 137 assertTrue("Incorrect result 1: " + cal.getTime(), cal.getTime() 138 .getTime() == 1015822800000L); 139 140 // WEEK_OF_YEAR has priority over MONTH/DATE 141 cal.clear(); 142 cal.set(Calendar.YEAR, 2002); 143 cal.set(Calendar.WEEK_OF_YEAR, 11); 144 cal.set(Calendar.MONTH, Calendar.JANUARY); 145 cal.set(Calendar.DATE, 5); 146 cal.set(Calendar.DAY_OF_YEAR, 170); 147 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 148 assertTrue("Incorrect result 1a: " + cal.getTime(), cal.getTime() 149 .getTime() == 1015822800000L); 150 151 // DAY_OF_WEEK has no effect when other fields not set 152 cal.clear(); 153 cal.set(Calendar.YEAR, 2002); 154 cal.set(Calendar.MONTH, Calendar.MARCH); 155 cal.set(Calendar.DATE, 11); 156 cal.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); 157 assertTrue("Incorrect result 1b: " + cal.getTime(), cal.getTime() 158 .getTime() == 1015822800000L); 159 160 // WEEK_OF_MONTH has priority 161 cal.clear(); 162 cal.set(Calendar.YEAR, 2002); 163 cal.set(Calendar.WEEK_OF_YEAR, 12); 164 cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1); 165 cal.set(Calendar.WEEK_OF_MONTH, 3); 166 cal.set(Calendar.MONTH, Calendar.MARCH); 167 cal.set(Calendar.DATE, 5); 168 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 169 assertTrue("Incorrect result 2: " + cal.getTime(), cal.getTime() 170 .getTime() == 1015822800000L); 171 172 // DAY_OF_WEEK_IN_MONTH has priority over WEEK_OF_YEAR 173 cal.clear(); 174 cal.set(Calendar.YEAR, 2002); 175 cal.set(Calendar.WEEK_OF_YEAR, 12); 176 cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 2); 177 cal.set(Calendar.MONTH, Calendar.MARCH); 178 cal.set(Calendar.DATE, 5); 179 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 180 assertTrue("Incorrect result 3: " + cal.getTime(), cal.getTime() 181 .getTime() == 1015822800000L); 182 183 // WEEK_OF_MONTH has priority, MONTH not set 184 cal.clear(); 185 cal.set(Calendar.YEAR, 2002); 186 cal.set(Calendar.WEEK_OF_YEAR, 12); 187 cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1); 188 cal.set(Calendar.WEEK_OF_MONTH, 3); 189 cal.set(Calendar.DATE, 25); 190 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 191 assertTrue("Incorrect result 4: " + cal.getTime(), cal.getTime() 192 .getTime() == 1010984400000L); 193 194 // WEEK_OF_YEAR has priority when MONTH set last and DAY_OF_WEEK set 195 cal.clear(); 196 cal.set(Calendar.YEAR, 2002); 197 cal.set(Calendar.WEEK_OF_YEAR, 11); 198 cal.set(Calendar.DATE, 25); 199 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 200 cal.set(Calendar.MONTH, Calendar.JANUARY); 201 assertTrue("Incorrect result 5: " + cal.getTime(), cal.getTime() 202 .getTime() == 1015822800000L); 203 204 // Use MONTH/DATE when WEEK_OF_YEAR set but not DAY_OF_WEEK 205 cal.clear(); 206 cal.set(Calendar.YEAR, 2002); 207 cal.set(Calendar.WEEK_OF_YEAR, 12); 208 cal.set(Calendar.DATE, 11); 209 cal.set(Calendar.MONTH, Calendar.MARCH); 210 assertTrue("Incorrect result 5a: " + cal.getTime(), cal.getTime() 211 .getTime() == 1015822800000L); 212 213 // Use MONTH/DATE when DAY_OF_WEEK is not set 214 cal.clear(); 215 cal.set(Calendar.YEAR, 2002); 216 cal.set(Calendar.WEEK_OF_YEAR, 12); 217 cal.set(Calendar.DATE, 11); 218 cal.set(Calendar.WEEK_OF_MONTH, 1); 219 cal.set(Calendar.MONTH, Calendar.MARCH); 220 assertTrue("Incorrect result 5b: " + cal.getTime(), cal.getTime() 221 .getTime() == 1015822800000L); 222 223 // WEEK_OF_MONTH has priority 224 cal.clear(); 225 cal.set(Calendar.YEAR, 2002); 226 cal.set(Calendar.WEEK_OF_YEAR, 12); 227 cal.set(Calendar.DATE, 5); 228 cal.set(Calendar.WEEK_OF_MONTH, 3); 229 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 230 cal.set(Calendar.MONTH, Calendar.MARCH); 231 assertTrue("Incorrect result 5c: " + cal.getTime(), cal.getTime() 232 .getTime() == 1015822800000L); 233 234 // DATE has priority when set last 235 cal.clear(); 236 cal.set(Calendar.YEAR, 2002); 237 cal.set(Calendar.WEEK_OF_YEAR, 12); 238 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 239 cal.set(Calendar.MONTH, Calendar.MARCH); 240 cal.set(Calendar.DATE, 11); 241 assertTrue("Incorrect result 6: " + cal.getTime(), cal.getTime() 242 .getTime() == 1015822800000L); 243 244 // DATE has priority when set last, MONTH not set 245 cal.clear(); 246 cal.set(Calendar.YEAR, 2002); 247 cal.set(Calendar.WEEK_OF_YEAR, 12); 248 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 249 cal.set(Calendar.DATE, 14); 250 assertTrue("Incorrect result 7: " + cal.getTime(), cal.getTime() 251 .getTime() == 1010984400000L); 252 253 // DAY_OF_YEAR has priority when MONTH set last and DATE not set 254 cal.clear(); 255 cal.set(Calendar.YEAR, 2002); 256 cal.set(Calendar.DAY_OF_YEAR, 70); 257 cal.set(Calendar.MONTH, Calendar.JANUARY); 258 assertTrue("Incorrect result 8: " + cal.getTime(), cal.getTime() 259 .getTime() == 1015822800000L); 260 261 // DAY/MONTH has priority when DATE set after DAY_OF_YEAR 262 cal.clear(); 263 cal.set(Calendar.YEAR, 2002); 264 cal.set(Calendar.DAY_OF_YEAR, 170); 265 cal.set(Calendar.DATE, 11); 266 cal.set(Calendar.MONTH, Calendar.MARCH); 267 assertTrue("Incorrect result 8a: " + cal.getTime(), cal.getTime() 268 .getTime() == 1015822800000L); 269 270 // DAY_OF_YEAR has priority when set after DATE 271 cal.clear(); 272 cal.set(Calendar.YEAR, 2002); 273 cal.set(Calendar.DATE, 15); 274 cal.set(Calendar.DAY_OF_YEAR, 70); 275 cal.set(Calendar.MONTH, Calendar.JANUARY); 276 assertTrue("Incorrect result 8b: " + cal.getTime(), cal.getTime() 277 .getTime() == 1015822800000L); 278 279 // DATE has priority when set last 280 cal.clear(); 281 cal.set(Calendar.YEAR, 2002); 282 cal.set(Calendar.DAY_OF_YEAR, 70); 283 cal.set(Calendar.DATE, 14); 284 assertTrue("Incorrect result 9: " + cal.getTime(), cal.getTime() 285 .getTime() == 1010984400000L); 286 287 // DATE has priority when set last 288 cal.clear(); 289 cal.set(Calendar.YEAR, 2002); 290 cal.set(Calendar.WEEK_OF_YEAR, 15); 291 cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); 292 cal.set(Calendar.DATE, 14); 293 assertTrue("Incorrect result 9a: " + cal.getTime(), cal.getTime() 294 .getTime() == 1010984400000L); 295 296 cal.clear(); 297 cal.set(Calendar.YEAR, 2002); 298 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 299 cal.set(Calendar.DATE, 14); 300 cal.set(Calendar.WEEK_OF_YEAR, 11); 301 assertTrue("Incorrect result 9b: " + cal.getTime(), cal.getTime() 302 .getTime() == 1015822800000L); 303 304 cal.clear(); 305 cal.set(Calendar.YEAR, 2002); 306 cal.set(Calendar.DATE, 14); 307 cal.set(Calendar.WEEK_OF_YEAR, 11); 308 assertTrue("Incorrect result 9c: " + cal.getTime(), cal.getTime() 309 .getTime() == 1010984400000L); 310 311 cal.clear(); 312 cal.set(Calendar.YEAR, 2002); 313 cal.set(Calendar.WEEK_OF_MONTH, 1); 314 cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); 315 cal.set(Calendar.MONTH, Calendar.MARCH); 316 cal.set(Calendar.DATE, 11); 317 assertTrue("Incorrect result 9d: " + cal.getTime(), cal.getTime() 318 .getTime() == 1015822800000L); 319 320 // DAY_OF_YEAR has priority when DAY_OF_MONTH set last and other fields 321 // not set 322 cal.clear(); 323 cal.set(Calendar.YEAR, 2002); 324 cal.set(Calendar.DAY_OF_YEAR, 70); 325 cal.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); 326 assertTrue("Incorrect result 10: " + cal.getTime(), cal.getTime() 327 .getTime() == 1015822800000L); 328 329 // MONTH/DATE has priority when DAY_OF_WEEK_IN_MONTH set last but 330 // DAY_OF_WEEK not set 331 cal.clear(); 332 cal.set(Calendar.YEAR, 2002); 333 cal.set(Calendar.DATE, 11); 334 cal.set(Calendar.MONTH, Calendar.MARCH); 335 cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1); 336 assertTrue("Incorrect result 11: " + cal.getTime(), cal.getTime() 337 .getTime() == 1015822800000L); 338 339 // MONTH/DATE has priority when WEEK_OF_YEAR set last but DAY_OF_WEEK 340 // not set 341 cal.clear(); 342 cal.set(Calendar.YEAR, 2002); 343 cal.set(Calendar.DATE, 11); 344 cal.set(Calendar.MONTH, Calendar.MARCH); 345 cal.set(Calendar.WEEK_OF_YEAR, 15); 346 assertTrue("Incorrect result 12: " + cal.getTime(), cal.getTime() 347 .getTime() == 1015822800000L); 348 349 // MONTH/DATE has priority when WEEK_OF_MONTH set last but DAY_OF_WEEK 350 // not set 351 cal.clear(); 352 cal.set(Calendar.YEAR, 2002); 353 cal.set(Calendar.DATE, 11); 354 cal.set(Calendar.MONTH, Calendar.MARCH); 355 cal.set(Calendar.WEEK_OF_MONTH, 1); 356 assertTrue("Incorrect result 13: " + cal.getTime(), cal.getTime() 357 .getTime() == 1015822800000L); 358 359 // Ensure last date field set is reset after computing 360 cal.clear(); 361 cal.set(Calendar.YEAR, 2002); 362 cal.set(Calendar.DAY_OF_YEAR, 111); 363 cal.get(Calendar.YEAR); 364 cal.set(Calendar.MONTH, Calendar.MARCH); 365 cal.set(Calendar.AM_PM, Calendar.AM); 366 assertTrue("Incorrect result 14: " + cal.getTime(), cal.getTime() 367 .getTime() == 1016686800000L); 368 369 int hour = cal.get(Calendar.HOUR); 370 cal.set(Calendar.HOUR, hour); 371 cal.set(Calendar.AM_PM, Calendar.PM); 372 assertEquals("AM_PM not changed", Calendar.PM, cal.get(Calendar.AM_PM)); 373 // setting AM_PM without HOUR should not have any affect 374 cal.set(Calendar.AM_PM, Calendar.AM); 375 assertEquals("AM_PM was changed 1", 376 Calendar.AM, cal.get(Calendar.AM_PM)); 377 int hourOfDay = cal.get(Calendar.HOUR_OF_DAY); 378 hour = cal.get(Calendar.HOUR); 379 cal.set(Calendar.AM_PM, Calendar.PM); 380 assertEquals("AM_PM was changed 2", 381 Calendar.PM, cal.get(Calendar.AM_PM)); 382 assertEquals(hour, cal.get(Calendar.HOUR)); 383 assertEquals(hourOfDay + 12, cal.get(Calendar.HOUR_OF_DAY)); 384 385 // regression test for Harmony-2122 386 cal = Calendar.getInstance(); 387 int oldValue = cal.get(Calendar.AM_PM); 388 int newValue = (oldValue == Calendar.AM) ? Calendar.PM : Calendar.AM; 389 cal.set(Calendar.AM_PM, newValue); 390 newValue = cal.get(Calendar.AM_PM); 391 assertTrue(newValue != oldValue); 392 393 cal.setLenient(false); 394 395 try { 396 cal.set(-1, 3); 397 fail("ArrayIndexOutOfBoundsException expected"); 398 } catch (ArrayIndexOutOfBoundsException e) { 399 //expected 400 } 401 402 try { 403 cal.set(Calendar.FIELD_COUNT + 1, 3); 404 fail("ArrayIndexOutOfBoundsException expected"); 405 } catch (ArrayIndexOutOfBoundsException e) { 406 //expected 407 } 408 } 409 410 /** 411 * @tests java.util.Calendar#setTime(java.util.Date) 412 */ 413 @TestTargetNew( 414 level = TestLevel.COMPLETE, 415 notes = "", 416 method = "setTime", 417 args = {java.util.Date.class} 418 ) 419 public void test_setTimeLjava_util_Date() { 420 Calendar cal = Calendar.getInstance(); 421 // Use millisecond time for testing in Core 422 cal.setTime(new Date(884581200000L)); // (98, Calendar.JANUARY, 12) 423 assertEquals("incorrect millis", 884581200000L, cal.getTime().getTime()); 424 cal.setTimeZone(TimeZone.getTimeZone("EST")); 425 cal.setTime(new Date(943506000000L)); // (99, Calendar.NOVEMBER, 25) 426 assertTrue("incorrect fields", cal.get(Calendar.YEAR) == 1999 427 && cal.get(Calendar.MONTH) == Calendar.NOVEMBER 428 && cal.get(Calendar.DATE) == 25); 429 } 430 431 /** 432 * @tests java.util.Calendar#compareTo(Calendar) 433 */ 434 @TestTargetNew( 435 level = TestLevel.PARTIAL_COMPLETE, 436 notes = "Verifies NullPointerException.", 437 method = "compareTo", 438 args = {java.util.Calendar.class} 439 ) 440 public void test_compareToLjava_util_Calendar_null() { 441 Calendar cal = Calendar.getInstance(); 442 try { 443 cal.compareTo(null); 444 fail("should throw NullPointerException"); 445 } catch (NullPointerException e) { 446 // expected 447 } 448 } 449 450 /** 451 * @tests java.util.Calendar#compareTo(Calendar) 452 */ 453 @TestTargetNew( 454 level = TestLevel.COMPLETE, 455 notes = "", 456 method = "compareTo", 457 args = {java.util.Calendar.class} 458 ) 459 public void test_compareToLjava_util_Calendar() { 460 Calendar cal = Calendar.getInstance(); 461 cal.clear(); 462 cal.set(1997, 12, 13, 23, 57); 463 464 Calendar anotherCal = Calendar.getInstance(); 465 anotherCal.clear(); 466 anotherCal.set(1997, 12, 13, 23, 57); 467 assertEquals(0, cal.compareTo(anotherCal)); 468 469 anotherCal = Calendar.getInstance(); 470 anotherCal.clear(); 471 anotherCal.set(1997, 11, 13, 24, 57); 472 assertEquals(1, cal.compareTo(anotherCal)); 473 474 anotherCal = Calendar.getInstance(); 475 anotherCal.clear(); 476 anotherCal.set(1997, 12, 13, 23, 58); 477 assertEquals(-1, cal.compareTo(anotherCal)); 478 479 try { 480 cal.compareTo(null); 481 fail("NullPointerException expected"); 482 } catch (NullPointerException e) { 483 //expected 484 } 485 486 MockCalendar mc = new MockCalendar(); 487 488 try { 489 cal.compareTo(mc); 490 fail("IllegalArgumentException expected"); 491 } catch (IllegalArgumentException e) { 492 //expected 493 } 494 } 495 496 /** 497 * @tests java.util.Calendar#clone() 498 */ 499 @TestTargetNew( 500 level = TestLevel.COMPLETE, 501 notes = "", 502 method = "clone", 503 args = {} 504 ) 505 public void test_clone() { 506 // Regression for HARMONY-475 507 Calendar cal = Calendar.getInstance(); 508 cal.set(2006, 5, 6, 11, 35); 509 Calendar anotherCal = (Calendar) cal.clone(); 510 // should be deep clone 511 assertNotSame("getTimeZone", cal.getTimeZone(), anotherCal 512 .getTimeZone()); 513 } 514 515 /** 516 * @tests java.util.Calendar#getTimeInMillis() 517 */ 518 @TestTargetNew( 519 level = TestLevel.COMPLETE, 520 notes = "", 521 method = "getTimeInMillis", 522 args = {} 523 ) 524 public void test_getTimeInMillis() { 525 Calendar cal = Calendar.getInstance(); 526 527 int year = Integer.MIN_VALUE + 71; 528 cal.setTimeZone(TimeZone.getTimeZone("GMT"));; 529 cal.set(Calendar.YEAR, year + 1900); 530 cal.set(Calendar.MONTH, Calendar.JANUARY); 531 cal.set(Calendar.DATE, 1); 532 cal.set(Calendar.HOUR_OF_DAY, 0); 533 cal.set(Calendar.MINUTE, 0); 534 cal.set(Calendar.SECOND, 0); 535 cal.set(Calendar.MILLISECOND, 0); 536 537 assertEquals(6017546357372606464L, cal.getTimeInMillis()); 538 } 539 540 /** 541 * @tests {@link java.util.Calendar#getActualMaximum(int)} 542 */ 543 @TestTargetNew( 544 level = TestLevel.COMPLETE, 545 notes = "", 546 method = "getActualMaximum", 547 args = {int.class} 548 ) 549 public void test_getActualMaximum_I() { 550 Calendar c = new MockCalendar(); 551 assertEquals("should be equal to 0", 0, c.getActualMaximum(0)); 552 } 553 554 /** 555 * @tests {@link java.util.Calendar#getActualMinimum(int)} 556 */ 557 @TestTargets({ 558 @TestTargetNew( 559 level = TestLevel.COMPLETE, 560 notes = "", 561 method = "getActualMinimum", 562 args = {int.class} 563 ), 564 @TestTargetNew( 565 level = TestLevel.COMPLETE, 566 notes = "", 567 method = "Calendar", 568 args = {} 569 ) 570 }) 571 public void test_getActualMinimum_I() { 572 Calendar c = new MockCalendar(); 573 assertEquals("should be equal to 0", 0, c.getActualMinimum(0)); 574 } 575 576 private class MockCalendar extends Calendar { 577 578 public MockCalendar() { 579 super(); 580 } 581 582 public MockCalendar(TimeZone default1, Locale germany) { 583 super(default1, germany); 584 } 585 586 @Override 587 public void add(int field, int value) { 588 } 589 590 @Override 591 protected void computeFields() { 592 } 593 594 @Override 595 protected void computeTime() { 596 throw new IllegalArgumentException(); 597 } 598 599 @Override 600 public int getGreatestMinimum(int field) { 601 return 0; 602 } 603 604 @Override 605 public int getLeastMaximum(int field) { 606 return 0; 607 } 608 609 @Override 610 public int getMaximum(int field) { 611 return 0; 612 } 613 614 @Override 615 public int getMinimum(int field) { 616 return 0; 617 } 618 619 @Override 620 public void roll(int field, boolean increment) { 621 } 622 } 623 624 @TestTargetNew( 625 level = TestLevel.COMPLETE, 626 notes = "", 627 method = "Calendar", 628 args = {java.util.TimeZone.class, java.util.Locale.class} 629 ) 630 public void test_ConstructorLjava_utilTimeZoneLjava_util_Locale() { 631 assertNotNull(new MockCalendar(TimeZone.getDefault(), Locale.GERMANY)); 632 } 633 634 @TestTargetNew( 635 level = TestLevel.COMPLETE, 636 notes = "Test calls dummy implementation of abstract method.", 637 method = "add", 638 args = {int.class, int.class} 639 ) 640 public void test_addII() { 641 MockCalendar mc = new MockCalendar(); 642 643 mc.add(Calendar.DAY_OF_YEAR, 7); 644 } 645 646 @TestTargetNew( 647 level = TestLevel.COMPLETE, 648 notes = "", 649 method = "after", 650 args = {java.lang.Object.class} 651 ) 652 public void test_afterLjava_lang_Object() { 653 MockCalendar mcBefore = new MockCalendar(); 654 MockCalendar mc = new MockCalendar(); 655 MockCalendar mcAfter = new MockCalendar(); 656 MockCalendar mcSame = new MockCalendar(); 657 658 mcBefore.setTimeInMillis(1000); 659 mc.setTimeInMillis(10000); 660 mcAfter.setTimeInMillis(100000); 661 mcSame.setTimeInMillis(10000); 662 663 assertTrue(mc.after(mcBefore)); 664 assertFalse(mc.after(mcAfter)); 665 assertFalse(mc.after(mcSame)); 666 assertFalse(mc.after(mc)); 667 assertFalse(mc.after(new String())); 668 } 669 670 @TestTargetNew( 671 level = TestLevel.COMPLETE, 672 notes = "", 673 method = "before", 674 args = {java.lang.Object.class} 675 ) 676 public void test_beforeLjava_lang_Object() { 677 MockCalendar mcBefore = new MockCalendar(); 678 MockCalendar mc = new MockCalendar(); 679 MockCalendar mcAfter = new MockCalendar(); 680 MockCalendar mcSame = new MockCalendar(); 681 682 mcBefore.setTimeInMillis(1000); 683 mc.setTimeInMillis(10000); 684 mcAfter.setTimeInMillis(100000); 685 mcSame.setTimeInMillis(10000); 686 687 assertFalse(mc.before(mcBefore)); 688 assertTrue(mc.before(mcAfter)); 689 assertFalse(mc.before(mcSame)); 690 assertFalse(mc.before(mc)); 691 assertFalse(mc.before(new String())); 692 } 693 694 @TestTargetNew( 695 level = TestLevel.COMPLETE, 696 notes = "", 697 method = "clear", 698 args = {} 699 ) 700 public void test_clear() { 701 MockCalendar mc1 = new MockCalendar(); 702 MockCalendar mc2 = new MockCalendar(); 703 704 assertTrue(mc1.toString().equals(mc2.toString())); 705 mc1.set(2008, Calendar.SEPTEMBER, 23, 18, 0, 0); 706 assertFalse(mc1.toString().equals(mc2.toString())); 707 mc1.clear(); 708 assertTrue(mc1.toString().equals(mc2.toString())); 709 } 710 711 @TestTargetNew( 712 level = TestLevel.COMPLETE, 713 notes = "", 714 method = "clear", 715 args = {int.class} 716 ) 717 public void test_clearI() { 718 MockCalendar mc1 = new MockCalendar(); 719 MockCalendar mc2 = new MockCalendar(); 720 721 assertTrue(mc1.toString().equals(mc2.toString())); 722 mc1.set(2008, Calendar.SEPTEMBER, 23, 18, 0, 0); 723 assertFalse(mc1.toString().equals(mc2.toString())); 724 mc1.clear(Calendar.YEAR); 725 mc1.clear(Calendar.MONTH); 726 mc1.clear(Calendar.DAY_OF_MONTH); 727 mc1.clear(Calendar.HOUR_OF_DAY); 728 mc1.clear(Calendar.MINUTE); 729 mc1.clear(Calendar.SECOND); 730 mc1.clear(Calendar.MILLISECOND); 731 assertTrue(mc1.toString().equals(mc2.toString())); 732 } 733 734 class Mock_Calendar extends Calendar { 735 boolean flagComplete = false; 736 @Override 737 public void add(int field, int amount) { 738 739 } 740 741 @Override 742 protected void computeFields() { 743 this.set(MONTH, this.internalGet(MONTH)%12); 744 } 745 746 @Override 747 protected void computeTime() { 748 } 749 750 @Override 751 public int getGreatestMinimum(int field) { 752 return 0; 753 } 754 755 @Override 756 public int getLeastMaximum(int field) { 757 return 0; 758 } 759 760 @Override 761 public int getMaximum(int field) { 762 return 0; 763 } 764 765 @Override 766 public int getMinimum(int field) { 767 return 0; 768 } 769 770 @Override 771 public void roll(int field, boolean up) { 772 } 773 774 @Override 775 public void complete() { 776 computeTime(); 777 computeFields(); 778 flagComplete = true; 779 } 780 781 public boolean isCompleted () { 782 return flagComplete; 783 } 784 785 public int internalGetField(int field) { 786 return super.internalGet(field); 787 } 788 } 789 790 @TestTargetNew( 791 level = TestLevel.COMPLETE, 792 notes = "", 793 method = "complete", 794 args = {} 795 ) 796 public void test_complete() { 797 Mock_Calendar cal = new Mock_Calendar(); 798 799 assertFalse(cal.isCompleted()); 800 cal.setTimeInMillis(1000); 801 cal.get(Calendar.MONTH); 802 assertTrue(cal.isCompleted()); 803 } 804 805 @TestTargetNew( 806 level = TestLevel.COMPLETE, 807 notes = "", 808 method = "computeFields", 809 args = {} 810 ) 811 public void test_computeFields() { 812 Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 813 Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 814 815 cal1.setTimeInMillis(1222185600225L); 816 cal2.set(2008, Calendar.SEPTEMBER, 23, 18, 0, 0); 817 assertFalse(cal1.toString().equals(cal2.toString())); 818 cal1.get(Calendar.YEAR); 819 cal2.getTimeInMillis(); 820 cal1.set(Calendar.MILLISECOND, 0); 821 cal2.set(Calendar.MILLISECOND, 0); 822 // tests fails in this line. 823 assertTrue(cal1.toString().equals(cal2.toString())); 824 } 825 826 @TestTargetNew( 827 level = TestLevel.COMPLETE, 828 notes = "", 829 method = "equals", 830 args = {java.lang.Object.class} 831 ) 832 public void test_equals() { 833 Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 834 Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 835 836 cal1.setTimeInMillis(1222185600225L); 837 cal2.set(2008, Calendar.SEPTEMBER, 23, 18, 0, 0); 838 assertFalse(cal1.equals(cal2)); 839 cal1.get(Calendar.YEAR); 840 cal2.getTimeInMillis(); 841 cal1.set(Calendar.MILLISECOND, 0); 842 cal2.set(Calendar.MILLISECOND, 0); 843 // tests fails on following line. 844 assertTrue(cal1.equals(cal2)); 845 } 846 847 @TestTargetNew( 848 level = TestLevel.COMPLETE, 849 notes = "", 850 method = "get", 851 args = {int.class} 852 ) 853 public void test_getI() { 854 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 855 856 cal.setTimeInMillis(1222185600225L); 857 assertEquals(cal.get(Calendar.ERA), 1); 858 assertEquals(cal.get(Calendar.YEAR), 2008); 859 assertEquals(cal.get(Calendar.MONTH), Calendar.SEPTEMBER); 860 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 23); 861 // Following line returns wrong value. Behavior uncompatible with RI. 862 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 18); 863 assertEquals(cal.get(Calendar.MINUTE), 0); 864 865 try { 866 cal.get(-1); 867 fail("ArrayIndexOutOfBoundsException expected"); 868 } catch (ArrayIndexOutOfBoundsException e) { 869 //expected 870 } 871 872 try { 873 cal.get(Calendar.FIELD_COUNT + 1); 874 fail("ArrayIndexOutOfBoundsException expected"); 875 } catch (ArrayIndexOutOfBoundsException e) { 876 //expected 877 } 878 } 879 880 @TestTargetNew( 881 level = TestLevel.COMPLETE, 882 notes = "", 883 method = "getAvailableLocales", 884 args = {} 885 ) 886 public void test_getAvailableLocales() { 887 assertNotNull(Calendar.getAvailableLocales()); 888 } 889 890 @TestTargets({ 891 @TestTargetNew( 892 level = TestLevel.COMPLETE, 893 notes = "", 894 method = "getFirstDayOfWeek", 895 args = {} 896 ), 897 @TestTargetNew( 898 level = TestLevel.COMPLETE, 899 notes = "", 900 method = "getInstance", 901 args = {} 902 ) 903 }) 904 public void test_getFirstDayOfWeek() { 905 Locale[] requiredLocales = {Locale.US, Locale.FRANCE}; 906 if (!Support_Locale.areLocalesAvailable(requiredLocales)) { 907 // locale dependent test, bug 1943269 908 return; 909 } 910 Calendar cal = Calendar.getInstance(); 911 912 assertEquals(Calendar.SUNDAY, cal.getFirstDayOfWeek()); 913 Locale.setDefault(Locale.FRANCE); 914 cal = Calendar.getInstance(); 915 assertEquals(Calendar.MONDAY, cal.getFirstDayOfWeek()); 916 Locale.setDefault(Locale.US); 917 } 918 919 @TestTargetNew( 920 level = TestLevel.COMPLETE, 921 notes = "", 922 method = "getInstance", 923 args = {java.util.Locale.class} 924 ) 925 public void test_getInstanceLjava_util_Locale() { 926 Locale[] requiredLocales = {Locale.US, Locale.FRANCE}; 927 if (!Support_Locale.areLocalesAvailable(requiredLocales)) { 928 // locale dependent test, bug 1943269 929 return; 930 } 931 Calendar cal1 = Calendar.getInstance(Locale.FRANCE); 932 Locale.setDefault(Locale.FRANCE); 933 Calendar cal2 = Calendar.getInstance(); 934 assertSame(cal1.getFirstDayOfWeek(), cal2.getFirstDayOfWeek()); 935 Locale.setDefault(Locale.US); 936 cal2 = Calendar.getInstance(); 937 assertNotSame(cal1.getFirstDayOfWeek(), cal2.getFirstDayOfWeek()); 938 } 939 940 @TestTargetNew( 941 level = TestLevel.COMPLETE, 942 notes = "", 943 method = "getInstance", 944 args = {java.util.TimeZone.class} 945 ) 946 public void test_get_InstanceLjava_util_TimeZone() { 947 Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT-6")); 948 Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+1")); 949 assertNotSame(cal1.getTimeZone().getRawOffset(), cal2.getTimeZone().getRawOffset()); 950 } 951 952 @TestTargetNew( 953 level = TestLevel.COMPLETE, 954 notes = "", 955 method = "getInstance", 956 args = {java.util.TimeZone.class, java.util.Locale.class} 957 ) 958 public void test_getInstanceLjava_util_TimeZoneLjava_util_Locale() { 959 Locale[] requiredLocales = {Locale.US, Locale.FRANCE}; 960 if (!Support_Locale.areLocalesAvailable(requiredLocales)) { 961 // locale dependent test, bug 1943269 962 return; 963 } 964 Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"), Locale.FRANCE); 965 Locale.setDefault(Locale.FRANCE); 966 Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+1")); 967 assertSame(cal1.getFirstDayOfWeek(), cal2.getFirstDayOfWeek()); 968 assertNotSame(cal1.getTimeZone().getRawOffset(), cal2.getTimeZone().getRawOffset()); 969 Locale.setDefault(Locale.US); 970 cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+1")); 971 assertNotSame(cal1.getFirstDayOfWeek(), cal2.getFirstDayOfWeek()); 972 assertNotSame(cal1.getTimeZone().getRawOffset(), cal2.getTimeZone().getRawOffset()); 973 } 974 975 @TestTargetNew( 976 level = TestLevel.COMPLETE, 977 notes = "", 978 method = "getMinimalDaysInFirstWeek", 979 args = {} 980 ) 981 @KnownFailure("Fails in CTS but passes under run-core-tests") 982 public void test_getMinimalDaysInFirstWeek() { 983 Locale[] requiredLocales = {Locale.US, Locale.FRANCE}; 984 if (!Support_Locale.areLocalesAvailable(requiredLocales)) { 985 // locale dependent test, bug 1943269 986 return; 987 } 988 Locale.setDefault(Locale.US); 989 Calendar cal = Calendar.getInstance(); 990 assertEquals(1, cal.getMinimalDaysInFirstWeek()); 991 Locale.setDefault(Locale.FRANCE); 992 cal = Calendar.getInstance(); 993 assertEquals(4, cal.getMinimalDaysInFirstWeek()); 994 Locale.setDefault(Locale.US); 995 } 996 997 @TestTargetNew( 998 level = TestLevel.COMPLETE, 999 notes = "", 1000 method = "getTime", 1001 args = {} 1002 ) 1003 public void test_getTime() { 1004 Calendar cal = Calendar.getInstance(); 1005 Date d = new Date(1222185600225L); 1006 1007 cal.setTimeInMillis(1222185600225L); 1008 assertEquals(d.getTime(), cal.getTimeInMillis()); 1009 assertEquals(d, cal.getTime()); 1010 } 1011 1012 @TestTargetNew( 1013 level = TestLevel.COMPLETE, 1014 notes = "", 1015 method = "getTimeZone", 1016 args = {} 1017 ) 1018 public void test_getTimeZone() { 1019 Calendar cal = Calendar.getInstance(); 1020 cal.setTimeZone(TimeZone.getTimeZone("GMT-6")); 1021 1022 assertEquals(TimeZone.getTimeZone("GMT-6"), cal.getTimeZone()); 1023 cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-8")); 1024 assertEquals(TimeZone.getTimeZone("GMT-8"), cal.getTimeZone()); 1025 } 1026 1027 @TestTargetNew( 1028 level = TestLevel.COMPLETE, 1029 notes = "", 1030 method = "hashCode", 1031 args = {} 1032 ) 1033 public void test_hashCode() { 1034 Locale[] requiredLocales = {Locale.US, Locale.FRANCE}; 1035 if (!Support_Locale.areLocalesAvailable(requiredLocales)) { 1036 // locale dependent test, bug 1943269 1037 return; 1038 } 1039 Calendar cal1 = Calendar.getInstance(); 1040 Locale.setDefault(Locale.FRANCE); 1041 Calendar cal2 = Calendar.getInstance(); 1042 Locale.setDefault(Locale.US); 1043 assertTrue(cal1.hashCode() != cal2.hashCode()); 1044 } 1045 1046 @TestTargetNew( 1047 level = TestLevel.COMPLETE, 1048 notes = "", 1049 method = "internalGet", 1050 args = {int.class} 1051 ) 1052 public void test_internalGet() { 1053 Mock_Calendar mc = new Mock_Calendar(); 1054 assertEquals(0, mc.internalGetField(Calendar.MONTH)); 1055 mc.set(Calendar.MONTH, 35); 1056 assertEquals(35, mc.internalGetField(Calendar.MONTH)); 1057 assertEquals(11, mc.get(Calendar.MONTH)); 1058 } 1059 1060 @TestTargets({ 1061 @TestTargetNew( 1062 level = TestLevel.COMPLETE, 1063 notes = "", 1064 method = "isLenient", 1065 args = {} 1066 ), 1067 @TestTargetNew( 1068 level = TestLevel.COMPLETE, 1069 notes = "", 1070 method = "setLenient", 1071 args = {boolean.class} 1072 ) 1073 }) 1074 public void test_isLenient() { 1075 Calendar cal = Calendar.getInstance(); 1076 assertTrue(cal.isLenient()); 1077 cal.set(Calendar.MONTH, 35); 1078 cal.get(Calendar.MONTH); 1079 cal.setLenient(false); 1080 cal.set(Calendar.MONTH, 35); 1081 try { 1082 cal.get(Calendar.MONTH); 1083 fail("IllegalArgumentException expected"); 1084 } catch (IllegalArgumentException e) { 1085 //expected 1086 } 1087 assertFalse(cal.isLenient()); 1088 cal.setLenient(true); 1089 cal.set(Calendar.MONTH, 35); 1090 cal.get(Calendar.MONTH); 1091 assertTrue(cal.isLenient()); 1092 } 1093 1094 @TestTargetNew( 1095 level = TestLevel.COMPLETE, 1096 notes = "", 1097 method = "isSet", 1098 args = {int.class} 1099 ) 1100 public void test_isSet() { 1101 Calendar cal = Calendar.getInstance(); 1102 cal.clear(); 1103 assertFalse(cal.isSet(Calendar.MONTH)); 1104 cal.set(Calendar.MONTH, 35); 1105 assertTrue(cal.isSet(Calendar.MONTH)); 1106 assertFalse(cal.isSet(Calendar.YEAR)); 1107 cal.get(Calendar.MONTH); 1108 assertTrue(cal.isSet(Calendar.YEAR)); 1109 } 1110 1111 @TestTargetNew( 1112 level = TestLevel.COMPLETE, 1113 notes = "", 1114 method = "roll", 1115 args = {int.class, int.class} 1116 ) 1117 public void test_rollII() { 1118 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 1119 1120 cal.setTimeInMillis(1222185600225L); 1121 cal.roll(Calendar.DAY_OF_MONTH, 200); 1122 assertEquals(cal.get(Calendar.ERA), 1); 1123 assertEquals(cal.get(Calendar.YEAR), 2008); 1124 assertEquals(cal.get(Calendar.MONTH), Calendar.SEPTEMBER); 1125 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 13); 1126 // Following line returns wrong value. Behavior uncompatible with RI. 1127 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 18); 1128 assertEquals(cal.get(Calendar.MINUTE), 0); 1129 cal.roll(Calendar.DAY_OF_MONTH, -200); 1130 assertEquals(cal.get(Calendar.ERA), 1); 1131 assertEquals(cal.get(Calendar.YEAR), 2008); 1132 assertEquals(cal.get(Calendar.MONTH), Calendar.SEPTEMBER); 1133 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 23); 1134 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 18); 1135 assertEquals(cal.get(Calendar.MINUTE), 0); 1136 } 1137 1138 @TestTargets({ 1139 @TestTargetNew( 1140 level = TestLevel.COMPLETE, 1141 notes = "", 1142 method = "set", 1143 args = {int.class, int.class, int.class} 1144 ), 1145 @TestTargetNew( 1146 level = TestLevel.COMPLETE, 1147 notes = "", 1148 method = "setTimeInMillis", 1149 args = {long.class} 1150 ) 1151 }) 1152 public void test_setIII() { 1153 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 1154 1155 cal.setTimeInMillis(1222185600225L); 1156 assertEquals(1222185600225L, cal.getTimeInMillis()); 1157 assertEquals(cal.get(Calendar.YEAR), 2008); 1158 assertEquals(cal.get(Calendar.MONTH), Calendar.SEPTEMBER); 1159 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 23); 1160 assertEquals(cal.get(Calendar.SECOND), 0); 1161 1162 cal.set(1970, Calendar.JANUARY, 1); 1163 assertEquals(cal.get(Calendar.ERA), 1); 1164 // Following line returns wrong value. Behavior uncompatible with RI. 1165 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 18); 1166 assertEquals(cal.get(Calendar.MINUTE), 0); 1167 assertEquals(cal.get(Calendar.SECOND), 0); 1168 1169 assertEquals(cal.get(Calendar.YEAR), 1970); 1170 assertEquals(cal.get(Calendar.MONTH), 0); 1171 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 1); 1172 } 1173 1174 @TestTargetNew( 1175 level = TestLevel.COMPLETE, 1176 notes = "", 1177 method = "set", 1178 args = {int.class, int.class, int.class, int.class, int.class} 1179 ) 1180 public void test_setIIIII() { 1181 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 1182 1183 cal.setTimeInMillis(1222185600225L); 1184 assertEquals(cal.get(Calendar.YEAR), 2008); 1185 assertEquals(cal.get(Calendar.MONTH), Calendar.SEPTEMBER); 1186 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 23); 1187 // Following line returns wrong value. Behavior uncompatible with RI. 1188 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 18); 1189 assertEquals(cal.get(Calendar.MINUTE), 0); 1190 assertEquals(cal.get(Calendar.SECOND), 0); 1191 1192 cal.set(1970, Calendar.JANUARY, 1, 0, 10); 1193 assertEquals(cal.get(Calendar.ERA), 1); 1194 assertEquals(cal.get(Calendar.SECOND), 0); 1195 1196 assertEquals(cal.get(Calendar.YEAR), 1970); 1197 assertEquals(cal.get(Calendar.MONTH), 0); 1198 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 1); 1199 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 0); 1200 assertEquals(cal.get(Calendar.MINUTE), 10); 1201 } 1202 1203 @TestTargetNew( 1204 level = TestLevel.COMPLETE, 1205 notes = "", 1206 method = "set", 1207 args = {int.class, int.class, int.class, int.class, int.class, int.class} 1208 ) 1209 public void test_setIIIIII() { 1210 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"), defaultLocale); 1211 1212 cal.setTimeInMillis(1222185600225L); 1213 assertEquals(cal.get(Calendar.YEAR), 2008); 1214 assertEquals(cal.get(Calendar.MONTH), Calendar.SEPTEMBER); 1215 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 23); 1216 // Following line returns wrong value. Behavior uncompatible with RI. 1217 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 18); 1218 assertEquals(cal.get(Calendar.MINUTE), 0); 1219 assertEquals(cal.get(Calendar.SECOND), 0); 1220 1221 cal.set(1970, Calendar.JANUARY, 1, 0, 10, 33); 1222 assertEquals(cal.get(Calendar.ERA), 1); 1223 1224 assertEquals(cal.get(Calendar.YEAR), 1970); 1225 assertEquals(cal.get(Calendar.MONTH), 0); 1226 assertEquals(cal.get(Calendar.DAY_OF_MONTH), 1); 1227 assertEquals(cal.get(Calendar.HOUR_OF_DAY), 0); 1228 assertEquals(cal.get(Calendar.MINUTE), 10); 1229 assertEquals(cal.get(Calendar.SECOND), 33); 1230 } 1231 1232 @TestTargetNew( 1233 level = TestLevel.COMPLETE, 1234 notes = "", 1235 method = "setFirstDayOfWeek", 1236 args = {int.class} 1237 ) 1238 public void test_setFirstDayOfWeekI() { 1239 Calendar cal = Calendar.getInstance(); 1240 1241 for (int i = 0; i < 10; i++) { 1242 cal.setFirstDayOfWeek(i); 1243 assertEquals(i, cal.getFirstDayOfWeek()); 1244 } 1245 cal.setLenient(false); 1246 cal.setFirstDayOfWeek(10); 1247 cal.setFirstDayOfWeek(-10); 1248 } 1249 1250 @TestTargetNew( 1251 level = TestLevel.COMPLETE, 1252 notes = "", 1253 method = "setMinimalDaysInFirstWeek", 1254 args = {int.class} 1255 ) 1256 public void test_setMinimalDaysInFirstWeekI() { 1257 Calendar cal = Calendar.getInstance(); 1258 1259 for (int i = 0; i < 10; i++) { 1260 cal.setMinimalDaysInFirstWeek(i); 1261 assertEquals(i, cal.getMinimalDaysInFirstWeek()); 1262 } 1263 cal.setLenient(false); 1264 cal.setMinimalDaysInFirstWeek(10); 1265 cal.setMinimalDaysInFirstWeek(-10); 1266 } 1267 1268 @TestTargetNew( 1269 level = TestLevel.COMPLETE, 1270 notes = "", 1271 method = "setTimeZone", 1272 args = {java.util.TimeZone.class} 1273 ) 1274 public void test_setTimeZoneLjava_util_TimeZone() { 1275 Calendar cal = Calendar.getInstance(); 1276 cal.setTimeZone(TimeZone.getTimeZone("GMT-6")); 1277 assertEquals(TimeZone.getTimeZone("GMT-6"), cal.getTimeZone()); 1278 cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-8")); 1279 cal.setTimeZone(TimeZone.getTimeZone("GMT-6")); 1280 assertEquals(TimeZone.getTimeZone("GMT-6"), cal.getTimeZone()); 1281 1282 cal.setTimeZone(null); 1283 } 1284 1285 @TestTargetNew( 1286 level = TestLevel.COMPLETE, 1287 notes = "", 1288 method = "toString", 1289 args = {} 1290 ) 1291 public void test_toString() { 1292 Calendar cal1 = Calendar.getInstance(); 1293 Calendar cal2 = Calendar.getInstance(); 1294 cal1.setTimeZone(TimeZone.getTimeZone("GMT-6")); 1295 cal2.setTimeZone(TimeZone.getTimeZone("GMT-8")); 1296 cal1.set(Calendar.MILLISECOND, 0); 1297 cal2.set(Calendar.MILLISECOND, 0); 1298 assertFalse(cal1.toString().equals(cal2.toString())); 1299 cal1.setTimeZone(TimeZone.getTimeZone("GMT-8")); 1300 assertTrue(cal1.toString().equals(cal2.toString())); 1301 } 1302 1303 @TestTargetNew( 1304 level = TestLevel.ADDITIONAL, 1305 method = "get", 1306 args = {int.class} 1307 ) 1308 public void test_EdgeCases() { 1309 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 1310 1311 c.setTimeInMillis(Long.MAX_VALUE); 1312 1313 assertEquals(292278994, c.get(Calendar.YEAR)); 1314 assertEquals(Calendar.AUGUST, c.get(Calendar.MONTH)); 1315 assertEquals(17, c.get(Calendar.DAY_OF_MONTH)); 1316 assertEquals(Calendar.SUNDAY, c.get(Calendar.DAY_OF_WEEK)); 1317 assertEquals(7, c.get(Calendar.HOUR_OF_DAY)); 1318 assertEquals(12, c.get(Calendar.MINUTE)); 1319 assertEquals(55, c.get(Calendar.SECOND)); 1320 } 1321 1322 protected void setUp() { 1323 defaultLocale = Locale.getDefault(); 1324 Locale.setDefault(Locale.US); 1325 } 1326 1327 protected void tearDown() { 1328 Locale.setDefault(defaultLocale); 1329 } 1330} 1331