001 /* 002 * Copyright 2001-2005 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.Locale; 019 import java.util.TimeZone; 020 021 import junit.framework.TestCase; 022 import junit.framework.TestSuite; 023 024 import org.joda.time.chrono.BuddhistChronology; 025 import org.joda.time.chrono.GJChronology; 026 import org.joda.time.chrono.ISOChronology; 027 import org.joda.time.convert.ConverterManager; 028 import org.joda.time.convert.IntervalConverter; 029 030 /** 031 * This class is a JUnit test for Interval. 032 * 033 * @author Stephen Colebourne 034 */ 035 public class TestMutableInterval_Constructors extends TestCase { 036 // Test in 2002/03 as time zones are more well known 037 // (before the late 90's they were all over the place) 038 039 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 040 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London"); 041 042 long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 043 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 044 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 045 366 + 365; 046 long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 047 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 048 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 049 366 + 365 + 365; 050 051 // 2002-06-09 052 private long TEST_TIME_NOW = 053 (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY; 054 055 // 2002-04-05 056 private long TEST_TIME1 = 057 (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY 058 + 12L * DateTimeConstants.MILLIS_PER_HOUR 059 + 24L * DateTimeConstants.MILLIS_PER_MINUTE; 060 061 // 2003-05-06 062 private long TEST_TIME2 = 063 (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY 064 + 14L * DateTimeConstants.MILLIS_PER_HOUR 065 + 28L * DateTimeConstants.MILLIS_PER_MINUTE; 066 067 private DateTimeZone originalDateTimeZone = null; 068 private TimeZone originalTimeZone = null; 069 private Locale originalLocale = null; 070 071 public static void main(String[] args) { 072 junit.textui.TestRunner.run(suite()); 073 } 074 075 public static TestSuite suite() { 076 return new TestSuite(TestMutableInterval_Constructors.class); 077 } 078 079 public TestMutableInterval_Constructors(String name) { 080 super(name); 081 } 082 083 protected void setUp() throws Exception { 084 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW); 085 originalDateTimeZone = DateTimeZone.getDefault(); 086 originalTimeZone = TimeZone.getDefault(); 087 originalLocale = Locale.getDefault(); 088 DateTimeZone.setDefault(PARIS); 089 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 090 Locale.setDefault(Locale.UK); 091 } 092 093 protected void tearDown() throws Exception { 094 DateTimeUtils.setCurrentMillisSystem(); 095 DateTimeZone.setDefault(originalDateTimeZone); 096 TimeZone.setDefault(originalTimeZone); 097 Locale.setDefault(originalLocale); 098 originalDateTimeZone = null; 099 originalTimeZone = null; 100 originalLocale = null; 101 } 102 103 //----------------------------------------------------------------------- 104 public void testTest() { 105 assertEquals("2002-06-09T00:00:00.000Z", new Instant(TEST_TIME_NOW).toString()); 106 assertEquals("2002-04-05T12:24:00.000Z", new Instant(TEST_TIME1).toString()); 107 assertEquals("2003-05-06T14:28:00.000Z", new Instant(TEST_TIME2).toString()); 108 } 109 110 //----------------------------------------------------------------------- 111 public void testParse_noFormatter() throws Throwable { 112 DateTime start = new DateTime(2010, 6, 30, 12, 30, ISOChronology.getInstance(PARIS)); 113 DateTime end = new DateTime(2010, 7, 1, 14, 30, ISOChronology.getInstance(PARIS)); 114 assertEquals(new MutableInterval(start, end), MutableInterval.parse("2010-06-30T12:30/2010-07-01T14:30")); 115 assertEquals(new MutableInterval(start, end), MutableInterval.parse("2010-06-30T12:30/P1DT2H")); 116 assertEquals(new MutableInterval(start, end), MutableInterval.parse("P1DT2H/2010-07-01T14:30")); 117 } 118 119 //----------------------------------------------------------------------- 120 public void testConstructor() throws Throwable { 121 MutableInterval test = new MutableInterval(); 122 assertEquals(0L, test.getStartMillis()); 123 assertEquals(0L, test.getEndMillis()); 124 } 125 126 //----------------------------------------------------------------------- 127 public void testConstructor_long_long1() throws Throwable { 128 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 129 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 130 MutableInterval test = new MutableInterval(dt1.getMillis(), dt2.getMillis()); 131 assertEquals(dt1.getMillis(), test.getStartMillis()); 132 assertEquals(dt2.getMillis(), test.getEndMillis()); 133 assertEquals(ISOChronology.getInstance(), test.getChronology()); 134 } 135 136 public void testConstructor_long_long2() throws Throwable { 137 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 138 MutableInterval test = new MutableInterval(dt1.getMillis(), dt1.getMillis()); 139 assertEquals(dt1.getMillis(), test.getStartMillis()); 140 assertEquals(dt1.getMillis(), test.getEndMillis()); 141 assertEquals(ISOChronology.getInstance(), test.getChronology()); 142 } 143 144 public void testConstructor_long_long3() throws Throwable { 145 DateTime dt1 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 146 DateTime dt2 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 147 try { 148 new MutableInterval(dt1.getMillis(), dt2.getMillis()); 149 fail(); 150 } catch (IllegalArgumentException ex) {} 151 } 152 153 //----------------------------------------------------------------------- 154 public void testConstructor_long_long_Chronology1() throws Throwable { 155 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 156 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 157 MutableInterval test = new MutableInterval(dt1.getMillis(), dt2.getMillis(), GJChronology.getInstance()); 158 assertEquals(dt1.getMillis(), test.getStartMillis()); 159 assertEquals(dt2.getMillis(), test.getEndMillis()); 160 assertEquals(GJChronology.getInstance(), test.getChronology()); 161 } 162 163 public void testConstructor_long_long_Chronology2() throws Throwable { 164 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 165 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 166 MutableInterval test = new MutableInterval(dt1.getMillis(), dt2.getMillis(), null); 167 assertEquals(dt1.getMillis(), test.getStartMillis()); 168 assertEquals(dt2.getMillis(), test.getEndMillis()); 169 assertEquals(ISOChronology.getInstance(), test.getChronology()); 170 } 171 172 //----------------------------------------------------------------------- 173 public void testConstructor_RI_RI1() throws Throwable { 174 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 175 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 176 MutableInterval test = new MutableInterval(dt1, dt2); 177 assertEquals(dt1.getMillis(), test.getStartMillis()); 178 assertEquals(dt2.getMillis(), test.getEndMillis()); 179 } 180 181 public void testConstructor_RI_RI2() throws Throwable { 182 Instant dt1 = new Instant(new DateTime(2004, 6, 9, 0, 0, 0, 0)); 183 Instant dt2 = new Instant(new DateTime(2005, 7, 10, 1, 1, 1, 1)); 184 MutableInterval test = new MutableInterval(dt1, dt2); 185 assertEquals(dt1.getMillis(), test.getStartMillis()); 186 assertEquals(dt2.getMillis(), test.getEndMillis()); 187 } 188 189 public void testConstructor_RI_RI3() throws Throwable { 190 MutableInterval test = new MutableInterval((ReadableInstant) null, (ReadableInstant) null); 191 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 192 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 193 } 194 195 public void testConstructor_RI_RI4() throws Throwable { 196 DateTime dt1 = new DateTime(2000, 6, 9, 0, 0, 0, 0); 197 MutableInterval test = new MutableInterval(dt1, (ReadableInstant) null); 198 assertEquals(dt1.getMillis(), test.getStartMillis()); 199 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 200 } 201 202 public void testConstructor_RI_RI5() throws Throwable { 203 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 204 MutableInterval test = new MutableInterval((ReadableInstant) null, dt2); 205 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 206 assertEquals(dt2.getMillis(), test.getEndMillis()); 207 } 208 209 public void testConstructor_RI_RI6() throws Throwable { 210 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 211 MutableInterval test = new MutableInterval(dt1, dt1); 212 assertEquals(dt1.getMillis(), test.getStartMillis()); 213 assertEquals(dt1.getMillis(), test.getEndMillis()); 214 } 215 216 public void testConstructor_RI_RI7() throws Throwable { 217 DateTime dt1 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 218 DateTime dt2 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 219 try { 220 new MutableInterval(dt1, dt2); 221 fail(); 222 } catch (IllegalArgumentException ex) {} 223 } 224 225 public void testConstructor_RI_RI8() throws Throwable { 226 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0, GJChronology.getInstance()); 227 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 228 MutableInterval test = new MutableInterval(dt1, dt2); 229 assertEquals(dt1.getMillis(), test.getStartMillis()); 230 assertEquals(dt2.getMillis(), test.getEndMillis()); 231 assertEquals(GJChronology.getInstance(), test.getChronology()); 232 } 233 234 public void testConstructor_RI_RI9() throws Throwable { 235 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 236 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1, GJChronology.getInstance()); 237 MutableInterval test = new MutableInterval(dt1, dt2); 238 assertEquals(dt1.getMillis(), test.getStartMillis()); 239 assertEquals(dt2.getMillis(), test.getEndMillis()); 240 assertEquals(ISOChronology.getInstance(), test.getChronology()); 241 } 242 243 //----------------------------------------------------------------------- 244 public void testConstructor_RI_RP1() throws Throwable { 245 DateTime dt = new DateTime(TEST_TIME_NOW); 246 Period dur = new Period(0, 6, 0, 0, 1, 0, 0, 0); 247 long result = TEST_TIME_NOW; 248 result = ISOChronology.getInstance().months().add(result, 6); 249 result = ISOChronology.getInstance().hours().add(result, 1); 250 251 MutableInterval test = new MutableInterval(dt, dur); 252 assertEquals(dt.getMillis(), test.getStartMillis()); 253 assertEquals(result, test.getEndMillis()); 254 } 255 256 public void testConstructor_RI_RP2() throws Throwable { 257 Instant dt = new Instant(new DateTime(TEST_TIME_NOW)); 258 Period dur = new Period(0, 6, 0, 3, 1, 0, 0, 0); 259 long result = TEST_TIME_NOW; 260 result = ISOChronology.getInstanceUTC().months().add(result, 6); 261 result = ISOChronology.getInstanceUTC().days().add(result, 3); 262 result = ISOChronology.getInstanceUTC().hours().add(result, 1); 263 264 MutableInterval test = new MutableInterval(dt, dur); 265 assertEquals(dt.getMillis(), test.getStartMillis()); 266 assertEquals(result, test.getEndMillis()); 267 } 268 269 public void testConstructor_RI_RP3() throws Throwable { 270 DateTime dt = new DateTime(TEST_TIME_NOW, ISOChronology.getInstanceUTC()); 271 Period dur = new Period(0, 6, 0, 3, 1, 0, 0, 0, PeriodType.standard()); 272 long result = TEST_TIME_NOW; 273 result = ISOChronology.getInstanceUTC().months().add(result, 6); 274 result = ISOChronology.getInstanceUTC().days().add(result, 3); 275 result = ISOChronology.getInstanceUTC().hours().add(result, 1); 276 277 MutableInterval test = new MutableInterval(dt, dur); 278 assertEquals(dt.getMillis(), test.getStartMillis()); 279 assertEquals(result, test.getEndMillis()); 280 } 281 282 public void testConstructor_RI_RP4() throws Throwable { 283 DateTime dt = new DateTime(TEST_TIME_NOW); 284 Period dur = new Period(1 * DateTimeConstants.MILLIS_PER_HOUR + 23L); 285 long result = TEST_TIME_NOW; 286 result = ISOChronology.getInstance().hours().add(result, 1); 287 result = ISOChronology.getInstance().millis().add(result, 23); 288 289 MutableInterval test = new MutableInterval(dt, dur); 290 assertEquals(dt.getMillis(), test.getStartMillis()); 291 assertEquals(result, test.getEndMillis()); 292 } 293 294 public void testConstructor_RI_RP5() throws Throwable { 295 MutableInterval test = new MutableInterval((ReadableInstant) null, (ReadablePeriod) null); 296 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 297 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 298 } 299 300 public void testConstructor_RI_RP6() throws Throwable { 301 DateTime dt = new DateTime(TEST_TIME_NOW); 302 MutableInterval test = new MutableInterval(dt, (ReadablePeriod) null); 303 assertEquals(dt.getMillis(), test.getStartMillis()); 304 assertEquals(dt.getMillis(), test.getEndMillis()); 305 } 306 307 public void testConstructor_RI_RP7() throws Throwable { 308 Period dur = new Period(0, 6, 0, 0, 1, 0, 0, 0); 309 long result = TEST_TIME_NOW; 310 result = ISOChronology.getInstance().monthOfYear().add(result, 6); 311 result = ISOChronology.getInstance().hourOfDay().add(result, 1); 312 313 MutableInterval test = new MutableInterval((ReadableInstant) null, dur); 314 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 315 assertEquals(result, test.getEndMillis()); 316 } 317 318 public void testConstructor_RI_RP8() throws Throwable { 319 DateTime dt = new DateTime(TEST_TIME_NOW); 320 Period dur = new Period(0, 0, 0, 0, 0, 0, 0, -1); 321 try { 322 new MutableInterval(dt, dur); 323 fail(); 324 } catch (IllegalArgumentException ex) {} 325 } 326 327 //----------------------------------------------------------------------- 328 public void testConstructor_RP_RI1() throws Throwable { 329 DateTime dt = new DateTime(TEST_TIME_NOW); 330 Period dur = new Period(0, 6, 0, 0, 1, 0, 0, 0); 331 long result = TEST_TIME_NOW; 332 result = ISOChronology.getInstance().months().add(result, -6); 333 result = ISOChronology.getInstance().hours().add(result, -1); 334 335 MutableInterval test = new MutableInterval(dur, dt); 336 assertEquals(result, test.getStartMillis()); 337 assertEquals(dt.getMillis(), test.getEndMillis()); 338 } 339 340 public void testConstructor_RP_RI2() throws Throwable { 341 Instant dt = new Instant(new DateTime(TEST_TIME_NOW)); 342 Period dur = new Period(0, 6, 0, 3, 1, 0, 0, 0); 343 long result = TEST_TIME_NOW; 344 result = ISOChronology.getInstanceUTC().months().add(result, -6); 345 result = ISOChronology.getInstanceUTC().days().add(result, -3); 346 result = ISOChronology.getInstanceUTC().hours().add(result, -1); 347 348 MutableInterval test = new MutableInterval(dur, dt); 349 assertEquals(result, test.getStartMillis()); 350 assertEquals(dt.getMillis(), test.getEndMillis()); 351 } 352 353 public void testConstructor_RP_RI3() throws Throwable { 354 DateTime dt = new DateTime(TEST_TIME_NOW, ISOChronology.getInstanceUTC()); 355 Period dur = new Period(0, 6, 0, 3, 1, 0, 0, 0, PeriodType.standard()); 356 long result = TEST_TIME_NOW; 357 result = ISOChronology.getInstanceUTC().months().add(result, -6); 358 result = ISOChronology.getInstanceUTC().days().add(result, -3); 359 result = ISOChronology.getInstanceUTC().hours().add(result, -1); 360 361 MutableInterval test = new MutableInterval(dur, dt); 362 assertEquals(result, test.getStartMillis()); 363 assertEquals(dt.getMillis(), test.getEndMillis()); 364 } 365 366 public void testConstructor_RP_RI4() throws Throwable { 367 DateTime dt = new DateTime(TEST_TIME_NOW); 368 Period dur = new Period(1 * DateTimeConstants.MILLIS_PER_HOUR + 23L); 369 long result = TEST_TIME_NOW; 370 result = ISOChronology.getInstance().hours().add(result, -1); 371 result = ISOChronology.getInstance().millis().add(result, -23); 372 373 MutableInterval test = new MutableInterval(dur, dt); 374 assertEquals(result, test.getStartMillis()); 375 assertEquals(dt.getMillis(), test.getEndMillis()); 376 } 377 378 public void testConstructor_RP_RI5() throws Throwable { 379 MutableInterval test = new MutableInterval((ReadablePeriod) null, (ReadableInstant) null); 380 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 381 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 382 } 383 384 public void testConstructor_RP_RI6() throws Throwable { 385 DateTime dt = new DateTime(TEST_TIME_NOW); 386 MutableInterval test = new MutableInterval((ReadablePeriod) null, dt); 387 assertEquals(dt.getMillis(), test.getStartMillis()); 388 assertEquals(dt.getMillis(), test.getEndMillis()); 389 } 390 391 public void testConstructor_RP_RI7() throws Throwable { 392 Period dur = new Period(0, 6, 0, 0, 1, 0, 0, 0); 393 long result = TEST_TIME_NOW; 394 result = ISOChronology.getInstance().monthOfYear().add(result, -6); 395 result = ISOChronology.getInstance().hourOfDay().add(result, -1); 396 397 MutableInterval test = new MutableInterval(dur, (ReadableInstant) null); 398 assertEquals(result, test.getStartMillis()); 399 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 400 } 401 402 public void testConstructor_RP_RI8() throws Throwable { 403 DateTime dt = new DateTime(TEST_TIME_NOW); 404 Period dur = new Period(0, 0, 0, 0, 0, 0, 0, -1); 405 try { 406 new MutableInterval(dur, dt); 407 fail(); 408 } catch (IllegalArgumentException ex) {} 409 } 410 411 //----------------------------------------------------------------------- 412 public void testConstructor_RI_RD1() throws Throwable { 413 long result = TEST_TIME_NOW; 414 result = ISOChronology.getInstance().months().add(result, 6); 415 result = ISOChronology.getInstance().hours().add(result, 1); 416 417 DateTime dt = new DateTime(TEST_TIME_NOW); 418 Duration dur = new Duration(result - TEST_TIME_NOW); 419 420 MutableInterval test = new MutableInterval(dt, dur); 421 assertEquals(dt.getMillis(), test.getStartMillis()); 422 assertEquals(result, test.getEndMillis()); 423 } 424 425 public void testConstructor_RI_RD2() throws Throwable { 426 MutableInterval test = new MutableInterval((ReadableInstant) null, (ReadableDuration) null); 427 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 428 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 429 } 430 431 public void testConstructor_RI_RD3() throws Throwable { 432 DateTime dt = new DateTime(TEST_TIME_NOW); 433 MutableInterval test = new MutableInterval(dt, (ReadableDuration) null); 434 assertEquals(dt.getMillis(), test.getStartMillis()); 435 assertEquals(dt.getMillis(), test.getEndMillis()); 436 } 437 438 public void testConstructor_RI_RD4() throws Throwable { 439 long result = TEST_TIME_NOW; 440 result = ISOChronology.getInstance().monthOfYear().add(result, 6); 441 result = ISOChronology.getInstance().hourOfDay().add(result, 1); 442 443 Duration dur = new Duration(result - TEST_TIME_NOW); 444 445 MutableInterval test = new MutableInterval((ReadableInstant) null, dur); 446 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 447 assertEquals(result, test.getEndMillis()); 448 } 449 450 public void testConstructor_RI_RD5() throws Throwable { 451 DateTime dt = new DateTime(TEST_TIME_NOW); 452 Duration dur = new Duration(-1); 453 try { 454 new MutableInterval(dt, dur); 455 fail(); 456 } catch (IllegalArgumentException ex) {} 457 } 458 459 //----------------------------------------------------------------------- 460 public void testConstructor_RD_RI1() throws Throwable { 461 long result = TEST_TIME_NOW; 462 result = ISOChronology.getInstance().months().add(result, -6); 463 result = ISOChronology.getInstance().hours().add(result, -1); 464 465 DateTime dt = new DateTime(TEST_TIME_NOW); 466 Duration dur = new Duration(TEST_TIME_NOW - result); 467 468 MutableInterval test = new MutableInterval(dur, dt); 469 assertEquals(result, test.getStartMillis()); 470 assertEquals(dt.getMillis(), test.getEndMillis()); 471 } 472 473 public void testConstructor_RD_RI2() throws Throwable { 474 MutableInterval test = new MutableInterval((ReadableDuration) null, (ReadableInstant) null); 475 assertEquals(TEST_TIME_NOW, test.getStartMillis()); 476 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 477 } 478 479 public void testConstructor_RD_RI3() throws Throwable { 480 DateTime dt = new DateTime(TEST_TIME_NOW); 481 MutableInterval test = new MutableInterval((ReadableDuration) null, dt); 482 assertEquals(dt.getMillis(), test.getStartMillis()); 483 assertEquals(dt.getMillis(), test.getEndMillis()); 484 } 485 486 public void testConstructor_RD_RI4() throws Throwable { 487 long result = TEST_TIME_NOW; 488 result = ISOChronology.getInstance().monthOfYear().add(result, -6); 489 result = ISOChronology.getInstance().hourOfDay().add(result, -1); 490 491 Duration dur = new Duration(TEST_TIME_NOW - result); 492 493 MutableInterval test = new MutableInterval(dur, (ReadableInstant) null); 494 assertEquals(result, test.getStartMillis()); 495 assertEquals(TEST_TIME_NOW, test.getEndMillis()); 496 } 497 498 public void testConstructor_RD_RI5() throws Throwable { 499 DateTime dt = new DateTime(TEST_TIME_NOW); 500 Duration dur = new Duration(-1); 501 try { 502 new MutableInterval(dur, dt); 503 fail(); 504 } catch (IllegalArgumentException ex) {} 505 } 506 507 //----------------------------------------------------------------------- 508 public void testConstructor_Object1() throws Throwable { 509 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 510 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 511 MutableInterval test = new MutableInterval(dt1.toString() + '/' + dt2.toString()); 512 assertEquals(dt1.getMillis(), test.getStartMillis()); 513 assertEquals(dt2.getMillis(), test.getEndMillis()); 514 } 515 516 public void testConstructor_Object2() throws Throwable { 517 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 518 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 519 MutableInterval base = new MutableInterval(dt1, dt2); 520 521 MutableInterval test = new MutableInterval(base); 522 assertEquals(dt1.getMillis(), test.getStartMillis()); 523 assertEquals(dt2.getMillis(), test.getEndMillis()); 524 } 525 526 public void testConstructor_Object3() throws Throwable { 527 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 528 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 529 Interval base = new Interval(dt1, dt2); 530 531 MutableInterval test = new MutableInterval(base); 532 assertEquals(dt1.getMillis(), test.getStartMillis()); 533 assertEquals(dt2.getMillis(), test.getEndMillis()); 534 } 535 536 public void testConstructor_Object4() throws Throwable { 537 MockInterval base = new MockInterval(); 538 MutableInterval test = new MutableInterval(base); 539 assertEquals(base.getStartMillis(), test.getStartMillis()); 540 assertEquals(base.getEndMillis(), test.getEndMillis()); 541 } 542 543 public void testConstructor_Object5() throws Throwable { 544 IntervalConverter oldConv = ConverterManager.getInstance().getIntervalConverter(""); 545 IntervalConverter conv = new IntervalConverter() { 546 public boolean isReadableInterval(Object object, Chronology chrono) { 547 return false; 548 } 549 public void setInto(ReadWritableInterval interval, Object object, Chronology chrono) { 550 interval.setChronology(chrono); 551 interval.setInterval(1234L, 5678L); 552 } 553 public Class<?> getSupportedType() { 554 return String.class; 555 } 556 }; 557 try { 558 ConverterManager.getInstance().addIntervalConverter(conv); 559 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 560 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 561 MutableInterval test = new MutableInterval(dt1.toString() + '/' + dt2.toString()); 562 assertEquals(1234L, test.getStartMillis()); 563 assertEquals(5678L, test.getEndMillis()); 564 } finally { 565 ConverterManager.getInstance().addIntervalConverter(oldConv); 566 } 567 } 568 569 public void testConstructor_Object6() throws Throwable { 570 IntervalConverter oldConv = ConverterManager.getInstance().getIntervalConverter(new MutableInterval(0L, 0L)); 571 IntervalConverter conv = new IntervalConverter() { 572 public boolean isReadableInterval(Object object, Chronology chrono) { 573 return false; 574 } 575 public void setInto(ReadWritableInterval interval, Object object, Chronology chrono) { 576 interval.setChronology(chrono); 577 interval.setInterval(1234L, 5678L); 578 } 579 public Class<?> getSupportedType() { 580 return ReadableInterval.class; 581 } 582 }; 583 try { 584 ConverterManager.getInstance().addIntervalConverter(conv); 585 Interval base = new Interval(-1000L, 1000L); 586 MutableInterval test = new MutableInterval(base); 587 assertEquals(1234L, test.getStartMillis()); 588 assertEquals(5678L, test.getEndMillis()); 589 } finally { 590 ConverterManager.getInstance().addIntervalConverter(oldConv); 591 } 592 } 593 594 class MockInterval implements ReadableInterval { 595 public Chronology getChronology() { 596 return ISOChronology.getInstance(); 597 } 598 public long getStartMillis() { 599 return 1234L; 600 } 601 public DateTime getStart() { 602 return new DateTime(1234L); 603 } 604 public long getEndMillis() { 605 return 5678L; 606 } 607 public DateTime getEnd() { 608 return new DateTime(5678L); 609 } 610 public long toDurationMillis() { 611 return (5678L - 1234L); 612 } 613 public Duration toDuration() { 614 return new Duration(5678L - 1234L); 615 } 616 public boolean contains(long millisInstant) { 617 return false; 618 } 619 public boolean containsNow() { 620 return false; 621 } 622 public boolean contains(ReadableInstant instant) { 623 return false; 624 } 625 public boolean contains(ReadableInterval interval) { 626 return false; 627 } 628 public boolean overlaps(ReadableInterval interval) { 629 return false; 630 } 631 public boolean isBefore(ReadableInstant instant) { 632 return false; 633 } 634 public boolean isBefore(ReadableInterval interval) { 635 return false; 636 } 637 public boolean isAfter(ReadableInstant instant) { 638 return false; 639 } 640 public boolean isAfter(ReadableInterval interval) { 641 return false; 642 } 643 public Interval toInterval() { 644 return null; 645 } 646 public MutableInterval toMutableInterval() { 647 return null; 648 } 649 public Period toPeriod() { 650 return null; 651 } 652 public Period toPeriod(PeriodType type) { 653 return null; 654 } 655 } 656 657 //----------------------------------------------------------------------- 658 public void testConstructor_Object_Chronology1() throws Throwable { 659 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 660 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 661 Interval base = new Interval(dt1, dt2); 662 663 MutableInterval test = new MutableInterval(base, BuddhistChronology.getInstance()); 664 assertEquals(dt1.getMillis(), test.getStartMillis()); 665 assertEquals(dt2.getMillis(), test.getEndMillis()); 666 assertEquals(BuddhistChronology.getInstance(), test.getChronology()); 667 } 668 669 public void testConstructor_Object_Chronology2() throws Throwable { 670 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 671 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 672 Interval base = new Interval(dt1, dt2); 673 674 MutableInterval test = new MutableInterval(base, null); 675 assertEquals(dt1.getMillis(), test.getStartMillis()); 676 assertEquals(dt2.getMillis(), test.getEndMillis()); 677 assertEquals(ISOChronology.getInstance(), test.getChronology()); 678 } 679 680 }