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 java.util.Calendar; 21import java.util.Date; 22import java.util.GregorianCalendar; 23import java.util.Locale; 24import java.util.TimeZone; 25 26public class DateTest extends junit.framework.TestCase { 27 28 /** 29 * java.util.Date#Date() 30 */ 31 public void test_Constructor() { 32 // Test for method java.util.Date() 33 GregorianCalendar gc = new GregorianCalendar(1998, Calendar.OCTOBER, 34 13, 19, 9); 35 long oldTime = gc.getTime().getTime(); 36 long now = new Date().getTime(); 37 assertTrue("Created incorrect date: " + oldTime + " now: " + now, 38 oldTime < now); 39 } 40 41 /** 42 * java.util.Date#Date(int, int, int) 43 */ 44 public void test_ConstructorIII() { 45 // Test for method java.util.Date(int, int, int) 46 Date d1 = new Date(70, 0, 1); // the epoch + local time 47 48 // the epoch + local time 49 Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000); 50 51 assertTrue("Created incorrect date", d1.equals(d2)); 52 53 Date date = new Date(99, 5, 22); 54 Calendar cal = new GregorianCalendar(1999, Calendar.JUNE, 22); 55 assertTrue("Wrong time zone", date.equals(cal.getTime())); 56 } 57 58 /** 59 * java.util.Date#Date(int, int, int, int, int) 60 */ 61 public void test_ConstructorIIIII() { 62 // Test for method java.util.Date(int, int, int, int, int) 63 64 // the epoch + local time + (1 hour and 1 minute) 65 Date d1 = new Date(70, 0, 1, 1, 1); 66 67 // the epoch + local time + (1 hour and 1 minute) 68 Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000 + 60 * 60 69 * 1000 + 60 * 1000); 70 71 assertTrue("Created incorrect date", d1.equals(d2)); 72 } 73 74 /** 75 * java.util.Date#Date(int, int, int, int, int, int) 76 */ 77 public void test_ConstructorIIIIII() { 78 // Test for method java.util.Date(int, int, int, int, int, int) 79 80 // the epoch + local time + (1 hour and 1 minute + 1 second) 81 Date d1 = new Date(70, 0, 1, 1, 1, 1); 82 83 // the epoch + local time + (1 hour and 1 minute + 1 second) 84 Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000 + 60 * 60 85 * 1000 + 60 * 1000 + 1000); 86 87 assertTrue("Created incorrect date", d1.equals(d2)); 88 } 89 90 /** 91 * java.util.Date#Date(long) 92 */ 93 public void test_ConstructorJ() { 94 // Test for method java.util.Date(long) 95 assertTrue("Used to test", true); 96 } 97 98 /** 99 * java.util.Date#Date(java.lang.String) 100 */ 101 public void test_ConstructorLjava_lang_String() { 102 // Test for method java.util.Date(java.lang.String) 103 Date d1 = new Date("January 1, 1970, 00:00:00 GMT"); // the epoch 104 Date d2 = new Date(0); // the epoch 105 assertTrue("Created incorrect date", d1.equals(d2)); 106 107 try { 108 // Regression for HARMONY-238 109 new Date(null); 110 fail("Constructor Date((String)null) should " 111 + "throw IllegalArgumentException"); 112 } catch (IllegalArgumentException e) { 113 // expected 114 } 115 } 116 117 /** 118 * java.util.Date#after(java.util.Date) 119 */ 120 public void test_afterLjava_util_Date() { 121 // Test for method boolean java.util.Date.after(java.util.Date) 122 Date d1 = new Date(0); 123 Date d2 = new Date(1900000); 124 assertTrue("Older was returned as newer", d2.after(d1)); 125 assertTrue("Newer was returned as older", !d1.after(d2)); 126 127 try { 128 d1.after(null); 129 fail("NullPointerException expected"); 130 } catch (NullPointerException e) { 131 //expected 132 } 133 } 134 135 /** 136 * java.util.Date#before(java.util.Date) 137 */ 138 public void test_beforeLjava_util_Date() { 139 // Test for method boolean java.util.Date.before(java.util.Date) 140 Date d1 = new Date(0); 141 Date d2 = new Date(1900000); 142 assertTrue("Older was returned as newer", !d2.before(d1)); 143 assertTrue("Newer was returned as older", d1.before(d2)); 144 145 try { 146 d1.before(null); 147 fail("NullPointerException expected"); 148 } catch (NullPointerException e) { 149 //expected 150 } 151 } 152 153 /** 154 * java.util.Date#clone() 155 */ 156 public void test_clone() { 157 // Test for method java.lang.Object java.util.Date.clone() 158 Date d1 = new Date(100000); 159 Date d2 = (Date) d1.clone(); 160 assertTrue( 161 "Cloning date results in same reference--new date is equivalent", 162 d1 != d2); 163 assertTrue("Cloning date results unequal date", d1.equals(d2)); 164 } 165 166 /** 167 * java.util.Date#compareTo(java.util.Date) 168 */ 169 public void test_compareToLjava_util_Date() { 170 // Test for method int java.util.Date.compareTo(java.util.Date) 171 final int someNumber = 10000; 172 Date d1 = new Date(someNumber); 173 Date d2 = new Date(someNumber); 174 Date d3 = new Date(someNumber + 1); 175 Date d4 = new Date(someNumber - 1); 176 assertEquals("Comparing a date to itself did not answer zero", 0, d1 177 .compareTo(d1)); 178 assertEquals("Comparing equal dates did not answer zero", 0, d1 179 .compareTo(d2)); 180 assertEquals("date1.compareTo(date2), where date1 > date2, did not result in 1", 181 1, d1.compareTo(d4)); 182 assertEquals("date1.compareTo(date2), where date1 < date2, did not result in -1", 183 -1, d1.compareTo(d3)); 184 185 try { 186 d1.compareTo(null); 187 fail("NullPointerException expected"); 188 } catch (NullPointerException e) { 189 //expected 190 } 191 } 192 193 /** 194 * java.util.Date#equals(java.lang.Object) 195 */ 196 public void test_equalsLjava_lang_Object() { 197 // Test for method boolean java.util.Date.equals(java.lang.Object) 198 Date d1 = new Date(0); 199 Date d2 = new Date(1900000); 200 Date d3 = new Date(1900000); 201 assertTrue("Equality test failed", d2.equals(d3)); 202 assertTrue("Equality test failed", !d1.equals(d2)); 203 } 204 205 /** 206 * java.util.Date#getDate() 207 */ 208 public void test_getDate() { 209 // Test for method int java.util.Date.getDate() 210 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 211 .getTime(); 212 assertEquals("Returned incorrect date", 13, d.getDate()); 213 } 214 215 /** 216 * java.util.Date#getDay() 217 */ 218 public void test_getDay() { 219 // Test for method int java.util.Date.getDay() 220 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 221 .getTime(); 222 assertEquals("Returned incorrect day", 2, d.getDay()); 223 } 224 225 /** 226 * java.util.Date#getHours() 227 */ 228 public void test_getHours() { 229 // Test for method int java.util.Date.getHours() 230 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 231 .getTime(); 232 assertEquals("Returned incorrect hours", 19, d.getHours()); 233 } 234 235 /** 236 * java.util.Date#getMinutes() 237 */ 238 public void test_getMinutes() { 239 // Test for method int java.util.Date.getMinutes() 240 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 241 .getTime(); 242 assertEquals("Returned incorrect minutes", 9, d.getMinutes()); 243 } 244 245 /** 246 * java.util.Date#getMonth() 247 */ 248 public void test_getMonth() { 249 // Test for method int java.util.Date.getMonth() 250 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 251 .getTime(); 252 assertEquals("Returned incorrect month", 9, d.getMonth()); 253 } 254 255 /** 256 * java.util.Date#getSeconds() 257 */ 258 public void test_getSeconds() { 259 // Test for method int java.util.Date.getSeconds() 260 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 261 .getTime(); 262 assertEquals("Returned incorrect seconds", 0, d.getSeconds()); 263 } 264 265 /** 266 * java.util.Date#getTime() 267 */ 268 public void test_getTime() { 269 // Test for method long java.util.Date.getTime() 270 Date d1 = new Date(0); 271 Date d2 = new Date(1900000); 272 assertEquals("Returned incorrect time", 1900000, d2.getTime()); 273 assertEquals("Returned incorrect time", 0, d1.getTime()); 274 } 275 276 /** 277 * java.util.Date#getTimezoneOffset() 278 */ 279 public void test_getTimezoneOffset() { 280 // Test for method int java.util.Date.getTimezoneOffset() 281 assertTrue("Used to test", true); 282 int offset = new Date(96, 1, 14).getTimezoneOffset(); 283 assertTrue(offset > -720 && offset < 720); 284 } 285 286 /** 287 * java.util.Date#getYear() 288 */ 289 public void test_getYear() { 290 // Test for method int java.util.Date.getYear() 291 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 292 .getTime(); 293 assertEquals("Returned incorrect year", 98, d.getYear()); 294 } 295 296 /** 297 * java.util.Date#hashCode() 298 */ 299 public void test_hashCode() { 300 // Test for method int java.util.Date.hashCode() 301 Date d1 = new Date(0); 302 Date d2 = new Date(1900000); 303 assertEquals("Returned incorrect hash", 1900000, d2.hashCode()); 304 assertEquals("Returned incorrect hash", 0, d1.hashCode()); 305 } 306 307 /** 308 * java.util.Date#parse(java.lang.String) 309 */ 310 public void test_parseLjava_lang_String() { 311 // Test for method long java.util.Date.parse(java.lang.String) 312 Date d = new Date(Date.parse("13 October 1998")); 313 GregorianCalendar cal = new GregorianCalendar(); 314 cal.setTime(d); 315 assertEquals("Parsed incorrect month", 9, cal.get(Calendar.MONTH)); 316 assertEquals("Parsed incorrect year", 1998, cal.get(Calendar.YEAR)); 317 assertEquals("Parsed incorrect date", 13, cal.get(Calendar.DATE)); 318 319 d = new Date(Date.parse("Jan-12 1999")); 320 assertTrue("Wrong parsed date 1", d.equals(new GregorianCalendar(1999, 321 0, 12).getTime())); 322 d = new Date(Date.parse("Jan12-1999")); 323 assertTrue("Wrong parsed date 2", d.equals(new GregorianCalendar(1999, 324 0, 12).getTime())); 325 d = new Date(Date.parse("Jan12 69-1")); 326 cal.setTimeZone(TimeZone.getTimeZone("GMT")); 327 cal.clear(); 328 cal.set(1969, Calendar.JANUARY, 12, 1, 0); 329 assertTrue("Wrong parsed date 3", d.equals(cal.getTime())); 330 d = new Date(Date.parse("6:45:13 3/2/1200 MST")); 331 cal.setTimeZone(TimeZone.getTimeZone("MST")); 332 cal.clear(); 333 cal.set(1200, 2, 2, 6, 45, 13); 334 assertTrue("Wrong parsed date 4", d.equals(cal.getTime())); 335 d = new Date(Date.parse("Mon, 22 Nov 1999 12:52:06 GMT")); 336 cal.setTimeZone(TimeZone.getTimeZone("GMT")); 337 cal.clear(); 338 cal.set(1999, Calendar.NOVEMBER, 22, 12, 52, 06); 339 assertTrue("Wrong parsed date 5", d.equals(cal.getTime())); 340 341 try { 342 // Regression for HARMONY-259 343 Date.parse(null); 344 fail("Date.parse(null) should throw IllegalArgumentException"); 345 } catch (IllegalArgumentException e) { 346 // expected 347 } 348 } 349 350 /** 351 * java.util.Date#setDate(int) 352 */ 353 public void test_setDateI() { 354 // Test for method void java.util.Date.setDate(int) 355 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 356 .getTime(); 357 d.setDate(23); 358 assertEquals("Set incorrect date", 23, d.getDate()); 359 } 360 361 /** 362 * java.util.Date#setHours(int) 363 */ 364 public void test_setHoursI() { 365 // Test for method void java.util.Date.setHours(int) 366 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 367 .getTime(); 368 d.setHours(23); 369 assertEquals("Set incorrect hours", 23, d.getHours()); 370 } 371 372 /** 373 * java.util.Date#setMinutes(int) 374 */ 375 public void test_setMinutesI() { 376 // Test for method void java.util.Date.setMinutes(int) 377 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 378 .getTime(); 379 d.setMinutes(45); 380 assertEquals("Set incorrect mins", 45, d.getMinutes()); 381 } 382 383 /** 384 * java.util.Date#setMonth(int) 385 */ 386 public void test_setMonthI() { 387 // Test for method void java.util.Date.setMonth(int) 388 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 389 .getTime(); 390 d.setMonth(0); 391 assertEquals("Set incorrect month", 0, d.getMonth()); 392 } 393 394 /** 395 * java.util.Date#setSeconds(int) 396 */ 397 public void test_setSecondsI() { 398 // Test for method void java.util.Date.setSeconds(int) 399 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 400 .getTime(); 401 d.setSeconds(13); 402 assertEquals("Set incorrect seconds", 13, d.getSeconds()); 403 } 404 405 /** 406 * java.util.Date#setTime(long) 407 */ 408 public void test_setTimeJ() { 409 // Test for method void java.util.Date.setTime(long) 410 Date d1 = new Date(0); 411 Date d2 = new Date(1900000); 412 d1.setTime(900); 413 d2.setTime(890000); 414 assertEquals("Returned incorrect time", 890000, d2.getTime()); 415 assertEquals("Returned incorrect time", 900, d1.getTime()); 416 } 417 418 /** 419 * java.util.Date#setYear(int) 420 */ 421 public void test_setYearI() { 422 // Test for method void java.util.Date.setYear(int) 423 Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) 424 .getTime(); 425 d.setYear(8); 426 assertEquals("Set incorrect year", 8, d.getYear()); 427 } 428 429 /** 430 * java.util.Date#toGMTString() 431 */ 432 public void test_toGMTString() { 433 // Test for method java.lang.String java.util.Date.toGMTString() 434 assertEquals("Did not convert epoch to GMT string correctly", "1 Jan 1970 00:00:00 GMT", new Date(0) 435 .toGMTString()); 436 assertEquals("Did not convert epoch + 1yr to GMT string correctly", 437 "1 Jan 1971 00:00:00 GMT", new Date((long) 365 * 24 * 60 * 60 * 1000).toGMTString() 438 ); 439 } 440 441 /** 442 * java.util.Date#toString() 443 */ 444 public void test_toString() { 445 // Test for method java.lang.String java.util.Date.toString() 446 Calendar cal = Calendar.getInstance(); 447 cal.set(Calendar.DATE, 1); 448 cal.set(Calendar.MONTH, Calendar.JANUARY); 449 cal.set(Calendar.YEAR, 1970); 450 cal.set(Calendar.HOUR_OF_DAY, 0); 451 cal.set(Calendar.MINUTE, 0); 452 cal.set(Calendar.SECOND, 0); 453 Date d = cal.getTime(); 454 String result = d.toString(); 455 assertTrue("Incorrect result: " + d, result 456 .startsWith("Thu Jan 01 00:00:00") 457 && result.endsWith("1970")); 458 459 TimeZone tz = TimeZone.getDefault(); 460 TimeZone.setDefault(TimeZone.getTimeZone("GMT-5")); 461 try { 462 Date d1 = new Date(0); 463 assertTrue("Returned incorrect string: " + d1, d1.toString() 464 .equals("Wed Dec 31 19:00:00 GMT-05:00 1969")); 465 } finally { 466 TimeZone.setDefault(tz); 467 } 468 } 469 470 /** 471 * java.util.Date#UTC(int, int, int, int, int, int) 472 */ 473 public void test_UTCIIIIII() { 474 // Test for method long java.util.Date.UTC(int, int, int, int, int, int) 475 assertTrue("Returned incorrect UTC value for epoch", Date.UTC(70, 0, 1, 476 0, 0, 0) == (long) 0); 477 assertTrue("Returned incorrect UTC value for epoch +1yr", Date.UTC(71, 478 0, 1, 0, 0, 0) == (long) 365 * 24 * 60 * 60 * 1000); 479 } 480 /** 481 * java.util.Date#toLocaleString() Test for method java.lang.String 482 * java.util.Date.toGMTString() 483 */ 484 public void test_toLocaleString() { 485 Locale loc = Locale.getDefault(); 486 Locale.setDefault(Locale.US); 487 TimeZone tz = TimeZone.getDefault(); 488 TimeZone.setDefault(TimeZone.getTimeZone("GMT")); 489 try { 490 assertEquals("Did not convert epoch to GMT string correctly", "Jan 1, 1970 12:00:00 AM", 491 new Date(0).toLocaleString()); 492 assertEquals("Did not convert epoch + 1yr to GMT string correctly", 493 "Jan 1, 1971 12:00:00 AM", new Date((long)365 * 24 * 60 * 60 * 1000) 494 .toLocaleString()); 495 } finally { 496 Locale.setDefault(loc); 497 TimeZone.setDefault(tz); 498 } 499 } 500 501 /** 502 * Sets up the fixture, for example, open a network connection. This method 503 * is called before a test is executed. 504 */ 505 protected void setUp() { 506 } 507 508 /** 509 * Tears down the fixture, for example, close a network connection. This 510 * method is called after a test is executed. 511 */ 512 protected void tearDown() { 513 } 514} 515