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.CopticChronology; 025 import org.joda.time.chrono.ISOChronology; 026 027 /** 028 * This class is a JUnit test for MutableDuration. 029 * 030 * @author Stephen Colebourne 031 */ 032 public class TestMutablePeriod_Constructors extends TestCase { 033 // Test in 2002/03 as time zones are more well known 034 // (before the late 90's they were all over the place) 035 036 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 037 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London"); 038 039 long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 040 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 041 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 042 366 + 365; 043 long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 044 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 045 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 046 366 + 365 + 365; 047 048 // 2002-06-09 049 private long TEST_TIME_NOW = 050 (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY; 051 052 // 2002-04-05 053 private long TEST_TIME1 = 054 (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY 055 + 12L * DateTimeConstants.MILLIS_PER_HOUR 056 + 24L * DateTimeConstants.MILLIS_PER_MINUTE; 057 058 // 2003-05-06 059 private long TEST_TIME2 = 060 (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY 061 + 14L * DateTimeConstants.MILLIS_PER_HOUR 062 + 28L * DateTimeConstants.MILLIS_PER_MINUTE; 063 064 private DateTimeZone originalDateTimeZone = null; 065 private TimeZone originalTimeZone = null; 066 private Locale originalLocale = null; 067 068 public static void main(String[] args) { 069 junit.textui.TestRunner.run(suite()); 070 } 071 072 public static TestSuite suite() { 073 return new TestSuite(TestMutablePeriod_Constructors.class); 074 } 075 076 public TestMutablePeriod_Constructors(String name) { 077 super(name); 078 } 079 080 protected void setUp() throws Exception { 081 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW); 082 originalDateTimeZone = DateTimeZone.getDefault(); 083 originalTimeZone = TimeZone.getDefault(); 084 originalLocale = Locale.getDefault(); 085 DateTimeZone.setDefault(LONDON); 086 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 087 Locale.setDefault(Locale.UK); 088 } 089 090 protected void tearDown() throws Exception { 091 DateTimeUtils.setCurrentMillisSystem(); 092 DateTimeZone.setDefault(originalDateTimeZone); 093 TimeZone.setDefault(originalTimeZone); 094 Locale.setDefault(originalLocale); 095 originalDateTimeZone = null; 096 originalTimeZone = null; 097 originalLocale = null; 098 } 099 100 //----------------------------------------------------------------------- 101 public void testParse_noFormatter() throws Throwable { 102 assertEquals(new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 890), MutablePeriod.parse("P1Y2M3W4DT5H6M7.890S")); 103 } 104 105 //----------------------------------------------------------------------- 106 /** 107 * Test constructor () 108 */ 109 public void testConstructor1() throws Throwable { 110 MutablePeriod test = new MutablePeriod(); 111 assertEquals(PeriodType.standard(), test.getPeriodType()); 112 assertEquals(0, test.getYears()); 113 assertEquals(0, test.getMonths()); 114 assertEquals(0, test.getWeeks()); 115 assertEquals(0, test.getDays()); 116 assertEquals(0, test.getHours()); 117 assertEquals(0, test.getMinutes()); 118 assertEquals(0, test.getSeconds()); 119 assertEquals(0, test.getMillis()); 120 } 121 122 //----------------------------------------------------------------------- 123 /** 124 * Test constructor (PeriodType) 125 */ 126 public void testConstructor_PeriodType1() throws Throwable { 127 MutablePeriod test = new MutablePeriod(PeriodType.yearMonthDayTime()); 128 assertEquals(PeriodType.yearMonthDayTime(), test.getPeriodType()); 129 assertEquals(0, test.getYears()); 130 assertEquals(0, test.getMonths()); 131 assertEquals(0, test.getWeeks()); 132 assertEquals(0, test.getDays()); 133 assertEquals(0, test.getHours()); 134 assertEquals(0, test.getMinutes()); 135 assertEquals(0, test.getSeconds()); 136 assertEquals(0, test.getMillis()); 137 } 138 139 public void testConstructor_PeriodType2() throws Throwable { 140 MutablePeriod test = new MutablePeriod((PeriodType) null); 141 assertEquals(PeriodType.standard(), test.getPeriodType()); 142 assertEquals(0, test.getYears()); 143 assertEquals(0, test.getMonths()); 144 assertEquals(0, test.getWeeks()); 145 assertEquals(0, test.getDays()); 146 assertEquals(0, test.getHours()); 147 assertEquals(0, test.getMinutes()); 148 assertEquals(0, test.getSeconds()); 149 assertEquals(0, test.getMillis()); 150 } 151 152 //----------------------------------------------------------------------- 153 public void testConstructor_long1() throws Throwable { 154 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 155 5 * DateTimeConstants.MILLIS_PER_HOUR + 156 6 * DateTimeConstants.MILLIS_PER_MINUTE + 157 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 158 MutablePeriod test = new MutablePeriod(length); 159 assertEquals(PeriodType.standard(), test.getPeriodType()); 160 assertEquals(0, test.getYears()); 161 assertEquals(0, test.getMonths()); 162 assertEquals(0, test.getWeeks()); 163 assertEquals(0, test.getDays()); 164 assertEquals((4 * 24) + 5, test.getHours()); 165 assertEquals(6, test.getMinutes()); 166 assertEquals(7, test.getSeconds()); 167 assertEquals(8, test.getMillis()); 168 } 169 170 public void testConstructor_long2() throws Throwable { 171 long length = 172 5 * DateTimeConstants.MILLIS_PER_HOUR + 173 6 * DateTimeConstants.MILLIS_PER_MINUTE + 174 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 175 MutablePeriod test = new MutablePeriod(length); 176 assertEquals(PeriodType.standard(), test.getPeriodType()); 177 assertEquals(0, test.getYears()); 178 assertEquals(0, test.getMonths()); 179 assertEquals(0, test.getWeeks()); 180 assertEquals(0, test.getDays()); 181 assertEquals(5, test.getHours()); 182 assertEquals(6, test.getMinutes()); 183 assertEquals(7, test.getSeconds()); 184 assertEquals(8, test.getMillis()); 185 } 186 187 public void testConstructor_long3() throws Throwable { 188 long length = 189 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY + 190 5L * DateTimeConstants.MILLIS_PER_HOUR + 191 6L * DateTimeConstants.MILLIS_PER_MINUTE + 192 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L; 193 MutablePeriod test = new MutablePeriod(length); 194 assertEquals(PeriodType.standard(), test.getPeriodType()); 195 // only time fields are precise in AllType 196 assertEquals(0, test.getYears()); // (4 + (3 * 7) + (2 * 30) + 365) == 450 197 assertEquals(0, test.getMonths()); 198 assertEquals(0, test.getWeeks()); 199 assertEquals(0, test.getDays()); 200 assertEquals((450 * 24) + 5, test.getHours()); 201 assertEquals(6, test.getMinutes()); 202 assertEquals(7, test.getSeconds()); 203 assertEquals(8, test.getMillis()); 204 } 205 206 //----------------------------------------------------------------------- 207 public void testConstructor_long_PeriodType1() throws Throwable { 208 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 209 5 * DateTimeConstants.MILLIS_PER_HOUR + 210 6 * DateTimeConstants.MILLIS_PER_MINUTE + 211 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 212 MutablePeriod test = new MutablePeriod(length, (PeriodType) null); 213 assertEquals(PeriodType.standard(), test.getPeriodType()); 214 assertEquals(0, test.getYears()); 215 assertEquals(0, test.getMonths()); 216 assertEquals(0, test.getWeeks()); 217 assertEquals(0, test.getDays()); 218 assertEquals((4 * 24) + 5, test.getHours()); 219 assertEquals(6, test.getMinutes()); 220 assertEquals(7, test.getSeconds()); 221 assertEquals(8, test.getMillis()); 222 } 223 224 public void testConstructor_long_PeriodType2() throws Throwable { 225 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 226 5 * DateTimeConstants.MILLIS_PER_HOUR + 227 6 * DateTimeConstants.MILLIS_PER_MINUTE + 228 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 229 MutablePeriod test = new MutablePeriod(length, PeriodType.millis()); 230 assertEquals(PeriodType.millis(), test.getPeriodType()); 231 assertEquals(0, test.getYears()); 232 assertEquals(0, test.getMonths()); 233 assertEquals(0, test.getWeeks()); 234 assertEquals(0, test.getDays()); 235 assertEquals(0, test.getHours()); 236 assertEquals(0, test.getMinutes()); 237 assertEquals(0, test.getSeconds()); 238 assertEquals(length, test.getMillis()); 239 } 240 241 public void testConstructor_long_PeriodType3() throws Throwable { 242 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 243 5 * DateTimeConstants.MILLIS_PER_HOUR + 244 6 * DateTimeConstants.MILLIS_PER_MINUTE + 245 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 246 MutablePeriod test = new MutablePeriod(length, PeriodType.standard()); 247 assertEquals(PeriodType.standard(), test.getPeriodType()); 248 assertEquals(0, test.getYears()); 249 assertEquals(0, test.getMonths()); 250 assertEquals(0, test.getWeeks()); 251 assertEquals(0, test.getDays()); 252 assertEquals((4 * 24) + 5, test.getHours()); 253 assertEquals(6, test.getMinutes()); 254 assertEquals(7, test.getSeconds()); 255 assertEquals(8, test.getMillis()); 256 } 257 258 public void testConstructor_long_PeriodType4() throws Throwable { 259 long length = 260 5 * DateTimeConstants.MILLIS_PER_HOUR + 261 6 * DateTimeConstants.MILLIS_PER_MINUTE + 262 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 263 MutablePeriod test = new MutablePeriod(length, PeriodType.standard().withMillisRemoved()); 264 assertEquals(PeriodType.standard().withMillisRemoved(), test.getPeriodType()); 265 assertEquals(0, test.getYears()); 266 assertEquals(0, test.getMonths()); 267 assertEquals(0, test.getWeeks()); 268 assertEquals(0, test.getDays()); 269 assertEquals(5, test.getHours()); 270 assertEquals(6, test.getMinutes()); 271 assertEquals(7, test.getSeconds()); 272 assertEquals(0, test.getMillis()); 273 } 274 275 //----------------------------------------------------------------------- 276 public void testConstructor_long_Chronology1() throws Throwable { 277 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 278 5 * DateTimeConstants.MILLIS_PER_HOUR + 279 6 * DateTimeConstants.MILLIS_PER_MINUTE + 280 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 281 MutablePeriod test = new MutablePeriod(length, ISOChronology.getInstance()); 282 assertEquals(PeriodType.standard(), test.getPeriodType()); 283 assertEquals(0, test.getYears()); 284 assertEquals(0, test.getMonths()); 285 assertEquals(0, test.getWeeks()); 286 assertEquals(0, test.getDays()); 287 assertEquals((4 * 24) + 5, test.getHours()); 288 assertEquals(6, test.getMinutes()); 289 assertEquals(7, test.getSeconds()); 290 assertEquals(8, test.getMillis()); 291 } 292 293 public void testConstructor_long_Chronology2() throws Throwable { 294 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 295 5 * DateTimeConstants.MILLIS_PER_HOUR + 296 6 * DateTimeConstants.MILLIS_PER_MINUTE + 297 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 298 MutablePeriod test = new MutablePeriod(length, ISOChronology.getInstanceUTC()); 299 assertEquals(PeriodType.standard(), test.getPeriodType()); 300 assertEquals(0, test.getYears()); 301 assertEquals(0, test.getMonths()); 302 assertEquals(0, test.getWeeks()); 303 assertEquals(4, test.getDays()); 304 assertEquals(5, test.getHours()); 305 assertEquals(6, test.getMinutes()); 306 assertEquals(7, test.getSeconds()); 307 assertEquals(8, test.getMillis()); 308 } 309 310 public void testConstructor_long_Chronology3() throws Throwable { 311 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 312 5 * DateTimeConstants.MILLIS_PER_HOUR + 313 6 * DateTimeConstants.MILLIS_PER_MINUTE + 314 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 315 MutablePeriod test = new MutablePeriod(length, (Chronology) null); 316 assertEquals(PeriodType.standard(), test.getPeriodType()); 317 assertEquals(0, test.getYears()); 318 assertEquals(0, test.getMonths()); 319 assertEquals(0, test.getWeeks()); 320 assertEquals(0, test.getDays()); 321 assertEquals((4 * 24) + 5, test.getHours()); 322 assertEquals(6, test.getMinutes()); 323 assertEquals(7, test.getSeconds()); 324 assertEquals(8, test.getMillis()); 325 } 326 327 //----------------------------------------------------------------------- 328 public void testConstructor_long_PeriodType_Chronology1() throws Throwable { 329 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 330 5 * DateTimeConstants.MILLIS_PER_HOUR + 331 6 * DateTimeConstants.MILLIS_PER_MINUTE + 332 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 333 MutablePeriod test = new MutablePeriod(length, PeriodType.time().withMillisRemoved(), ISOChronology.getInstance()); 334 assertEquals(PeriodType.time().withMillisRemoved(), test.getPeriodType()); 335 assertEquals(0, test.getYears()); 336 assertEquals(0, test.getMonths()); 337 assertEquals(0, test.getWeeks()); 338 assertEquals(0, test.getDays()); 339 assertEquals((4 * 24) + 5, test.getHours()); 340 assertEquals(6, test.getMinutes()); 341 assertEquals(7, test.getSeconds()); 342 assertEquals(0, test.getMillis()); 343 } 344 345 public void testConstructor_long_PeriodType_Chronology2() throws Throwable { 346 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 347 5 * DateTimeConstants.MILLIS_PER_HOUR + 348 6 * DateTimeConstants.MILLIS_PER_MINUTE + 349 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 350 MutablePeriod test = new MutablePeriod(length, PeriodType.standard(), ISOChronology.getInstanceUTC()); 351 assertEquals(PeriodType.standard(), test.getPeriodType()); 352 assertEquals(0, test.getYears()); 353 assertEquals(0, test.getMonths()); 354 assertEquals(0, test.getWeeks()); 355 assertEquals(4, test.getDays()); 356 assertEquals(5, test.getHours()); 357 assertEquals(6, test.getMinutes()); 358 assertEquals(7, test.getSeconds()); 359 assertEquals(8, test.getMillis()); 360 } 361 362 public void testConstructor_long_PeriodType_Chronology3() throws Throwable { 363 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 364 5 * DateTimeConstants.MILLIS_PER_HOUR + 365 6 * DateTimeConstants.MILLIS_PER_MINUTE + 366 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 367 MutablePeriod test = new MutablePeriod(length, PeriodType.standard(), (Chronology) null); 368 assertEquals(PeriodType.standard(), test.getPeriodType()); 369 assertEquals(0, test.getYears()); 370 assertEquals(0, test.getMonths()); 371 assertEquals(0, test.getWeeks()); 372 assertEquals(0, test.getDays()); 373 assertEquals((4 * 24) + 5, test.getHours()); 374 assertEquals(6, test.getMinutes()); 375 assertEquals(7, test.getSeconds()); 376 assertEquals(8, test.getMillis()); 377 } 378 379 public void testConstructor_long_PeriodType_Chronology4() throws Throwable { 380 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 381 5 * DateTimeConstants.MILLIS_PER_HOUR + 382 6 * DateTimeConstants.MILLIS_PER_MINUTE + 383 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 384 MutablePeriod test = new MutablePeriod(length, (PeriodType) null, (Chronology) null); 385 assertEquals(PeriodType.standard(), test.getPeriodType()); 386 assertEquals(0, test.getYears()); 387 assertEquals(0, test.getMonths()); 388 assertEquals(0, test.getWeeks()); 389 assertEquals(0, test.getDays()); 390 assertEquals((4 * 24) + 5, test.getHours()); 391 assertEquals(6, test.getMinutes()); 392 assertEquals(7, test.getSeconds()); 393 assertEquals(8, test.getMillis()); 394 } 395 396 //----------------------------------------------------------------------- 397 /** 398 * Test constructor (4ints) 399 */ 400 public void testConstructor_4int1() throws Throwable { 401 MutablePeriod test = new MutablePeriod(5, 6, 7, 8); 402 assertEquals(PeriodType.standard(), test.getPeriodType()); 403 assertEquals(0, test.getYears()); 404 assertEquals(0, test.getMonths()); 405 assertEquals(0, test.getWeeks()); 406 assertEquals(0, test.getDays()); 407 assertEquals(5, test.getHours()); 408 assertEquals(6, test.getMinutes()); 409 assertEquals(7, test.getSeconds()); 410 assertEquals(8, test.getMillis()); 411 } 412 413 //----------------------------------------------------------------------- 414 /** 415 * Test constructor (8ints) 416 */ 417 public void testConstructor_8int1() throws Throwable { 418 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8); 419 assertEquals(PeriodType.standard(), test.getPeriodType()); 420 assertEquals(1, test.getYears()); 421 assertEquals(2, test.getMonths()); 422 assertEquals(3, test.getWeeks()); 423 assertEquals(4, test.getDays()); 424 assertEquals(5, test.getHours()); 425 assertEquals(6, test.getMinutes()); 426 assertEquals(7, test.getSeconds()); 427 assertEquals(8, test.getMillis()); 428 } 429 430 //----------------------------------------------------------------------- 431 /** 432 * Test constructor (8ints) 433 */ 434 public void testConstructor_8int__PeriodType1() throws Throwable { 435 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8, null); 436 assertEquals(PeriodType.standard(), test.getPeriodType()); 437 assertEquals(1, test.getYears()); 438 assertEquals(2, test.getMonths()); 439 assertEquals(3, test.getWeeks()); 440 assertEquals(4, test.getDays()); 441 assertEquals(5, test.getHours()); 442 assertEquals(6, test.getMinutes()); 443 assertEquals(7, test.getSeconds()); 444 assertEquals(8, test.getMillis()); 445 } 446 447 public void testConstructor_8int__PeriodType2() throws Throwable { 448 MutablePeriod test = new MutablePeriod(0, 0, 0, 0, 5, 6, 7, 8, PeriodType.dayTime()); 449 assertEquals(PeriodType.dayTime(), test.getPeriodType()); 450 assertEquals(0, test.getYears()); 451 assertEquals(0, test.getMonths()); 452 assertEquals(0, test.getWeeks()); 453 assertEquals(0, test.getDays()); 454 assertEquals(5, test.getHours()); 455 assertEquals(6, test.getMinutes()); 456 assertEquals(7, test.getSeconds()); 457 assertEquals(8, test.getMillis()); 458 } 459 460 public void testConstructor_8int__PeriodType3() throws Throwable { 461 try { 462 new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8, PeriodType.dayTime()); 463 fail(); 464 } catch (IllegalArgumentException ex) {} 465 } 466 467 //----------------------------------------------------------------------- 468 public void testConstructor_long_long1() throws Throwable { 469 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 470 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 471 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis()); 472 assertEquals(PeriodType.standard(), test.getPeriodType()); 473 assertEquals(1, test.getYears()); 474 assertEquals(1, test.getMonths()); 475 assertEquals(0, test.getWeeks()); 476 assertEquals(1, test.getDays()); 477 assertEquals(1, test.getHours()); 478 assertEquals(1, test.getMinutes()); 479 assertEquals(1, test.getSeconds()); 480 assertEquals(1, test.getMillis()); 481 } 482 483 public void testConstructor_long_long2() throws Throwable { 484 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 485 DateTime dt2 = new DateTime(2005, 7, 17, 1, 1, 1, 1); 486 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis()); 487 assertEquals(PeriodType.standard(), test.getPeriodType()); 488 assertEquals(1, test.getYears()); 489 assertEquals(1, test.getMonths()); 490 assertEquals(1, test.getWeeks()); 491 assertEquals(1, test.getDays()); 492 assertEquals(1, test.getHours()); 493 assertEquals(1, test.getMinutes()); 494 assertEquals(1, test.getSeconds()); 495 assertEquals(1, test.getMillis()); 496 } 497 498 //----------------------------------------------------------------------- 499 public void testConstructor_long_long_PeriodType1() throws Throwable { 500 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 501 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 502 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis(), (PeriodType) null); 503 assertEquals(PeriodType.standard(), test.getPeriodType()); 504 assertEquals(1, test.getYears()); 505 assertEquals(1, test.getMonths()); 506 assertEquals(0, test.getWeeks()); 507 assertEquals(1, test.getDays()); 508 assertEquals(1, test.getHours()); 509 assertEquals(1, test.getMinutes()); 510 assertEquals(1, test.getSeconds()); 511 assertEquals(1, test.getMillis()); 512 } 513 514 public void testConstructor_long_long_PeriodType2() throws Throwable { 515 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 516 DateTime dt2 = new DateTime(2004, 7, 10, 1, 1, 1, 1); 517 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis(), PeriodType.dayTime()); 518 assertEquals(PeriodType.dayTime(), test.getPeriodType()); 519 assertEquals(0, test.getYears()); 520 assertEquals(0, test.getMonths()); 521 assertEquals(0, test.getWeeks()); 522 assertEquals(31, test.getDays()); 523 assertEquals(1, test.getHours()); 524 assertEquals(1, test.getMinutes()); 525 assertEquals(1, test.getSeconds()); 526 assertEquals(1, test.getMillis()); 527 } 528 529 public void testConstructor_long_long_PeriodType3() throws Throwable { 530 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 531 DateTime dt2 = new DateTime(2004, 6, 9, 1, 1, 1, 1); 532 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis(), PeriodType.standard().withMillisRemoved()); 533 assertEquals(PeriodType.standard().withMillisRemoved(), test.getPeriodType()); 534 assertEquals(0, test.getYears()); 535 assertEquals(0, test.getMonths()); 536 assertEquals(0, test.getWeeks()); 537 assertEquals(0, test.getDays()); 538 assertEquals(1, test.getHours()); 539 assertEquals(1, test.getMinutes()); 540 assertEquals(1, test.getSeconds()); 541 assertEquals(0, test.getMillis()); 542 } 543 544 //----------------------------------------------------------------------- 545 public void testConstructor_long_long_Chronology1() throws Throwable { 546 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0, CopticChronology.getInstance()); 547 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1, CopticChronology.getInstance()); 548 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis(), CopticChronology.getInstance()); 549 assertEquals(PeriodType.standard(), test.getPeriodType()); 550 assertEquals(1, test.getYears()); 551 assertEquals(1, test.getMonths()); 552 assertEquals(0, test.getWeeks()); 553 assertEquals(1, test.getDays()); 554 assertEquals(1, test.getHours()); 555 assertEquals(1, test.getMinutes()); 556 assertEquals(1, test.getSeconds()); 557 assertEquals(1, test.getMillis()); 558 } 559 560 public void testConstructor_long_long_Chronology2() throws Throwable { 561 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 562 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 563 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis(), (Chronology) null); 564 assertEquals(PeriodType.standard(), test.getPeriodType()); 565 assertEquals(1, test.getYears()); 566 assertEquals(1, test.getMonths()); 567 assertEquals(0, test.getWeeks()); 568 assertEquals(1, test.getDays()); 569 assertEquals(1, test.getHours()); 570 assertEquals(1, test.getMinutes()); 571 assertEquals(1, test.getSeconds()); 572 assertEquals(1, test.getMillis()); 573 } 574 575 //----------------------------------------------------------------------- 576 public void testConstructor_long_long_PeriodType_Chronology1() throws Throwable { 577 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0, CopticChronology.getInstance()); 578 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1, CopticChronology.getInstance()); 579 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis(), (PeriodType) null, CopticChronology.getInstance()); 580 assertEquals(PeriodType.standard(), test.getPeriodType()); 581 assertEquals(1, test.getYears()); 582 assertEquals(1, test.getMonths()); 583 assertEquals(0, test.getWeeks()); 584 assertEquals(1, test.getDays()); 585 assertEquals(1, test.getHours()); 586 assertEquals(1, test.getMinutes()); 587 assertEquals(1, test.getSeconds()); 588 assertEquals(1, test.getMillis()); 589 } 590 591 public void testConstructor_long_long_PeriodType_Chronology2() throws Throwable { 592 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 593 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 594 MutablePeriod test = new MutablePeriod(dt1.getMillis(), dt2.getMillis(), (PeriodType) null, null); 595 assertEquals(PeriodType.standard(), test.getPeriodType()); 596 assertEquals(1, test.getYears()); 597 assertEquals(1, test.getMonths()); 598 assertEquals(0, test.getWeeks()); 599 assertEquals(1, test.getDays()); 600 assertEquals(1, test.getHours()); 601 assertEquals(1, test.getMinutes()); 602 assertEquals(1, test.getSeconds()); 603 assertEquals(1, test.getMillis()); 604 } 605 606 //----------------------------------------------------------------------- 607 public void testConstructor_RI_RI1() throws Throwable { 608 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 609 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 610 MutablePeriod test = new MutablePeriod(dt1, dt2); 611 assertEquals(PeriodType.standard(), test.getPeriodType()); 612 assertEquals(1, test.getYears()); 613 assertEquals(1, test.getMonths()); 614 assertEquals(0, test.getWeeks()); 615 assertEquals(1, test.getDays()); 616 assertEquals(1, test.getHours()); 617 assertEquals(1, test.getMinutes()); 618 assertEquals(1, test.getSeconds()); 619 assertEquals(1, test.getMillis()); 620 } 621 622 public void testConstructor_RI_RI2() throws Throwable { 623 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 624 DateTime dt2 = new DateTime(2005, 7, 17, 1, 1, 1, 1); 625 MutablePeriod test = new MutablePeriod(dt1, dt2); 626 assertEquals(PeriodType.standard(), test.getPeriodType()); 627 assertEquals(1, test.getYears()); 628 assertEquals(1, test.getMonths()); 629 assertEquals(1, test.getWeeks()); 630 assertEquals(1, test.getDays()); 631 assertEquals(1, test.getHours()); 632 assertEquals(1, test.getMinutes()); 633 assertEquals(1, test.getSeconds()); 634 assertEquals(1, test.getMillis()); 635 } 636 637 public void testConstructor_RI_RI3() throws Throwable { 638 DateTime dt1 = null; // 2002-06-09T01:00+01:00 639 DateTime dt2 = new DateTime(2005, 7, 17, 1, 1, 1, 1); 640 MutablePeriod test = new MutablePeriod(dt1, dt2); 641 assertEquals(PeriodType.standard(), test.getPeriodType()); 642 assertEquals(3, test.getYears()); 643 assertEquals(1, test.getMonths()); 644 assertEquals(1, test.getWeeks()); 645 assertEquals(1, test.getDays()); 646 assertEquals(0, test.getHours()); 647 assertEquals(1, test.getMinutes()); 648 assertEquals(1, test.getSeconds()); 649 assertEquals(1, test.getMillis()); 650 } 651 652 public void testConstructor_RI_RI4() throws Throwable { 653 DateTime dt1 = new DateTime(2005, 7, 17, 1, 1, 1, 1); 654 DateTime dt2 = null; // 2002-06-09T01:00+01:00 655 MutablePeriod test = new MutablePeriod(dt1, dt2); 656 assertEquals(PeriodType.standard(), test.getPeriodType()); 657 assertEquals(-3, test.getYears()); 658 assertEquals(-1, test.getMonths()); 659 assertEquals(-1, test.getWeeks()); 660 assertEquals(-1, test.getDays()); 661 assertEquals(0, test.getHours()); 662 assertEquals(-1, test.getMinutes()); 663 assertEquals(-1, test.getSeconds()); 664 assertEquals(-1, test.getMillis()); 665 } 666 667 public void testConstructor_RI_RI5() throws Throwable { 668 DateTime dt1 = null; // 2002-06-09T01:00+01:00 669 DateTime dt2 = null; // 2002-06-09T01:00+01:00 670 MutablePeriod test = new MutablePeriod(dt1, dt2); 671 assertEquals(PeriodType.standard(), test.getPeriodType()); 672 assertEquals(0, test.getYears()); 673 assertEquals(0, test.getMonths()); 674 assertEquals(0, test.getWeeks()); 675 assertEquals(0, test.getDays()); 676 assertEquals(0, test.getHours()); 677 assertEquals(0, test.getMinutes()); 678 assertEquals(0, test.getSeconds()); 679 assertEquals(0, test.getMillis()); 680 } 681 682 //----------------------------------------------------------------------- 683 public void testConstructor_RI_RI_PeriodType1() throws Throwable { 684 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 685 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 686 MutablePeriod test = new MutablePeriod(dt1, dt2, null); 687 assertEquals(PeriodType.standard(), test.getPeriodType()); 688 assertEquals(1, test.getYears()); 689 assertEquals(1, test.getMonths()); 690 assertEquals(0, test.getWeeks()); 691 assertEquals(1, test.getDays()); 692 assertEquals(1, test.getHours()); 693 assertEquals(1, test.getMinutes()); 694 assertEquals(1, test.getSeconds()); 695 assertEquals(1, test.getMillis()); 696 } 697 698 public void testConstructor_RI_RI_PeriodType2() throws Throwable { 699 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 700 DateTime dt2 = new DateTime(2004, 7, 10, 1, 1, 1, 1); 701 MutablePeriod test = new MutablePeriod(dt1, dt2, PeriodType.dayTime()); 702 assertEquals(PeriodType.dayTime(), test.getPeriodType()); 703 assertEquals(0, test.getYears()); 704 assertEquals(0, test.getMonths()); 705 assertEquals(0, test.getWeeks()); 706 assertEquals(31, test.getDays()); 707 assertEquals(1, test.getHours()); 708 assertEquals(1, test.getMinutes()); 709 assertEquals(1, test.getSeconds()); 710 assertEquals(1, test.getMillis()); 711 } 712 713 public void testConstructor_RI_RI_PeriodType3() throws Throwable { 714 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 715 DateTime dt2 = new DateTime(2004, 6, 9, 1, 1, 1, 1); 716 MutablePeriod test = new MutablePeriod(dt1, dt2, PeriodType.standard().withMillisRemoved()); 717 assertEquals(PeriodType.standard().withMillisRemoved(), test.getPeriodType()); 718 assertEquals(0, test.getYears()); 719 assertEquals(0, test.getMonths()); 720 assertEquals(0, test.getWeeks()); 721 assertEquals(0, test.getDays()); 722 assertEquals(1, test.getHours()); 723 assertEquals(1, test.getMinutes()); 724 assertEquals(1, test.getSeconds()); 725 assertEquals(0, test.getMillis()); 726 } 727 728 public void testConstructor_RI_RI_PeriodType4() throws Throwable { 729 DateTime dt1 = null; // 2002-06-09T01:00+01:00 730 DateTime dt2 = new DateTime(2005, 7, 17, 1, 1, 1, 1); 731 MutablePeriod test = new MutablePeriod(dt1, dt2, PeriodType.standard()); 732 assertEquals(PeriodType.standard(), test.getPeriodType()); 733 assertEquals(3, test.getYears()); 734 assertEquals(1, test.getMonths()); 735 assertEquals(1, test.getWeeks()); 736 assertEquals(1, test.getDays()); 737 assertEquals(0, test.getHours()); 738 assertEquals(1, test.getMinutes()); 739 assertEquals(1, test.getSeconds()); 740 assertEquals(1, test.getMillis()); 741 } 742 743 public void testConstructor_RI_RI_PeriodType5() throws Throwable { 744 DateTime dt1 = null; // 2002-06-09T01:00+01:00 745 DateTime dt2 = null; // 2002-06-09T01:00+01:00 746 MutablePeriod test = new MutablePeriod(dt1, dt2, PeriodType.standard()); 747 assertEquals(PeriodType.standard(), test.getPeriodType()); 748 assertEquals(0, test.getYears()); 749 assertEquals(0, test.getMonths()); 750 assertEquals(0, test.getWeeks()); 751 assertEquals(0, test.getDays()); 752 assertEquals(0, test.getHours()); 753 assertEquals(0, test.getMinutes()); 754 assertEquals(0, test.getSeconds()); 755 assertEquals(0, test.getMillis()); 756 } 757 758 //----------------------------------------------------------------------- 759 public void testConstructor_RI_RD1() throws Throwable { 760 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 761 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 762 Duration dur = new Interval(dt1, dt2).toDuration(); 763 MutablePeriod test = new MutablePeriod(dt1, dur); 764 assertEquals(PeriodType.standard(), test.getPeriodType()); 765 assertEquals(1, test.getYears()); 766 assertEquals(1, test.getMonths()); 767 assertEquals(0, test.getWeeks()); 768 assertEquals(1, test.getDays()); 769 assertEquals(1, test.getHours()); 770 assertEquals(1, test.getMinutes()); 771 assertEquals(1, test.getSeconds()); 772 assertEquals(1, test.getMillis()); 773 } 774 775 public void testConstructor_RI_RD2() throws Throwable { 776 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 777 Duration dur = null; 778 MutablePeriod test = new MutablePeriod(dt1, dur); 779 assertEquals(PeriodType.standard(), test.getPeriodType()); 780 assertEquals(0, test.getYears()); 781 assertEquals(0, test.getMonths()); 782 assertEquals(0, test.getWeeks()); 783 assertEquals(0, test.getDays()); 784 assertEquals(0, test.getHours()); 785 assertEquals(0, test.getMinutes()); 786 assertEquals(0, test.getSeconds()); 787 assertEquals(0, test.getMillis()); 788 } 789 790 //----------------------------------------------------------------------- 791 public void testConstructor_RI_RD_PeriodType1() throws Throwable { 792 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 793 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 794 Duration dur = new Interval(dt1, dt2).toDuration(); 795 MutablePeriod test = new MutablePeriod(dt1, dur, PeriodType.yearDayTime()); 796 assertEquals(PeriodType.yearDayTime(), test.getPeriodType()); 797 assertEquals(1, test.getYears()); 798 assertEquals(0, test.getMonths()); 799 assertEquals(0, test.getWeeks()); 800 assertEquals(31, test.getDays()); 801 assertEquals(1, test.getHours()); 802 assertEquals(1, test.getMinutes()); 803 assertEquals(1, test.getSeconds()); 804 assertEquals(1, test.getMillis()); 805 } 806 807 public void testConstructor_RI_RD_PeriodType2() throws Throwable { 808 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 809 Duration dur = null; 810 MutablePeriod test = new MutablePeriod(dt1, dur, (PeriodType) null); 811 assertEquals(PeriodType.standard(), test.getPeriodType()); 812 assertEquals(0, test.getYears()); 813 assertEquals(0, test.getMonths()); 814 assertEquals(0, test.getWeeks()); 815 assertEquals(0, test.getDays()); 816 assertEquals(0, test.getHours()); 817 assertEquals(0, test.getMinutes()); 818 assertEquals(0, test.getSeconds()); 819 assertEquals(0, test.getMillis()); 820 } 821 822 //----------------------------------------------------------------------- 823 /** 824 * Test constructor (Object) 825 */ 826 public void testConstructor_Object1() throws Throwable { 827 MutablePeriod test = new MutablePeriod("P1Y2M3D"); 828 assertEquals(PeriodType.standard(), test.getPeriodType()); 829 assertEquals(1, test.getYears()); 830 assertEquals(2, test.getMonths()); 831 assertEquals(0, test.getWeeks()); 832 assertEquals(3, test.getDays()); 833 assertEquals(0, test.getHours()); 834 assertEquals(0, test.getMinutes()); 835 assertEquals(0, test.getSeconds()); 836 assertEquals(0, test.getMillis()); 837 } 838 839 public void testConstructor_Object2() throws Throwable { 840 MutablePeriod test = new MutablePeriod((Object) null); 841 assertEquals(PeriodType.standard(), test.getPeriodType()); 842 assertEquals(0, test.getYears()); 843 assertEquals(0, test.getMonths()); 844 assertEquals(0, test.getWeeks()); 845 assertEquals(0, test.getDays()); 846 assertEquals(0, test.getHours()); 847 assertEquals(0, test.getMinutes()); 848 assertEquals(0, test.getSeconds()); 849 assertEquals(0, test.getMillis()); 850 } 851 852 public void testConstructor_Object3() throws Throwable { 853 MutablePeriod test = new MutablePeriod(new Period(0, 0, 0, 0, 1, 2, 3, 4, PeriodType.dayTime())); 854 assertEquals(PeriodType.dayTime(), test.getPeriodType()); 855 assertEquals(0, test.getYears()); 856 assertEquals(0, test.getMonths()); 857 assertEquals(0, test.getWeeks()); 858 assertEquals(0, test.getDays()); 859 assertEquals(1, test.getHours()); 860 assertEquals(2, test.getMinutes()); 861 assertEquals(3, test.getSeconds()); 862 assertEquals(4, test.getMillis()); 863 } 864 865 public void testConstructor_Object4() throws Throwable { 866 Period base = new Period(1, 1, 0, 1, 1, 1, 1, 1, PeriodType.standard()); 867 MutablePeriod test = new MutablePeriod(base); 868 assertEquals(PeriodType.standard(), test.getPeriodType()); 869 assertEquals(1, test.getYears()); 870 assertEquals(1, test.getMonths()); 871 assertEquals(0, test.getWeeks()); 872 assertEquals(1, test.getDays()); 873 assertEquals(1, test.getHours()); 874 assertEquals(1, test.getMinutes()); 875 assertEquals(1, test.getSeconds()); 876 assertEquals(1, test.getMillis()); 877 } 878 879 //----------------------------------------------------------------------- 880 /** 881 * Test constructor (Object,PeriodType) 882 */ 883 public void testConstructor_Object_PeriodType1() throws Throwable { 884 MutablePeriod test = new MutablePeriod("P1Y2M3D", PeriodType.yearMonthDayTime()); 885 assertEquals(PeriodType.yearMonthDayTime(), test.getPeriodType()); 886 assertEquals(1, test.getYears()); 887 assertEquals(2, test.getMonths()); 888 assertEquals(0, test.getWeeks()); 889 assertEquals(3, test.getDays()); 890 assertEquals(0, test.getHours()); 891 assertEquals(0, test.getMinutes()); 892 assertEquals(0, test.getSeconds()); 893 assertEquals(0, test.getMillis()); 894 } 895 896 public void testConstructor_Object_PeriodType2() throws Throwable { 897 MutablePeriod test = new MutablePeriod((Object) null, PeriodType.yearMonthDayTime()); 898 assertEquals(PeriodType.yearMonthDayTime(), test.getPeriodType()); 899 assertEquals(0, test.getYears()); 900 assertEquals(0, test.getMonths()); 901 assertEquals(0, test.getWeeks()); 902 assertEquals(0, test.getDays()); 903 assertEquals(0, test.getHours()); 904 assertEquals(0, test.getMinutes()); 905 assertEquals(0, test.getSeconds()); 906 assertEquals(0, test.getMillis()); 907 } 908 909 public void testConstructor_Object_PeriodType3() throws Throwable { 910 MutablePeriod test = new MutablePeriod(new Period(0, 0, 0, 0, 1, 2, 3, 4, PeriodType.dayTime()), PeriodType.yearMonthDayTime()); 911 assertEquals(PeriodType.yearMonthDayTime(), test.getPeriodType()); 912 assertEquals(0, test.getYears()); 913 assertEquals(0, test.getMonths()); 914 assertEquals(0, test.getWeeks()); 915 assertEquals(0, test.getDays()); 916 assertEquals(1, test.getHours()); 917 assertEquals(2, test.getMinutes()); 918 assertEquals(3, test.getSeconds()); 919 assertEquals(4, test.getMillis()); 920 } 921 922 public void testConstructor_Object_PeriodType4() throws Throwable { 923 MutablePeriod test = new MutablePeriod(new Period(0, 0, 0, 0, 1, 2, 3, 4, PeriodType.dayTime()), (PeriodType) null); 924 assertEquals(PeriodType.dayTime(), test.getPeriodType()); 925 assertEquals(0, test.getYears()); 926 assertEquals(0, test.getMonths()); 927 assertEquals(0, test.getWeeks()); 928 assertEquals(0, test.getDays()); 929 assertEquals(1, test.getHours()); 930 assertEquals(2, test.getMinutes()); 931 assertEquals(3, test.getSeconds()); 932 assertEquals(4, test.getMillis()); 933 } 934 935 //----------------------------------------------------------------------- 936 public void testConstructor_Object_Chronology1() throws Throwable { 937 long length = 938 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY + 939 5L * DateTimeConstants.MILLIS_PER_HOUR + 940 6L * DateTimeConstants.MILLIS_PER_MINUTE + 941 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L; 942 MutablePeriod test = new MutablePeriod(new Duration(length), ISOChronology.getInstance()); 943 assertEquals(PeriodType.standard(), test.getPeriodType()); 944 assertEquals(0, test.getYears()); // (4 + (3 * 7) + (2 * 30) + 365) == 450 945 assertEquals(0, test.getMonths()); 946 assertEquals(0, test.getWeeks()); 947 assertEquals(0, test.getDays()); 948 assertEquals((450 * 24) + 5, test.getHours()); 949 assertEquals(6, test.getMinutes()); 950 assertEquals(7, test.getSeconds()); 951 assertEquals(8, test.getMillis()); 952 } 953 954 public void testConstructor_Object_Chronology2() throws Throwable { 955 long length = 956 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY + 957 5L * DateTimeConstants.MILLIS_PER_HOUR + 958 6L * DateTimeConstants.MILLIS_PER_MINUTE + 959 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L; 960 MutablePeriod test = new MutablePeriod(new Duration(length), ISOChronology.getInstanceUTC()); 961 assertEquals(PeriodType.standard(), test.getPeriodType()); 962 assertEquals(0, test.getYears()); // (4 + (3 * 7) + (2 * 30) + 365) == 450 963 assertEquals(0, test.getMonths()); 964 assertEquals(64, test.getWeeks()); 965 assertEquals(2, test.getDays()); 966 assertEquals(5, test.getHours()); 967 assertEquals(6, test.getMinutes()); 968 assertEquals(7, test.getSeconds()); 969 assertEquals(8, test.getMillis()); 970 } 971 972 }