001 /* 002 * Copyright 2001-2013 Stephen Colebourne 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.joda.time; 017 018 import java.util.Calendar; 019 import java.util.Date; 020 import java.util.GregorianCalendar; 021 022 import junit.framework.TestCase; 023 import junit.framework.TestSuite; 024 025 import org.joda.time.chrono.BuddhistChronology; 026 import org.joda.time.chrono.GregorianChronology; 027 import org.joda.time.chrono.ISOChronology; 028 import org.joda.time.format.DateTimeFormat; 029 import org.joda.time.format.DateTimeFormatter; 030 031 /** 032 * This class is a Junit unit test for LocalDateTime. 033 * 034 * @author Stephen Colebourne 035 */ 036 public class TestLocalDateTime_Constructors extends TestCase { 037 038 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London"); 039 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 040 private static final DateTimeZone MOSCOW = DateTimeZone.forID("Europe/Moscow"); 041 private static final Chronology ISO_UTC = ISOChronology.getInstanceUTC(); 042 private static final Chronology GREGORIAN_UTC = GregorianChronology.getInstanceUTC(); 043 private static final Chronology GREGORIAN_PARIS = GregorianChronology.getInstance(PARIS); 044 private static final Chronology GREGORIAN_MOSCOW = GregorianChronology.getInstance(MOSCOW); 045 private static final Chronology BUDDHIST_UTC = BuddhistChronology.getInstanceUTC(); 046 private static final int OFFSET_PARIS = PARIS.getOffset(0L) / DateTimeConstants.MILLIS_PER_HOUR; 047 private static final int OFFSET_MOSCOW = MOSCOW.getOffset(0L) / DateTimeConstants.MILLIS_PER_HOUR; 048 049 private long MILLIS_OF_DAY = 050 10L * DateTimeConstants.MILLIS_PER_HOUR 051 + 20L * DateTimeConstants.MILLIS_PER_MINUTE 052 + 30L * DateTimeConstants.MILLIS_PER_SECOND 053 + 40L; 054 private long TEST_TIME_NOW = 055 (31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY 056 + MILLIS_OF_DAY; 057 058 private long TEST_TIME1 = 059 (31L + 28L + 31L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY 060 + 12L * DateTimeConstants.MILLIS_PER_HOUR 061 + 24L * DateTimeConstants.MILLIS_PER_MINUTE; 062 private long TEST_TIME2 = 063 (365L + 31L + 28L + 31L + 30L + 7L -1L) * DateTimeConstants.MILLIS_PER_DAY 064 + 14L * DateTimeConstants.MILLIS_PER_HOUR 065 + 28L * DateTimeConstants.MILLIS_PER_MINUTE; 066 067 private DateTimeZone zone = null; 068 069 public static void main(String[] args) { 070 junit.textui.TestRunner.run(suite()); 071 } 072 073 public static TestSuite suite() { 074 return new TestSuite(TestLocalDateTime_Constructors.class); 075 } 076 077 public TestLocalDateTime_Constructors(String name) { 078 super(name); 079 } 080 081 protected void setUp() throws Exception { 082 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW); 083 zone = DateTimeZone.getDefault(); 084 DateTimeZone.setDefault(MOSCOW); 085 } 086 087 protected void tearDown() throws Exception { 088 DateTimeUtils.setCurrentMillisSystem(); 089 DateTimeZone.setDefault(zone); 090 zone = null; 091 } 092 093 //----------------------------------------------------------------------- 094 public void testParse_noFormatter() throws Throwable { 095 assertEquals(new LocalDateTime(2010, 6, 30, 1, 20), LocalDateTime.parse("2010-06-30T01:20")); 096 assertEquals(new LocalDateTime(2010, 1, 2, 14, 50, 30, 432), LocalDateTime.parse("2010-002T14:50:30.432")); 097 } 098 099 public void testParse_formatter() throws Throwable { 100 DateTimeFormatter f = DateTimeFormat.forPattern("yyyy--dd MM HH").withChronology(ISOChronology.getInstance(PARIS)); 101 assertEquals(new LocalDateTime(2010, 6, 30, 13, 0), LocalDateTime.parse("2010--30 06 13", f)); 102 } 103 104 //----------------------------------------------------------------------- 105 public void testFactory_fromCalendarFields() throws Exception { 106 GregorianCalendar cal = new GregorianCalendar(1970, 1, 3, 4, 5, 6); 107 cal.set(Calendar.MILLISECOND, 7); 108 LocalDateTime expected = new LocalDateTime(1970, 2, 3, 4, 5, 6, 7); 109 assertEquals(expected, LocalDateTime.fromCalendarFields(cal)); 110 } 111 112 public void testFactory_fromCalendarFields_beforeYearZero1() throws Exception { 113 GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6); 114 cal.set(Calendar.ERA, GregorianCalendar.BC); 115 cal.set(Calendar.MILLISECOND, 7); 116 LocalDateTime expected = new LocalDateTime(0, 2, 3, 4, 5, 6, 7); 117 assertEquals(expected, LocalDateTime.fromCalendarFields(cal)); 118 } 119 120 public void testFactory_fromCalendarFields_beforeYearZero3() throws Exception { 121 GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6); 122 cal.set(Calendar.ERA, GregorianCalendar.BC); 123 cal.set(Calendar.MILLISECOND, 7); 124 LocalDateTime expected = new LocalDateTime(-2, 2, 3, 4, 5, 6, 7); 125 assertEquals(expected, LocalDateTime.fromCalendarFields(cal)); 126 } 127 128 public void testFactory_fromCalendarFields_null() throws Exception { 129 try { 130 LocalDateTime.fromCalendarFields((Calendar) null); 131 fail(); 132 } catch (IllegalArgumentException ex) {} 133 } 134 135 //----------------------------------------------------------------------- 136 public void testFactory_fromDateFields_after1970() throws Exception { 137 GregorianCalendar cal = new GregorianCalendar(1970, 1, 3, 4, 5, 6); 138 cal.set(Calendar.MILLISECOND, 7); 139 LocalDateTime expected = new LocalDateTime(1970, 2, 3, 4, 5 ,6, 7); 140 assertEquals(expected, LocalDateTime.fromDateFields(cal.getTime())); 141 } 142 143 public void testFactory_fromDateFields_before1970() throws Exception { 144 GregorianCalendar cal = new GregorianCalendar(1969, 1, 3, 4, 5, 6); 145 cal.set(Calendar.MILLISECOND, 7); 146 LocalDateTime expected = new LocalDateTime(1969, 2, 3, 4, 5 ,6, 7); 147 assertEquals(expected, LocalDateTime.fromDateFields(cal.getTime())); 148 } 149 150 public void testFactory_fromDateFields_beforeYearZero1() throws Exception { 151 GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6); 152 cal.set(Calendar.ERA, GregorianCalendar.BC); 153 cal.set(Calendar.MILLISECOND, 7); 154 LocalDateTime expected = new LocalDateTime(0, 2, 3, 4, 5, 6, 7); 155 assertEquals(expected, LocalDateTime.fromDateFields(cal.getTime())); 156 } 157 158 public void testFactory_fromDateFields_beforeYearZero3() throws Exception { 159 GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6); 160 cal.set(Calendar.ERA, GregorianCalendar.BC); 161 cal.set(Calendar.MILLISECOND, 7); 162 LocalDateTime expected = new LocalDateTime(-2, 2, 3, 4, 5, 6, 7); 163 assertEquals(expected, LocalDateTime.fromDateFields(cal.getTime())); 164 } 165 166 public void testFactory_fromDateFields_null() throws Exception { 167 try { 168 LocalDateTime.fromDateFields((Date) null); 169 fail(); 170 } catch (IllegalArgumentException ex) {} 171 } 172 173 //----------------------------------------------------------------------- 174 public void testConstructor() throws Throwable { 175 LocalDateTime test = new LocalDateTime(); 176 assertEquals(ISO_UTC, test.getChronology()); 177 assertEquals(1970, test.getYear()); 178 assertEquals(6, test.getMonthOfYear()); 179 assertEquals(9, test.getDayOfMonth()); 180 assertEquals(10 + OFFSET_MOSCOW, test.getHourOfDay()); 181 assertEquals(20, test.getMinuteOfHour()); 182 assertEquals(30, test.getSecondOfMinute()); 183 assertEquals(40, test.getMillisOfSecond()); 184 assertEquals(test, LocalDateTime.now()); 185 } 186 187 //----------------------------------------------------------------------- 188 public void testConstructor_DateTimeZone() throws Throwable { 189 DateTime dt = new DateTime(2005, 6, 8, 23, 59, 0, 0, LONDON); 190 DateTimeUtils.setCurrentMillisFixed(dt.getMillis()); 191 // 23:59 in London is 00:59 the following day in Paris 192 193 LocalDateTime test = new LocalDateTime(LONDON); 194 assertEquals(ISO_UTC, test.getChronology()); 195 assertEquals(2005, test.getYear()); 196 assertEquals(6, test.getMonthOfYear()); 197 assertEquals(8, test.getDayOfMonth()); 198 assertEquals(23, test.getHourOfDay()); 199 assertEquals(59, test.getMinuteOfHour()); 200 assertEquals(0, test.getSecondOfMinute()); 201 assertEquals(0, test.getMillisOfSecond()); 202 assertEquals(test, LocalDateTime.now(LONDON)); 203 204 test = new LocalDateTime(PARIS); 205 assertEquals(ISO_UTC, test.getChronology()); 206 assertEquals(2005, test.getYear()); 207 assertEquals(6, test.getMonthOfYear()); 208 assertEquals(9, test.getDayOfMonth()); 209 assertEquals(0, test.getHourOfDay()); 210 assertEquals(59, test.getMinuteOfHour()); 211 assertEquals(0, test.getSecondOfMinute()); 212 assertEquals(0, test.getMillisOfSecond()); 213 assertEquals(test, LocalDateTime.now(PARIS)); 214 } 215 216 public void testConstructor_nullDateTimeZone() throws Throwable { 217 LocalDateTime test = new LocalDateTime((DateTimeZone) null); 218 assertEquals(ISO_UTC, test.getChronology()); 219 assertEquals(1970, test.getYear()); 220 assertEquals(6, test.getMonthOfYear()); 221 assertEquals(9, test.getDayOfMonth()); 222 assertEquals(10 + OFFSET_MOSCOW, test.getHourOfDay()); 223 assertEquals(20, test.getMinuteOfHour()); 224 assertEquals(30, test.getSecondOfMinute()); 225 assertEquals(40, test.getMillisOfSecond()); 226 } 227 228 //----------------------------------------------------------------------- 229 public void testConstructor_Chronology() throws Throwable { 230 LocalDateTime test = new LocalDateTime(GREGORIAN_PARIS); 231 assertEquals(GREGORIAN_UTC, test.getChronology()); 232 assertEquals(1970, test.getYear()); 233 assertEquals(6, test.getMonthOfYear()); 234 assertEquals(9, test.getDayOfMonth()); 235 assertEquals(10 + OFFSET_PARIS, test.getHourOfDay()); 236 assertEquals(20, test.getMinuteOfHour()); 237 assertEquals(30, test.getSecondOfMinute()); 238 assertEquals(40, test.getMillisOfSecond()); 239 assertEquals(test, LocalDateTime.now(GREGORIAN_PARIS)); 240 } 241 242 public void testConstructor_nullChronology() throws Throwable { 243 LocalDateTime test = new LocalDateTime((Chronology) null); 244 assertEquals(ISO_UTC, test.getChronology()); 245 assertEquals(1970, test.getYear()); 246 assertEquals(6, test.getMonthOfYear()); 247 assertEquals(9, test.getDayOfMonth()); 248 assertEquals(10 + OFFSET_MOSCOW, test.getHourOfDay()); 249 assertEquals(20, test.getMinuteOfHour()); 250 assertEquals(30, test.getSecondOfMinute()); 251 assertEquals(40, test.getMillisOfSecond()); 252 } 253 254 //----------------------------------------------------------------------- 255 public void testConstructor_long1() throws Throwable { 256 LocalDateTime test = new LocalDateTime(TEST_TIME1); 257 assertEquals(ISO_UTC, test.getChronology()); 258 assertEquals(1970, test.getYear()); 259 assertEquals(4, test.getMonthOfYear()); 260 assertEquals(6, test.getDayOfMonth()); 261 assertEquals(12 + OFFSET_MOSCOW, test.getHourOfDay()); 262 assertEquals(24, test.getMinuteOfHour()); 263 assertEquals(0, test.getSecondOfMinute()); 264 assertEquals(0, test.getMillisOfSecond()); 265 } 266 267 public void testConstructor_long2() throws Throwable { 268 LocalDateTime test = new LocalDateTime(TEST_TIME2); 269 assertEquals(ISO_UTC, test.getChronology()); 270 assertEquals(1971, test.getYear()); 271 assertEquals(5, test.getMonthOfYear()); 272 assertEquals(7, test.getDayOfMonth()); 273 assertEquals(14 + OFFSET_MOSCOW, test.getHourOfDay()); 274 assertEquals(28, test.getMinuteOfHour()); 275 assertEquals(0, test.getSecondOfMinute()); 276 assertEquals(0, test.getMillisOfSecond()); 277 } 278 279 //----------------------------------------------------------------------- 280 public void testConstructor_long1_DateTimeZone() throws Throwable { 281 LocalDateTime test = new LocalDateTime(TEST_TIME1, PARIS); 282 assertEquals(ISO_UTC, test.getChronology()); 283 assertEquals(1970, test.getYear()); 284 assertEquals(4, test.getMonthOfYear()); 285 assertEquals(6, test.getDayOfMonth()); 286 assertEquals(12 + OFFSET_PARIS, test.getHourOfDay()); 287 assertEquals(24, test.getMinuteOfHour()); 288 assertEquals(0, test.getSecondOfMinute()); 289 assertEquals(0, test.getMillisOfSecond()); 290 } 291 292 public void testConstructor_long2_DateTimeZone() throws Throwable { 293 LocalDateTime test = new LocalDateTime(TEST_TIME2, PARIS); 294 assertEquals(ISO_UTC, test.getChronology()); 295 assertEquals(1971, test.getYear()); 296 assertEquals(5, test.getMonthOfYear()); 297 assertEquals(7, test.getDayOfMonth()); 298 assertEquals(14 + OFFSET_PARIS, test.getHourOfDay()); 299 assertEquals(28, test.getMinuteOfHour()); 300 assertEquals(0, test.getSecondOfMinute()); 301 assertEquals(0, test.getMillisOfSecond()); 302 } 303 304 public void testConstructor_long_nullDateTimeZone() throws Throwable { 305 LocalDateTime test = new LocalDateTime(TEST_TIME1, (DateTimeZone) null); 306 assertEquals(ISO_UTC, test.getChronology()); 307 assertEquals(1970, test.getYear()); 308 assertEquals(4, test.getMonthOfYear()); 309 assertEquals(6, test.getDayOfMonth()); 310 assertEquals(12 + OFFSET_MOSCOW, test.getHourOfDay()); 311 assertEquals(24, test.getMinuteOfHour()); 312 assertEquals(0, test.getSecondOfMinute()); 313 assertEquals(0, test.getMillisOfSecond()); 314 } 315 316 //----------------------------------------------------------------------- 317 public void testConstructor_long1_Chronology() throws Throwable { 318 LocalDateTime test = new LocalDateTime(TEST_TIME1, GREGORIAN_PARIS); 319 assertEquals(GREGORIAN_UTC, test.getChronology()); 320 assertEquals(1970, test.getYear()); 321 assertEquals(4, test.getMonthOfYear()); 322 assertEquals(6, test.getDayOfMonth()); 323 assertEquals(12 + OFFSET_PARIS, test.getHourOfDay()); 324 assertEquals(24, test.getMinuteOfHour()); 325 assertEquals(0, test.getSecondOfMinute()); 326 assertEquals(0, test.getMillisOfSecond()); 327 } 328 329 public void testConstructor_long2_Chronology() throws Throwable { 330 LocalDateTime test = new LocalDateTime(TEST_TIME2, GREGORIAN_PARIS); 331 assertEquals(GREGORIAN_UTC, test.getChronology()); 332 assertEquals(1971, test.getYear()); 333 assertEquals(5, test.getMonthOfYear()); 334 assertEquals(7, test.getDayOfMonth()); 335 assertEquals(14 + OFFSET_PARIS, test.getHourOfDay()); 336 assertEquals(28, test.getMinuteOfHour()); 337 assertEquals(0, test.getSecondOfMinute()); 338 assertEquals(0, test.getMillisOfSecond()); 339 } 340 341 public void testConstructor_long_nullChronology() throws Throwable { 342 LocalDateTime test = new LocalDateTime(TEST_TIME1, (Chronology) null); 343 assertEquals(ISO_UTC, test.getChronology()); 344 assertEquals(1970, test.getYear()); 345 assertEquals(4, test.getMonthOfYear()); 346 assertEquals(6, test.getDayOfMonth()); 347 assertEquals(12 + OFFSET_MOSCOW, test.getHourOfDay()); 348 assertEquals(24, test.getMinuteOfHour()); 349 assertEquals(0, test.getSecondOfMinute()); 350 assertEquals(0, test.getMillisOfSecond()); 351 } 352 353 //----------------------------------------------------------------------- 354 public void testConstructor_Object1() throws Throwable { 355 Date date = new Date(TEST_TIME1); 356 LocalDateTime test = new LocalDateTime(date); 357 assertEquals(ISO_UTC, test.getChronology()); 358 assertEquals(1970, test.getYear()); 359 assertEquals(4, test.getMonthOfYear()); 360 assertEquals(6, test.getDayOfMonth()); 361 assertEquals(12 + OFFSET_MOSCOW, test.getHourOfDay()); 362 assertEquals(24, test.getMinuteOfHour()); 363 assertEquals(0, test.getSecondOfMinute()); 364 assertEquals(0, test.getMillisOfSecond()); 365 } 366 367 public void testConstructor_nullObject() throws Throwable { 368 LocalDateTime test = new LocalDateTime((Object) null); 369 assertEquals(ISO_UTC, test.getChronology()); 370 assertEquals(1970, test.getYear()); 371 assertEquals(6, test.getMonthOfYear()); 372 assertEquals(9, test.getDayOfMonth()); 373 assertEquals(10 + OFFSET_MOSCOW, test.getHourOfDay()); 374 assertEquals(20, test.getMinuteOfHour()); 375 assertEquals(30, test.getSecondOfMinute()); 376 assertEquals(40, test.getMillisOfSecond()); 377 } 378 379 public void testConstructor_ObjectString1() throws Throwable { 380 LocalDateTime test = new LocalDateTime("1972-04-06"); 381 assertEquals(ISO_UTC, test.getChronology()); 382 assertEquals(1972, test.getYear()); 383 assertEquals(4, test.getMonthOfYear()); 384 assertEquals(6, test.getDayOfMonth()); 385 assertEquals(0, test.getHourOfDay()); 386 assertEquals(0, test.getMinuteOfHour()); 387 assertEquals(0, test.getSecondOfMinute()); 388 assertEquals(0, test.getMillisOfSecond()); 389 } 390 391 public void testConstructor_ObjectString2() throws Throwable { 392 LocalDateTime test = new LocalDateTime("1972-037"); 393 assertEquals(ISO_UTC, test.getChronology()); 394 assertEquals(1972, test.getYear()); 395 assertEquals(2, test.getMonthOfYear()); 396 assertEquals(6, test.getDayOfMonth()); 397 assertEquals(0, test.getHourOfDay()); 398 assertEquals(0, test.getMinuteOfHour()); 399 assertEquals(0, test.getSecondOfMinute()); 400 assertEquals(0, test.getMillisOfSecond()); 401 } 402 403 public void testConstructor_ObjectString3() throws Throwable { 404 LocalDateTime test = new LocalDateTime("1972-04-06T10:20:30.040"); 405 assertEquals(ISO_UTC, test.getChronology()); 406 assertEquals(1972, test.getYear()); 407 assertEquals(4, test.getMonthOfYear()); 408 assertEquals(6, test.getDayOfMonth()); 409 assertEquals(10, test.getHourOfDay()); 410 assertEquals(20, test.getMinuteOfHour()); 411 assertEquals(30, test.getSecondOfMinute()); 412 assertEquals(40, test.getMillisOfSecond()); 413 } 414 415 public void testConstructor_ObjectString4() throws Throwable { 416 LocalDateTime test = new LocalDateTime("1972-04-06T10:20"); 417 assertEquals(ISO_UTC, test.getChronology()); 418 assertEquals(1972, test.getYear()); 419 assertEquals(4, test.getMonthOfYear()); 420 assertEquals(6, test.getDayOfMonth()); 421 assertEquals(10, test.getHourOfDay()); 422 assertEquals(20, test.getMinuteOfHour()); 423 assertEquals(0, test.getSecondOfMinute()); 424 assertEquals(0, test.getMillisOfSecond()); 425 } 426 427 public void testConstructor_ObjectStringEx1() throws Throwable { 428 try { 429 new LocalDateTime("1970-04-06T+14:00"); 430 fail(); 431 } catch (IllegalArgumentException ex) {} 432 } 433 434 public void testConstructor_ObjectStringEx2() throws Throwable { 435 try { 436 new LocalDateTime("1970-04-06T10:20:30.040+14:00"); 437 fail(); 438 } catch (IllegalArgumentException ex) {} 439 } 440 441 public void testConstructor_ObjectStringEx3() throws Throwable { 442 try { 443 new LocalDateTime("T10:20:30.040"); 444 fail(); 445 } catch (IllegalArgumentException ex) {} 446 } 447 448 public void testConstructor_ObjectStringEx4() throws Throwable { 449 try { 450 new LocalDateTime("T10:20:30.040+14:00"); 451 fail(); 452 } catch (IllegalArgumentException ex) {} 453 } 454 455 public void testConstructor_ObjectStringEx5() throws Throwable { 456 try { 457 new LocalDateTime("10:20:30.040"); 458 fail(); 459 } catch (IllegalArgumentException ex) {} 460 } 461 462 public void testConstructor_ObjectStringEx6() throws Throwable { 463 try { 464 new LocalDateTime("10:20:30.040+14:00"); 465 fail(); 466 } catch (IllegalArgumentException ex) {} 467 } 468 469 public void testConstructor_ObjectLocalDateTime() throws Throwable { 470 LocalDateTime dt = new LocalDateTime(1970, 5, 6, 10, 20, 30, 40, BUDDHIST_UTC); 471 LocalDateTime test = new LocalDateTime(dt); 472 assertEquals(BUDDHIST_UTC, test.getChronology()); 473 assertEquals(1970, test.getYear()); 474 assertEquals(5, test.getMonthOfYear()); 475 assertEquals(6, test.getDayOfMonth()); 476 assertEquals(10, test.getHourOfDay()); 477 assertEquals(20, test.getMinuteOfHour()); 478 assertEquals(30, test.getSecondOfMinute()); 479 assertEquals(40, test.getMillisOfSecond()); 480 } 481 482 public void testConstructor_ObjectLocalDate() throws Throwable { 483 LocalDate date = new LocalDate(1970, 5, 6); 484 try { 485 new LocalDateTime(date); 486 fail(); 487 } catch (IllegalArgumentException ex) {} 488 } 489 490 public void testConstructor_ObjectLocalTime() throws Throwable { 491 LocalTime time = new LocalTime(10, 20, 30, 40); 492 try { 493 new LocalDateTime(time); 494 fail(); 495 } catch (IllegalArgumentException ex) {} 496 } 497 498 //----------------------------------------------------------------------- 499 public void testConstructor_Object_DateTimeZone() throws Throwable { 500 Date date = new Date(TEST_TIME1); 501 LocalDateTime test = new LocalDateTime(date, PARIS); 502 assertEquals(ISO_UTC, test.getChronology()); 503 assertEquals(1970, test.getYear()); 504 assertEquals(4, test.getMonthOfYear()); 505 assertEquals(6, test.getDayOfMonth()); 506 assertEquals(12 + OFFSET_PARIS, test.getHourOfDay()); 507 assertEquals(24, test.getMinuteOfHour()); 508 assertEquals(0, test.getSecondOfMinute()); 509 assertEquals(0, test.getMillisOfSecond()); 510 } 511 512 public void testConstructor_Object_DateTimeZoneMoscow() throws Throwable { 513 LocalDateTime test = new LocalDateTime("1970-04-06T12:24:00", MOSCOW); 514 assertEquals(ISO_UTC, test.getChronology()); 515 assertEquals(1970, test.getYear()); 516 assertEquals(4, test.getMonthOfYear()); 517 assertEquals(6, test.getDayOfMonth()); 518 assertEquals(12, test.getHourOfDay()); 519 assertEquals(24, test.getMinuteOfHour()); 520 assertEquals(0, test.getSecondOfMinute()); 521 assertEquals(0, test.getMillisOfSecond()); 522 } 523 524 public void testConstructor_Object_DateTimeZoneMoscowBadDateTime() throws Throwable { 525 // 1981-03-31T23:59:59.999+03:00 followed by 1981-04-01T01:00:00.000+04:00 526 // 1981-09-30T23:59:59.999+04:00 followed by 1981-09-30T23:00:00.000+03:00 527 528 // when a DST non-existing time is passed in, it should still work (ie. zone ignored) 529 LocalDateTime test = new LocalDateTime("1981-04-01T00:30:00", MOSCOW); // doesnt exist 530 assertEquals(ISO_UTC, test.getChronology()); 531 assertEquals(1981, test.getYear()); 532 assertEquals(4, test.getMonthOfYear()); 533 assertEquals(1, test.getDayOfMonth()); 534 assertEquals(0, test.getHourOfDay()); 535 assertEquals(30, test.getMinuteOfHour()); 536 assertEquals(0, test.getSecondOfMinute()); 537 assertEquals(0, test.getMillisOfSecond()); 538 } 539 540 public void testConstructor_nullObject_DateTimeZone() throws Throwable { 541 LocalDateTime test = new LocalDateTime((Object) null, PARIS); 542 assertEquals(ISO_UTC, test.getChronology()); 543 assertEquals(1970, test.getYear()); 544 assertEquals(6, test.getMonthOfYear()); 545 assertEquals(9, test.getDayOfMonth()); 546 assertEquals(10 + OFFSET_PARIS, test.getHourOfDay()); 547 assertEquals(20, test.getMinuteOfHour()); 548 assertEquals(30, test.getSecondOfMinute()); 549 assertEquals(40, test.getMillisOfSecond()); 550 } 551 552 public void testConstructor_Object_nullDateTimeZone() throws Throwable { 553 Date date = new Date(TEST_TIME1); 554 LocalDateTime test = new LocalDateTime(date, (DateTimeZone) null); 555 assertEquals(ISO_UTC, test.getChronology()); 556 assertEquals(1970, test.getYear()); 557 assertEquals(4, test.getMonthOfYear()); 558 assertEquals(6, test.getDayOfMonth()); 559 assertEquals(12 + OFFSET_MOSCOW, test.getHourOfDay()); 560 assertEquals(24, test.getMinuteOfHour()); 561 assertEquals(0, test.getSecondOfMinute()); 562 assertEquals(0, test.getMillisOfSecond()); 563 } 564 565 public void testConstructor_nullObject_nullDateTimeZone() throws Throwable { 566 LocalDateTime test = new LocalDateTime((Object) null, (DateTimeZone) null); 567 assertEquals(ISO_UTC, test.getChronology()); 568 assertEquals(1970, test.getYear()); 569 assertEquals(6, test.getMonthOfYear()); 570 assertEquals(9, test.getDayOfMonth()); 571 assertEquals(10 + OFFSET_MOSCOW, test.getHourOfDay()); 572 assertEquals(20, test.getMinuteOfHour()); 573 assertEquals(30, test.getSecondOfMinute()); 574 assertEquals(40, test.getMillisOfSecond()); 575 } 576 577 //----------------------------------------------------------------------- 578 public void testConstructor_Object_Chronology() throws Throwable { 579 Date date = new Date(TEST_TIME1); 580 LocalDateTime test = new LocalDateTime(date, GREGORIAN_PARIS); 581 assertEquals(GREGORIAN_UTC, test.getChronology()); 582 assertEquals(1970, test.getYear()); 583 assertEquals(4, test.getMonthOfYear()); 584 assertEquals(6, test.getDayOfMonth()); 585 assertEquals(12 + OFFSET_PARIS, test.getHourOfDay()); 586 assertEquals(24, test.getMinuteOfHour()); 587 assertEquals(0, test.getSecondOfMinute()); 588 assertEquals(0, test.getMillisOfSecond()); 589 } 590 591 public void testConstructor_Object_Chronology_crossChronology() throws Throwable { 592 LocalDateTime input = new LocalDateTime(1970, 4, 6, 12, 30, 0, 0, ISO_UTC); 593 LocalDateTime test = new LocalDateTime(input, BUDDHIST_UTC); 594 assertEquals(BUDDHIST_UTC, test.getChronology()); 595 assertEquals(1970, test.getYear()); 596 assertEquals(4, test.getMonthOfYear()); 597 assertEquals(6, test.getDayOfMonth()); 598 assertEquals(12, test.getHourOfDay()); 599 assertEquals(30, test.getMinuteOfHour()); 600 assertEquals(0, test.getSecondOfMinute()); 601 assertEquals(0, test.getMillisOfSecond()); 602 } 603 604 public void testConstructor_Object_ChronologyMoscow() throws Throwable { 605 LocalDateTime test = new LocalDateTime("1970-04-06T12:24:00", GREGORIAN_MOSCOW); 606 assertEquals(GREGORIAN_UTC, test.getChronology()); 607 assertEquals(1970, test.getYear()); 608 assertEquals(4, test.getMonthOfYear()); 609 assertEquals(6, test.getDayOfMonth()); 610 assertEquals(12, test.getHourOfDay()); 611 assertEquals(24, test.getMinuteOfHour()); 612 assertEquals(0, test.getSecondOfMinute()); 613 assertEquals(0, test.getMillisOfSecond()); 614 } 615 616 public void testConstructor_Object_ChronologyMoscowBadDateTime() throws Throwable { 617 // 1981-03-31T23:59:59.999+03:00 followed by 1981-04-01T01:00:00.000+04:00 618 // 1981-09-30T23:59:59.999+04:00 followed by 1981-09-30T23:00:00.000+03:00 619 620 // when a DST non-existing time is passed in, it should still work (ie. zone ignored) 621 LocalDateTime test = new LocalDateTime("1981-04-01T00:30:00", GREGORIAN_MOSCOW); // doesnt exist 622 assertEquals(GREGORIAN_UTC, test.getChronology()); 623 assertEquals(1981, test.getYear()); 624 assertEquals(4, test.getMonthOfYear()); 625 assertEquals(1, test.getDayOfMonth()); 626 assertEquals(0, test.getHourOfDay()); 627 assertEquals(30, test.getMinuteOfHour()); 628 assertEquals(0, test.getSecondOfMinute()); 629 assertEquals(0, test.getMillisOfSecond()); 630 } 631 632 public void testConstructor_nullObject_Chronology() throws Throwable { 633 LocalDateTime test = new LocalDateTime((Object) null, GREGORIAN_PARIS); 634 assertEquals(GREGORIAN_UTC, test.getChronology()); 635 assertEquals(1970, test.getYear()); 636 assertEquals(6, test.getMonthOfYear()); 637 assertEquals(9, test.getDayOfMonth()); 638 assertEquals(10 + OFFSET_PARIS, test.getHourOfDay()); 639 assertEquals(20, test.getMinuteOfHour()); 640 assertEquals(30, test.getSecondOfMinute()); 641 assertEquals(40, test.getMillisOfSecond()); 642 } 643 644 public void testConstructor_Object_nullChronology() throws Throwable { 645 Date date = new Date(TEST_TIME1); 646 LocalDateTime test = new LocalDateTime(date, (Chronology) null); 647 assertEquals(ISO_UTC, test.getChronology()); 648 assertEquals(1970, test.getYear()); 649 assertEquals(4, test.getMonthOfYear()); 650 assertEquals(6, test.getDayOfMonth()); 651 assertEquals(12 + OFFSET_MOSCOW, test.getHourOfDay()); 652 assertEquals(24, test.getMinuteOfHour()); 653 assertEquals(0, test.getSecondOfMinute()); 654 assertEquals(0, test.getMillisOfSecond()); 655 } 656 657 public void testConstructor_nullObject_nullChronology() throws Throwable { 658 LocalDateTime test = new LocalDateTime((Object) null, (Chronology) null); 659 assertEquals(ISO_UTC, test.getChronology()); 660 assertEquals(1970, test.getYear()); 661 assertEquals(6, test.getMonthOfYear()); 662 assertEquals(9, test.getDayOfMonth()); 663 assertEquals(10 + OFFSET_MOSCOW, test.getHourOfDay()); 664 assertEquals(20, test.getMinuteOfHour()); 665 assertEquals(30, test.getSecondOfMinute()); 666 assertEquals(40, test.getMillisOfSecond()); 667 } 668 669 //----------------------------------------------------------------------- 670 public void testConstructor_int_int_int_int_int() throws Throwable { 671 LocalDateTime test = new LocalDateTime(2005, 6, 9, 10, 20); 672 assertEquals(ISO_UTC, test.getChronology()); 673 assertEquals(2005, test.getYear()); 674 assertEquals(6, test.getMonthOfYear()); 675 assertEquals(9, test.getDayOfMonth()); 676 assertEquals(10, test.getHourOfDay()); 677 assertEquals(20, test.getMinuteOfHour()); 678 assertEquals(0, test.getSecondOfMinute()); 679 assertEquals(0, test.getMillisOfSecond()); 680 } 681 682 //----------------------------------------------------------------------- 683 public void testConstructor_int_int_int_int_int_int() throws Throwable { 684 LocalDateTime test = new LocalDateTime(2005, 6, 9, 10, 20, 30); 685 assertEquals(ISO_UTC, test.getChronology()); 686 assertEquals(2005, test.getYear()); 687 assertEquals(6, test.getMonthOfYear()); 688 assertEquals(9, test.getDayOfMonth()); 689 assertEquals(10, test.getHourOfDay()); 690 assertEquals(20, test.getMinuteOfHour()); 691 assertEquals(30, test.getSecondOfMinute()); 692 assertEquals(0, test.getMillisOfSecond()); 693 } 694 695 //----------------------------------------------------------------------- 696 public void testConstructor_int_int_int_int_int_int_int() throws Throwable { 697 LocalDateTime test = new LocalDateTime(2005, 6, 9, 10, 20, 30, 40); 698 assertEquals(ISO_UTC, test.getChronology()); 699 assertEquals(2005, test.getYear()); 700 assertEquals(6, test.getMonthOfYear()); 701 assertEquals(9, test.getDayOfMonth()); 702 assertEquals(10, test.getHourOfDay()); 703 assertEquals(20, test.getMinuteOfHour()); 704 assertEquals(30, test.getSecondOfMinute()); 705 assertEquals(40, test.getMillisOfSecond()); 706 try { 707 new LocalDateTime(Integer.MIN_VALUE, 6, 9, 10, 20, 30, 40); 708 fail(); 709 } catch (IllegalArgumentException ex) {} 710 try { 711 new LocalDateTime(Integer.MAX_VALUE, 6, 9, 10, 20, 30, 40); 712 fail(); 713 } catch (IllegalArgumentException ex) {} 714 try { 715 new LocalDateTime(2005, 0, 9, 10, 20, 30, 40); 716 fail(); 717 } catch (IllegalArgumentException ex) {} 718 try { 719 new LocalDateTime(2005, 13, 9, 10, 20, 30, 40); 720 fail(); 721 } catch (IllegalArgumentException ex) {} 722 try { 723 new LocalDateTime(2005, 6, 0, 10, 20, 30, 40); 724 fail(); 725 } catch (IllegalArgumentException ex) {} 726 try { 727 new LocalDateTime(2005, 6, 31, 10, 20, 30, 40); 728 fail(); 729 } catch (IllegalArgumentException ex) {} 730 new LocalDateTime(2005, 7, 31, 10, 20, 30, 40); 731 try { 732 new LocalDateTime(2005, 7, 32, 10, 20, 30, 40); 733 fail(); 734 } catch (IllegalArgumentException ex) {} 735 } 736 737 public void testConstructor_int_int_int_Chronology() throws Throwable { 738 LocalDateTime test = new LocalDateTime(2005, 6, 9, 10, 20, 30, 40, GREGORIAN_PARIS); 739 assertEquals(GREGORIAN_UTC, test.getChronology()); 740 assertEquals(2005, test.getYear()); 741 assertEquals(6, test.getMonthOfYear()); 742 assertEquals(9, test.getDayOfMonth()); 743 assertEquals(10, test.getHourOfDay()); // PARIS has no effect 744 assertEquals(20, test.getMinuteOfHour()); 745 assertEquals(30, test.getSecondOfMinute()); 746 assertEquals(40, test.getMillisOfSecond()); 747 try { 748 new LocalDateTime(Integer.MIN_VALUE, 6, 9, 10, 20, 30, 40, GREGORIAN_PARIS); 749 fail(); 750 } catch (IllegalArgumentException ex) {} 751 try { 752 new LocalDateTime(Integer.MAX_VALUE, 6, 9, 10, 20, 30, 40, GREGORIAN_PARIS); 753 fail(); 754 } catch (IllegalArgumentException ex) {} 755 try { 756 new LocalDateTime(2005, 0, 9, 10, 20, 30, 40, GREGORIAN_PARIS); 757 fail(); 758 } catch (IllegalArgumentException ex) {} 759 try { 760 new LocalDateTime(2005, 13, 9, 10, 20, 30, 40, GREGORIAN_PARIS); 761 fail(); 762 } catch (IllegalArgumentException ex) {} 763 try { 764 new LocalDateTime(2005, 6, 0, 10, 20, 30, 40, GREGORIAN_PARIS); 765 fail(); 766 } catch (IllegalArgumentException ex) {} 767 try { 768 new LocalDateTime(2005, 6, 31, 10, 20, 30, 40, GREGORIAN_PARIS); 769 fail(); 770 } catch (IllegalArgumentException ex) {} 771 new LocalDateTime(2005, 7, 31, 10, 20, 30, 40, GREGORIAN_PARIS); 772 try { 773 new LocalDateTime(2005, 7, 32, 10, 20, 30, 40, GREGORIAN_PARIS); 774 fail(); 775 } catch (IllegalArgumentException ex) {} 776 } 777 778 public void testConstructor_int_int_int_nullChronology() throws Throwable { 779 LocalDateTime test = new LocalDateTime(2005, 6, 9, 10, 20, 30, 40, null); 780 assertEquals(ISO_UTC, test.getChronology()); 781 assertEquals(2005, test.getYear()); 782 assertEquals(6, test.getMonthOfYear()); 783 assertEquals(9, test.getDayOfMonth()); 784 } 785 786 }