1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.joda.time;
17
18 import java.util.Locale;
19 import java.util.TimeZone;
20
21 import junit.framework.TestCase;
22 import junit.framework.TestSuite;
23
24 import org.joda.time.chrono.ISOChronology;
25
26
27
28
29
30
31 public class TestMutablePeriod_Updates extends TestCase {
32
33
34
35 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
36 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
37
38 long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
39 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 +
40 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
41 366 + 365;
42 long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
43 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 +
44 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
45 366 + 365 + 365;
46
47
48 private long TEST_TIME_NOW =
49 (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY;
50
51
52 private long TEST_TIME1 =
53 (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY
54 + 12L * DateTimeConstants.MILLIS_PER_HOUR
55 + 24L * DateTimeConstants.MILLIS_PER_MINUTE;
56
57
58 private long TEST_TIME2 =
59 (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY
60 + 14L * DateTimeConstants.MILLIS_PER_HOUR
61 + 28L * DateTimeConstants.MILLIS_PER_MINUTE;
62
63 private DateTimeZone originalDateTimeZone = null;
64 private TimeZone originalTimeZone = null;
65 private Locale originalLocale = null;
66
67 public static void main(String[] args) {
68 junit.textui.TestRunner.run(suite());
69 }
70
71 public static TestSuite suite() {
72 return new TestSuite(TestMutablePeriod_Updates.class);
73 }
74
75 public TestMutablePeriod_Updates(String name) {
76 super(name);
77 }
78
79 protected void setUp() throws Exception {
80 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
81 originalDateTimeZone = DateTimeZone.getDefault();
82 originalTimeZone = TimeZone.getDefault();
83 originalLocale = Locale.getDefault();
84 DateTimeZone.setDefault(LONDON);
85 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
86 Locale.setDefault(Locale.UK);
87 }
88
89 protected void tearDown() throws Exception {
90 DateTimeUtils.setCurrentMillisSystem();
91 DateTimeZone.setDefault(originalDateTimeZone);
92 TimeZone.setDefault(originalTimeZone);
93 Locale.setDefault(originalLocale);
94 originalDateTimeZone = null;
95 originalTimeZone = null;
96 originalLocale = null;
97 }
98
99
100 public void testTest() {
101 assertEquals("2002-06-09T00:00:00.000Z", new Instant(TEST_TIME_NOW).toString());
102 assertEquals("2002-04-05T12:24:00.000Z", new Instant(TEST_TIME1).toString());
103 assertEquals("2003-05-06T14:28:00.000Z", new Instant(TEST_TIME2).toString());
104 }
105
106
107 public void testClear() {
108 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
109 test.clear();
110 assertEquals(new MutablePeriod(), test);
111
112 test = new MutablePeriod(1, 2, 0, 4, 5, 6, 7, 8, PeriodType.yearMonthDayTime());
113 test.clear();
114 assertEquals(new MutablePeriod(PeriodType.yearMonthDayTime()), test);
115 }
116
117
118 public void testAddYears() {
119 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
120 test.addYears(10);
121 assertEquals(11, test.getYears());
122
123 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
124 test.addYears(-10);
125 assertEquals(-9, test.getYears());
126
127 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
128 test.addYears(0);
129 assertEquals(1, test.getYears());
130 }
131
132
133 public void testAddMonths() {
134 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
135 test.addMonths(10);
136 assertEquals(12, test.getMonths());
137
138 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
139 test.addMonths(-10);
140 assertEquals(-8, test.getMonths());
141
142 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
143 test.addMonths(0);
144 assertEquals(2, test.getMonths());
145 }
146
147
148 public void testAddWeeks() {
149 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
150 test.addWeeks(10);
151 assertEquals(13, test.getWeeks());
152
153 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
154 test.addWeeks(-10);
155 assertEquals(-7, test.getWeeks());
156
157 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
158 test.addWeeks(0);
159 assertEquals(3, test.getWeeks());
160 }
161
162
163 public void testAddDays() {
164 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
165 test.addDays(10);
166 assertEquals(14, test.getDays());
167
168 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
169 test.addDays(-10);
170 assertEquals(-6, test.getDays());
171
172 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
173 test.addDays(0);
174 assertEquals(4, test.getDays());
175 }
176
177
178 public void testAddHours() {
179 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
180 test.addHours(10);
181 assertEquals(15, test.getHours());
182
183 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
184 test.addHours(-10);
185 assertEquals(-5, test.getHours());
186
187 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
188 test.addHours(0);
189 assertEquals(5, test.getHours());
190 }
191
192
193 public void testAddMinutes() {
194 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
195 test.addMinutes(10);
196 assertEquals(16, test.getMinutes());
197
198 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
199 test.addMinutes(-10);
200 assertEquals(-4, test.getMinutes());
201
202 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
203 test.addMinutes(0);
204 assertEquals(6, test.getMinutes());
205 }
206
207
208 public void testAddSeconds() {
209 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
210 test.addSeconds(10);
211 assertEquals(17, test.getSeconds());
212
213 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
214 test.addSeconds(-10);
215 assertEquals(-3, test.getSeconds());
216
217 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
218 test.addSeconds(0);
219 assertEquals(7, test.getSeconds());
220 }
221
222
223 public void testAddMillis() {
224 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
225 test.addMillis(10);
226 assertEquals(18, test.getMillis());
227
228 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
229 test.addMillis(-10);
230 assertEquals(-2, test.getMillis());
231
232 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
233 test.addMillis(0);
234 assertEquals(8, test.getMillis());
235 }
236
237
238 public void testSetYears() {
239 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
240 test.setYears(10);
241 assertEquals(10, test.getYears());
242
243 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
244 test.setYears(-10);
245 assertEquals(-10, test.getYears());
246
247 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
248 test.setYears(0);
249 assertEquals(0, test.getYears());
250
251 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
252 test.setYears(1);
253 assertEquals(1, test.getYears());
254
255 test = new MutablePeriod(0, 0, 0, 0, 0, 0, 0, 1, PeriodType.millis());
256 try {
257 test.setYears(1);
258 fail();
259 } catch (IllegalArgumentException ex) {}
260 }
261
262
263 public void testSetMonths() {
264 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
265 test.setMonths(10);
266 assertEquals(10, test.getMonths());
267
268 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
269 test.setMonths(-10);
270 assertEquals(-10, test.getMonths());
271
272 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
273 test.setMonths(0);
274 assertEquals(0, test.getMonths());
275
276 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
277 test.setMonths(2);
278 assertEquals(2, test.getMonths());
279 }
280
281
282 public void testSetWeeks() {
283 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
284 test.setWeeks(10);
285 assertEquals(10, test.getWeeks());
286
287 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
288 test.setWeeks(-10);
289 assertEquals(-10, test.getWeeks());
290
291 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
292 test.setWeeks(0);
293 assertEquals(0, test.getWeeks());
294
295 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
296 test.setWeeks(3);
297 assertEquals(3, test.getWeeks());
298 }
299
300
301 public void testSetDays() {
302 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
303 test.setDays(10);
304 assertEquals(10, test.getDays());
305
306 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
307 test.setDays(-10);
308 assertEquals(-10, test.getDays());
309
310 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
311 test.setDays(0);
312 assertEquals(0, test.getDays());
313
314 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
315 test.setDays(4);
316 assertEquals(4, test.getDays());
317 }
318
319
320 public void testSetHours() {
321 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
322 test.setHours(10);
323 assertEquals(10, test.getHours());
324
325 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
326 test.setHours(-10);
327 assertEquals(-10, test.getHours());
328
329 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
330 test.setHours(0);
331 assertEquals(0, test.getHours());
332
333 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
334 test.setHours(5);
335 assertEquals(5, test.getHours());
336 }
337
338
339 public void testSetMinutes() {
340 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
341 test.setMinutes(10);
342 assertEquals(10, test.getMinutes());
343
344 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
345 test.setMinutes(-10);
346 assertEquals(-10, test.getMinutes());
347
348 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
349 test.setMinutes(0);
350 assertEquals(0, test.getMinutes());
351
352 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
353 test.setMinutes(6);
354 assertEquals(6, test.getMinutes());
355 }
356
357
358 public void testSetSeconds() {
359 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
360 test.setSeconds(10);
361 assertEquals(10, test.getSeconds());
362
363 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
364 test.setSeconds(-10);
365 assertEquals(-10, test.getSeconds());
366
367 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
368 test.setSeconds(0);
369 assertEquals(0, test.getSeconds());
370
371 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
372 test.setSeconds(7);
373 assertEquals(7, test.getSeconds());
374 }
375
376
377 public void testSetMillis() {
378 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
379 test.setMillis(10);
380 assertEquals(10, test.getMillis());
381
382 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
383 test.setMillis(-10);
384 assertEquals(-10, test.getMillis());
385
386 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
387 test.setMillis(0);
388 assertEquals(0, test.getMillis());
389
390 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
391 test.setMillis(8);
392 assertEquals(8, test.getMillis());
393 }
394
395
396 public void testSet_Field() {
397 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
398 test.set(DurationFieldType.years(), 10);
399 assertEquals(10, test.getYears());
400
401 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
402 try {
403 test.set(null, 10);
404 fail();
405 } catch (IllegalArgumentException ex) {}
406 }
407
408
409 public void testAdd_Field() {
410 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
411 test.add(DurationFieldType.years(), 10);
412 assertEquals(11, test.getYears());
413
414 test = new MutablePeriod(0, 0, 0, 0, 0, 0, 0, 1, PeriodType.millis());
415 test.add(DurationFieldType.years(), 0);
416 assertEquals(0, test.getYears());
417 assertEquals(1, test.getMillis());
418
419 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
420 try {
421 test.add(null, 0);
422 fail();
423 } catch (IllegalArgumentException ex) {}
424
425 test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
426 try {
427 test.add(null, 10);
428 fail();
429 } catch (IllegalArgumentException ex) {}
430 }
431
432
433 public void testSetPeriod_8ints1() {
434 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
435 test.setPeriod(11, 12, 13, 14, 15, 16, 17, 18);
436 assertEquals(11, test.getYears());
437 assertEquals(12, test.getMonths());
438 assertEquals(13, test.getWeeks());
439 assertEquals(14, test.getDays());
440 assertEquals(15, test.getHours());
441 assertEquals(16, test.getMinutes());
442 assertEquals(17, test.getSeconds());
443 assertEquals(18, test.getMillis());
444 }
445
446 public void testSetPeriod_8ints2() {
447 MutablePeriod test = new MutablePeriod(100L, PeriodType.millis());
448 try {
449 test.setPeriod(11, 12, 13, 14, 15, 16, 17, 18);
450 fail();
451 } catch (IllegalArgumentException ex) {}
452 assertEquals(0, test.getYears());
453 assertEquals(0, test.getMonths());
454 assertEquals(0, test.getWeeks());
455 assertEquals(0, test.getDays());
456 assertEquals(0, test.getHours());
457 assertEquals(0, test.getMinutes());
458 assertEquals(0, test.getSeconds());
459 assertEquals(100, test.getMillis());
460 }
461
462 public void testSetPeriod_8ints3() {
463 MutablePeriod test = new MutablePeriod(100L, PeriodType.millis());
464 test.setPeriod(0, 0, 0, 0, 0, 0, 0, 18);
465 assertEquals(0, test.getYears());
466 assertEquals(0, test.getMonths());
467 assertEquals(0, test.getWeeks());
468 assertEquals(0, test.getDays());
469 assertEquals(0, test.getHours());
470 assertEquals(0, test.getMinutes());
471 assertEquals(0, test.getSeconds());
472 assertEquals(18, test.getMillis());
473 }
474
475 public void testSetPeriod_8ints4() {
476 MutablePeriod test = new MutablePeriod(0, 0, 0, 0, 5, 6, 7, 8);
477 test.setPeriod(11, 12, 13, 14, 15, 16, 17, 18);
478 assertEquals(11, test.getYears());
479 assertEquals(12, test.getMonths());
480 assertEquals(13, test.getWeeks());
481 assertEquals(14, test.getDays());
482 assertEquals(15, test.getHours());
483 assertEquals(16, test.getMinutes());
484 assertEquals(17, test.getSeconds());
485 assertEquals(18, test.getMillis());
486 }
487
488
489 public void testSetPeriod_RP1() {
490 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
491 test.setPeriod(new MutablePeriod(11, 12, 13, 14, 15, 16, 17, 18));
492 assertEquals(11, test.getYears());
493 assertEquals(12, test.getMonths());
494 assertEquals(13, test.getWeeks());
495 assertEquals(14, test.getDays());
496 assertEquals(15, test.getHours());
497 assertEquals(16, test.getMinutes());
498 assertEquals(17, test.getSeconds());
499 assertEquals(18, test.getMillis());
500 }
501
502 public void testSetPeriod_RP2() {
503 MutablePeriod test = new MutablePeriod(100L, PeriodType.millis());
504 try {
505 test.setPeriod(new MutablePeriod(11, 12, 13, 14, 15, 16, 17, 18));
506 fail();
507 } catch (IllegalArgumentException ex) {}
508 assertEquals(0, test.getYears());
509 assertEquals(0, test.getMonths());
510 assertEquals(0, test.getWeeks());
511 assertEquals(0, test.getDays());
512 assertEquals(0, test.getHours());
513 assertEquals(0, test.getMinutes());
514 assertEquals(0, test.getSeconds());
515 assertEquals(100, test.getMillis());
516 }
517
518 public void testSetPeriod_RP3() {
519 MutablePeriod test = new MutablePeriod(100L, PeriodType.millis());
520 test.setPeriod(new MutablePeriod(0, 0, 0, 0, 0, 0, 0, 18));
521 assertEquals(0, test.getYears());
522 assertEquals(0, test.getMonths());
523 assertEquals(0, test.getWeeks());
524 assertEquals(0, test.getDays());
525 assertEquals(0, test.getHours());
526 assertEquals(0, test.getMinutes());
527 assertEquals(0, test.getSeconds());
528 assertEquals(18, test.getMillis());
529 }
530
531 public void testSetPeriod_RP4() {
532 MutablePeriod test = new MutablePeriod(0, 0, 0, 0, 5, 6, 7, 8);
533 test.setPeriod(new MutablePeriod(11, 12, 13, 14, 15, 16, 17, 18));
534 assertEquals(11, test.getYears());
535 assertEquals(12, test.getMonths());
536 assertEquals(13, test.getWeeks());
537 assertEquals(14, test.getDays());
538 assertEquals(15, test.getHours());
539 assertEquals(16, test.getMinutes());
540 assertEquals(17, test.getSeconds());
541 assertEquals(18, test.getMillis());
542 }
543
544 public void testSetPeriod_RP5() {
545 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
546 test.setPeriod((ReadablePeriod) null);
547 assertEquals(0, test.getYears());
548 assertEquals(0, test.getMonths());
549 assertEquals(0, test.getWeeks());
550 assertEquals(0, test.getDays());
551 assertEquals(0, test.getHours());
552 assertEquals(0, test.getMinutes());
553 assertEquals(0, test.getSeconds());
554 assertEquals(0, test.getMillis());
555 }
556
557
558 public void testSetPeriod_long_long1() {
559 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
560 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
561 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
562 test.setPeriod(dt1.getMillis(), dt2.getMillis());
563 assertEquals(1, test.getYears());
564 assertEquals(1, test.getMonths());
565 assertEquals(1, test.getWeeks());
566 assertEquals(1, test.getDays());
567 assertEquals(1, test.getHours());
568 assertEquals(1, test.getMinutes());
569 assertEquals(1, test.getSeconds());
570 assertEquals(1, test.getMillis());
571 }
572
573 public void testSetPeriod_long_long2() {
574 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
575 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
576 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
577 test.setPeriod(dt2.getMillis(), dt1.getMillis());
578 assertEquals(-1, test.getYears());
579 assertEquals(-1, test.getMonths());
580 assertEquals(-1, test.getWeeks());
581 assertEquals(-1, test.getDays());
582 assertEquals(-1, test.getHours());
583 assertEquals(-1, test.getMinutes());
584 assertEquals(-1, test.getSeconds());
585 assertEquals(-1, test.getMillis());
586 }
587
588 public void testSetPeriod_long_long3() {
589 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
590 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
591 test.setPeriod(dt1.getMillis(), dt1.getMillis());
592 assertEquals(0, test.getYears());
593 assertEquals(0, test.getMonths());
594 assertEquals(0, test.getWeeks());
595 assertEquals(0, test.getDays());
596 assertEquals(0, test.getHours());
597 assertEquals(0, test.getMinutes());
598 assertEquals(0, test.getSeconds());
599 assertEquals(0, test.getMillis());
600 }
601
602 public void testSetPeriod_long_long_NoYears() {
603 MutablePeriod test = new MutablePeriod(PeriodType.standard().withYearsRemoved());
604 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
605 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
606 test.setPeriod(dt1.getMillis(), dt2.getMillis());
607 assertEquals(0, test.getYears());
608 assertEquals(13, test.getMonths());
609 assertEquals(1, test.getWeeks());
610 assertEquals(1, test.getDays());
611 assertEquals(1, test.getHours());
612 assertEquals(1, test.getMinutes());
613 assertEquals(1, test.getSeconds());
614 assertEquals(1, test.getMillis());
615 }
616
617 public void testSetPeriod_long_long_NoMonths() {
618 MutablePeriod test = new MutablePeriod(PeriodType.standard().withMonthsRemoved());
619 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
620 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
621 test.setPeriod(dt1.getMillis(), dt2.getMillis());
622 assertEquals(1, test.getYears());
623 assertEquals(0, test.getMonths());
624 assertEquals(5, test.getWeeks());
625 assertEquals(3, test.getDays());
626 assertEquals(1, test.getHours());
627 assertEquals(1, test.getMinutes());
628 assertEquals(1, test.getSeconds());
629 assertEquals(1, test.getMillis());
630 }
631
632 public void testSetPeriod_long_long_NoWeeks() {
633 MutablePeriod test = new MutablePeriod(PeriodType.standard().withWeeksRemoved());
634 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
635 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
636 test.setPeriod(dt1.getMillis(), dt2.getMillis());
637 assertEquals(1, test.getYears());
638 assertEquals(1, test.getMonths());
639 assertEquals(0, test.getWeeks());
640 assertEquals(8, test.getDays());
641 assertEquals(1, test.getHours());
642 assertEquals(1, test.getMinutes());
643 assertEquals(1, test.getSeconds());
644 assertEquals(1, test.getMillis());
645 }
646
647 public void testSetPeriod_long_long_NoDays() {
648 MutablePeriod test = new MutablePeriod(PeriodType.standard().withDaysRemoved());
649 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
650 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
651 test.setPeriod(dt1.getMillis(), dt2.getMillis());
652 assertEquals(1, test.getYears());
653 assertEquals(1, test.getMonths());
654 assertEquals(1, test.getWeeks());
655 assertEquals(0, test.getDays());
656 assertEquals(25, test.getHours());
657 assertEquals(1, test.getMinutes());
658 assertEquals(1, test.getSeconds());
659 assertEquals(1, test.getMillis());
660 }
661
662 public void testSetPeriod_long_long_NoHours() {
663 MutablePeriod test = new MutablePeriod(PeriodType.standard().withHoursRemoved());
664 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
665 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
666 test.setPeriod(dt1.getMillis(), dt2.getMillis());
667 assertEquals(1, test.getYears());
668 assertEquals(1, test.getMonths());
669 assertEquals(1, test.getWeeks());
670 assertEquals(1, test.getDays());
671 assertEquals(0, test.getHours());
672 assertEquals(61, test.getMinutes());
673 assertEquals(1, test.getSeconds());
674 assertEquals(1, test.getMillis());
675 }
676
677 public void testSetPeriod_long_long_NoMinutes() {
678 MutablePeriod test = new MutablePeriod(PeriodType.standard().withMinutesRemoved());
679 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
680 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
681 test.setPeriod(dt1.getMillis(), dt2.getMillis());
682 assertEquals(1, test.getYears());
683 assertEquals(1, test.getMonths());
684 assertEquals(1, test.getWeeks());
685 assertEquals(1, test.getDays());
686 assertEquals(1, test.getHours());
687 assertEquals(0, test.getMinutes());
688 assertEquals(61, test.getSeconds());
689 assertEquals(1, test.getMillis());
690 }
691
692 public void testSetPeriod_long_long_NoSeconds() {
693 MutablePeriod test = new MutablePeriod(PeriodType.standard().withSecondsRemoved());
694 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
695 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
696 test.setPeriod(dt1.getMillis(), dt2.getMillis());
697 assertEquals(1, test.getYears());
698 assertEquals(1, test.getMonths());
699 assertEquals(1, test.getWeeks());
700 assertEquals(1, test.getDays());
701 assertEquals(1, test.getHours());
702 assertEquals(1, test.getMinutes());
703 assertEquals(0, test.getSeconds());
704 assertEquals(1001, test.getMillis());
705 }
706
707 public void testSetPeriod_long_long_NoMillis() {
708 MutablePeriod test = new MutablePeriod(PeriodType.standard().withMillisRemoved());
709 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
710 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
711 test.setPeriod(dt1.getMillis(), dt2.getMillis());
712 assertEquals(1, test.getYears());
713 assertEquals(1, test.getMonths());
714 assertEquals(1, test.getWeeks());
715 assertEquals(1, test.getDays());
716 assertEquals(1, test.getHours());
717 assertEquals(1, test.getMinutes());
718 assertEquals(1, test.getSeconds());
719 assertEquals(0, test.getMillis());
720 }
721
722
723 public void testSetPeriod_RI_RI1() {
724 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
725 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
726 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
727 test.setPeriod(dt1, dt2);
728 assertEquals(1, test.getYears());
729 assertEquals(1, test.getMonths());
730 assertEquals(1, test.getWeeks());
731 assertEquals(1, test.getDays());
732 assertEquals(1, test.getHours());
733 assertEquals(1, test.getMinutes());
734 assertEquals(1, test.getSeconds());
735 assertEquals(1, test.getMillis());
736 }
737
738 public void testSetPeriod_RI_RI2() {
739 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
740 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
741 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
742 test.setPeriod(dt2, dt1);
743 assertEquals(-1, test.getYears());
744 assertEquals(-1, test.getMonths());
745 assertEquals(-1, test.getWeeks());
746 assertEquals(-1, test.getDays());
747 assertEquals(-1, test.getHours());
748 assertEquals(-1, test.getMinutes());
749 assertEquals(-1, test.getSeconds());
750 assertEquals(-1, test.getMillis());
751 }
752
753 public void testSetPeriod_RI_RI3() {
754 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
755 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
756 test.setPeriod(dt1, dt1);
757 assertEquals(0, test.getYears());
758 assertEquals(0, test.getMonths());
759 assertEquals(0, test.getWeeks());
760 assertEquals(0, test.getDays());
761 assertEquals(0, test.getHours());
762 assertEquals(0, test.getMinutes());
763 assertEquals(0, test.getSeconds());
764 assertEquals(0, test.getMillis());
765 }
766
767
768 public void testSetPeriod_RInterval1() {
769 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
770 DateTime dt1 = new DateTime(2002, 6, 9, 13, 15, 17, 19);
771 DateTime dt2 = new DateTime(2003, 7, 17, 14, 16, 18, 20);
772 test.setPeriod(new Interval(dt1, dt2));
773 assertEquals(1, test.getYears());
774 assertEquals(1, test.getMonths());
775 assertEquals(1, test.getWeeks());
776 assertEquals(1, test.getDays());
777 assertEquals(1, test.getHours());
778 assertEquals(1, test.getMinutes());
779 assertEquals(1, test.getSeconds());
780 assertEquals(1, test.getMillis());
781 }
782
783 public void testSetPeriod_RInterval2() {
784 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
785 test.setPeriod((ReadableInterval) null);
786 assertEquals(0, test.getYears());
787 assertEquals(0, test.getMonths());
788 assertEquals(0, test.getWeeks());
789 assertEquals(0, test.getDays());
790 assertEquals(0, test.getHours());
791 assertEquals(0, test.getMinutes());
792 assertEquals(0, test.getSeconds());
793 assertEquals(0, test.getMillis());
794 }
795
796
797 public void testSetPeriod_long1() {
798 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
799 test.setPeriod(100L);
800 assertEquals(0, test.getYears());
801 assertEquals(0, test.getMonths());
802 assertEquals(0, test.getWeeks());
803 assertEquals(0, test.getDays());
804 assertEquals(0, test.getHours());
805 assertEquals(0, test.getMinutes());
806 assertEquals(0, test.getSeconds());
807 assertEquals(100, test.getMillis());
808 }
809
810 public void testSetPeriod_long2() {
811 MutablePeriod test = new MutablePeriod();
812 test.setPeriod(
813 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY +
814 5L * DateTimeConstants.MILLIS_PER_HOUR +
815 6L * DateTimeConstants.MILLIS_PER_MINUTE +
816 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L);
817
818 assertEquals(0, test.getYears());
819 assertEquals(0, test.getMonths());
820 assertEquals(0, test.getWeeks());
821 assertEquals(0, test.getDays());
822 assertEquals((450 * 24) + 5, test.getHours());
823 assertEquals(6, test.getMinutes());
824 assertEquals(7, test.getSeconds());
825 assertEquals(8, test.getMillis());
826 }
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015 public void testSetPeriod_RD1() {
1016 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1017 test.setPeriod(new Duration(100L));
1018 assertEquals(0, test.getYears());
1019 assertEquals(0, test.getMonths());
1020 assertEquals(0, test.getWeeks());
1021 assertEquals(0, test.getDays());
1022 assertEquals(0, test.getHours());
1023 assertEquals(0, test.getMinutes());
1024 assertEquals(0, test.getSeconds());
1025 assertEquals(100, test.getMillis());
1026 }
1027
1028 public void testSetPeriod_RD2() {
1029 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1030 long length =
1031 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY +
1032 5L * DateTimeConstants.MILLIS_PER_HOUR +
1033 6L * DateTimeConstants.MILLIS_PER_MINUTE +
1034 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L;
1035 test.setPeriod(new Duration(length));
1036
1037 assertEquals(0, test.getYears());
1038 assertEquals(0, test.getMonths());
1039 assertEquals(0, test.getWeeks());
1040 assertEquals(0, test.getDays());
1041 assertEquals((450 * 24) + 5, test.getHours());
1042 assertEquals(6, test.getMinutes());
1043 assertEquals(7, test.getSeconds());
1044 assertEquals(8, test.getMillis());
1045 }
1046
1047 public void testSetPeriod_RD3() {
1048 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1049 test.setPeriod((ReadableDuration) null);
1050 assertEquals(0, test.getYears());
1051 assertEquals(0, test.getMonths());
1052 assertEquals(0, test.getWeeks());
1053 assertEquals(0, test.getDays());
1054 assertEquals(0, test.getHours());
1055 assertEquals(0, test.getMinutes());
1056 assertEquals(0, test.getSeconds());
1057 assertEquals(0, test.getMillis());
1058 }
1059
1060
1061 public void testAdd_8ints1() {
1062 MutablePeriod test = new MutablePeriod(100L);
1063 test.add(1, 2, 3, 4, 5, 6, 7, 8);
1064 assertEquals(1, test.getYears());
1065 assertEquals(2, test.getMonths());
1066 assertEquals(3, test.getWeeks());
1067 assertEquals(4, test.getDays());
1068 assertEquals(5, test.getHours());
1069 assertEquals(6, test.getMinutes());
1070 assertEquals(7, test.getSeconds());
1071 assertEquals(108, test.getMillis());
1072 }
1073
1074 public void testAdd_8ints2() {
1075 MutablePeriod test = new MutablePeriod(100L, PeriodType.yearMonthDayTime());
1076 try {
1077 test.add(1, 2, 3, 4, 5, 6, 7, 8);
1078 fail();
1079 } catch (IllegalArgumentException ex) {}
1080 assertEquals(0, test.getYears());
1081 assertEquals(0, test.getMonths());
1082 assertEquals(0, test.getWeeks());
1083 assertEquals(0, test.getDays());
1084 assertEquals(0, test.getHours());
1085 assertEquals(0, test.getMinutes());
1086 assertEquals(0, test.getSeconds());
1087 assertEquals(100, test.getMillis());
1088 }
1089
1090
1091 public void testAdd_long1() {
1092 MutablePeriod test = new MutablePeriod(100L);
1093 test.add(100L);
1094 assertEquals(0, test.getYears());
1095 assertEquals(0, test.getMonths());
1096 assertEquals(0, test.getWeeks());
1097 assertEquals(0, test.getDays());
1098 assertEquals(0, test.getHours());
1099 assertEquals(0, test.getMinutes());
1100 assertEquals(0, test.getSeconds());
1101 assertEquals(200, test.getMillis());
1102 }
1103
1104 public void testAdd_long2() {
1105 MutablePeriod test = new MutablePeriod(100L, PeriodType.standard());
1106 long ms =
1107 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY +
1108 5L * DateTimeConstants.MILLIS_PER_HOUR +
1109 6L * DateTimeConstants.MILLIS_PER_MINUTE +
1110 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L;
1111 test.add(ms);
1112
1113 assertEquals(0, test.getYears());
1114 assertEquals(0, test.getMonths());
1115 assertEquals(0, test.getWeeks());
1116 assertEquals(0, test.getDays());
1117 assertEquals((450 * 24) + 5, test.getHours());
1118 assertEquals(6, test.getMinutes());
1119 assertEquals(7, test.getSeconds());
1120 assertEquals(108, test.getMillis());
1121 }
1122
1123 public void testAdd_long3() {
1124 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1125 test.add(2100L);
1126 assertEquals(1, test.getYears());
1127 assertEquals(2, test.getMonths());
1128 assertEquals(3, test.getWeeks());
1129 assertEquals(4, test.getDays());
1130 assertEquals(5, test.getHours());
1131 assertEquals(6, test.getMinutes());
1132 assertEquals(9, test.getSeconds());
1133 assertEquals(108, test.getMillis());
1134 }
1135
1136
1137 public void testAdd_long_Chronology1() {
1138 MutablePeriod test = new MutablePeriod(100L);
1139 test.add(100L, ISOChronology.getInstance());
1140 assertEquals(0, test.getYears());
1141 assertEquals(0, test.getMonths());
1142 assertEquals(0, test.getWeeks());
1143 assertEquals(0, test.getDays());
1144 assertEquals(0, test.getHours());
1145 assertEquals(0, test.getMinutes());
1146 assertEquals(0, test.getSeconds());
1147 assertEquals(200, test.getMillis());
1148 }
1149
1150 public void testAdd_long_Chronology2() {
1151 MutablePeriod test = new MutablePeriod(100L, PeriodType.standard());
1152 long ms =
1153 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY +
1154 5L * DateTimeConstants.MILLIS_PER_HOUR +
1155 6L * DateTimeConstants.MILLIS_PER_MINUTE +
1156 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L;
1157 test.add(ms, ISOChronology.getInstance());
1158
1159 assertEquals(0, test.getYears());
1160 assertEquals(0, test.getMonths());
1161 assertEquals(0, test.getWeeks());
1162 assertEquals(0, test.getDays());
1163 assertEquals((450 * 24) + 5, test.getHours());
1164 assertEquals(6, test.getMinutes());
1165 assertEquals(7, test.getSeconds());
1166 assertEquals(108, test.getMillis());
1167 }
1168
1169 public void testAdd_long_Chronology3() {
1170 MutablePeriod test = new MutablePeriod(100L, PeriodType.standard());
1171 long ms =
1172 (4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY +
1173 5L * DateTimeConstants.MILLIS_PER_HOUR +
1174 6L * DateTimeConstants.MILLIS_PER_MINUTE +
1175 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L;
1176 test.add(ms, ISOChronology.getInstanceUTC());
1177
1178 assertEquals(0, test.getYears());
1179 assertEquals(0, test.getMonths());
1180 assertEquals(64, test.getWeeks());
1181 assertEquals(2, test.getDays());
1182 assertEquals(5, test.getHours());
1183 assertEquals(6, test.getMinutes());
1184 assertEquals(7, test.getSeconds());
1185 assertEquals(108, test.getMillis());
1186 }
1187
1188
1189 public void testAdd_RD1() {
1190 MutablePeriod test = new MutablePeriod(100L);
1191 test.add(new Duration(100L));
1192 assertEquals(0, test.getYears());
1193 assertEquals(0, test.getMonths());
1194 assertEquals(0, test.getWeeks());
1195 assertEquals(0, test.getDays());
1196 assertEquals(0, test.getHours());
1197 assertEquals(0, test.getMinutes());
1198 assertEquals(0, test.getSeconds());
1199 assertEquals(200, test.getMillis());
1200 }
1201
1202 public void testAdd_RD2() {
1203 MutablePeriod test = new MutablePeriod(100L, PeriodType.yearMonthDayTime());
1204 long ms =
1205 (4L + (3L * 7L)) * DateTimeConstants.MILLIS_PER_DAY +
1206 5L * DateTimeConstants.MILLIS_PER_HOUR +
1207 6L * DateTimeConstants.MILLIS_PER_MINUTE +
1208 7L * DateTimeConstants.MILLIS_PER_SECOND + 8L;
1209 test.add(new Duration(ms));
1210 assertEquals(0, test.getYears());
1211 assertEquals(0, test.getMonths());
1212 assertEquals(0, test.getWeeks());
1213 assertEquals(0, test.getDays());
1214 assertEquals((4 + (3 * 7)) * 24 + 5, test.getHours());
1215 assertEquals(6, test.getMinutes());
1216 assertEquals(7, test.getSeconds());
1217 assertEquals(108, test.getMillis());
1218 }
1219
1220 public void testAdd_RD3() {
1221 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1222 test.add((ReadableDuration) null);
1223 assertEquals(1, test.getYears());
1224 assertEquals(2, test.getMonths());
1225 assertEquals(3, test.getWeeks());
1226 assertEquals(4, test.getDays());
1227 assertEquals(5, test.getHours());
1228 assertEquals(6, test.getMinutes());
1229 assertEquals(7, test.getSeconds());
1230 assertEquals(8, test.getMillis());
1231 }
1232
1233
1234 public void testAdd_RP1() {
1235 MutablePeriod test = new MutablePeriod(100L);
1236 test.add(new Period(100L));
1237 assertEquals(0, test.getYears());
1238 assertEquals(0, test.getMonths());
1239 assertEquals(0, test.getWeeks());
1240 assertEquals(0, test.getDays());
1241 assertEquals(0, test.getHours());
1242 assertEquals(0, test.getMinutes());
1243 assertEquals(0, test.getSeconds());
1244 assertEquals(200, test.getMillis());
1245 }
1246
1247 public void testAdd_RP2() {
1248 MutablePeriod test = new MutablePeriod(100L, PeriodType.standard());
1249 test.add(new Period(1, 2, 3, 4, 5, 6, 7, 0, PeriodType.standard().withMillisRemoved()));
1250
1251 assertEquals(1, test.getYears());
1252 assertEquals(2, test.getMonths());
1253 assertEquals(3, test.getWeeks());
1254 assertEquals(4, test.getDays());
1255 assertEquals(5, test.getHours());
1256 assertEquals(6, test.getMinutes());
1257 assertEquals(7, test.getSeconds());
1258 assertEquals(100, test.getMillis());
1259 }
1260
1261 public void testAdd_RP3() {
1262 MutablePeriod test = new MutablePeriod(100L, PeriodType.standard());
1263 test.add(new Period(0L));
1264 assertEquals(0, test.getYears());
1265 assertEquals(0, test.getMonths());
1266 assertEquals(0, test.getWeeks());
1267 assertEquals(0, test.getDays());
1268 assertEquals(0, test.getHours());
1269 assertEquals(0, test.getMinutes());
1270 assertEquals(0, test.getSeconds());
1271 assertEquals(100, test.getMillis());
1272 }
1273
1274 public void testAdd_RP4() {
1275 MutablePeriod test = new MutablePeriod(1, 2, 0, 4, 5, 6, 7, 8, PeriodType.yearMonthDayTime());
1276 try {
1277 test.add(new Period(1, 2, 3, 4, 5, 6, 7, 8));
1278 fail();
1279 } catch (IllegalArgumentException ex) {}
1280 assertEquals(1, test.getYears());
1281 assertEquals(2, test.getMonths());
1282 assertEquals(0, test.getWeeks());
1283 assertEquals(4, test.getDays());
1284 assertEquals(5, test.getHours());
1285 assertEquals(6, test.getMinutes());
1286 assertEquals(7, test.getSeconds());
1287 assertEquals(8, test.getMillis());
1288 }
1289
1290 public void testAdd_RP5() {
1291 MutablePeriod test = new MutablePeriod(1, 2, 0, 4, 5, 6, 7, 8, PeriodType.yearMonthDayTime());
1292 test.add(new Period(1, 2, 0, 4, 5, 6, 7, 8));
1293 assertEquals(2, test.getYears());
1294 assertEquals(4, test.getMonths());
1295 assertEquals(0, test.getWeeks());
1296 assertEquals(8, test.getDays());
1297 assertEquals(10, test.getHours());
1298 assertEquals(12, test.getMinutes());
1299 assertEquals(14, test.getSeconds());
1300 assertEquals(16, test.getMillis());
1301 }
1302
1303 public void testAdd_RP6() {
1304 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1305 test.add((ReadablePeriod) null);
1306 assertEquals(1, test.getYears());
1307 assertEquals(2, test.getMonths());
1308 assertEquals(3, test.getWeeks());
1309 assertEquals(4, test.getDays());
1310 assertEquals(5, test.getHours());
1311 assertEquals(6, test.getMinutes());
1312 assertEquals(7, test.getSeconds());
1313 assertEquals(8, test.getMillis());
1314 }
1315
1316
1317 public void testAdd_RInterval1() {
1318 MutablePeriod test = new MutablePeriod(100L);
1319 test.add(new Interval(100L, 200L));
1320 assertEquals(0, test.getYears());
1321 assertEquals(0, test.getMonths());
1322 assertEquals(0, test.getWeeks());
1323 assertEquals(0, test.getDays());
1324 assertEquals(0, test.getHours());
1325 assertEquals(0, test.getMinutes());
1326 assertEquals(0, test.getSeconds());
1327 assertEquals(200, test.getMillis());
1328 }
1329
1330 public void testAdd_RInterval2() {
1331 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0);
1332 DateTime dt2 = new DateTime(2005, 12, 18, 0, 0, 0, 8);
1333 MutablePeriod test = new MutablePeriod(100L);
1334 test.add(new Interval(dt1, dt2));
1335 assertEquals(1, test.getYears());
1336 assertEquals(6, test.getMonths());
1337 assertEquals(1, test.getWeeks());
1338 assertEquals(2, test.getDays());
1339 assertEquals(0, test.getHours());
1340 assertEquals(0, test.getMinutes());
1341 assertEquals(0, test.getSeconds());
1342 assertEquals(108, test.getMillis());
1343 }
1344
1345 public void testAdd_RInterval3() {
1346 MutablePeriod test = new MutablePeriod(100L, PeriodType.yearMonthDayTime());
1347 test.add(new Interval(0L, 0L));
1348 assertEquals(0, test.getYears());
1349 assertEquals(0, test.getMonths());
1350 assertEquals(0, test.getWeeks());
1351 assertEquals(0, test.getDays());
1352 assertEquals(0, test.getHours());
1353 assertEquals(0, test.getMinutes());
1354 assertEquals(0, test.getSeconds());
1355 assertEquals(100, test.getMillis());
1356 }
1357
1358 public void testAdd_RInterval4() {
1359 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0);
1360 DateTime dt2 = new DateTime(2005, 7, 17, 0, 0, 0, 8);
1361 MutablePeriod test = new MutablePeriod(100L, PeriodType.yearMonthDayTime());
1362 test.add(new Interval(dt1, dt2));
1363 assertEquals(1, test.getYears());
1364 assertEquals(1, test.getMonths());
1365 assertEquals(0, test.getWeeks());
1366 assertEquals(8, test.getDays());
1367 assertEquals(0, test.getHours());
1368 assertEquals(0, test.getMinutes());
1369 assertEquals(0, test.getSeconds());
1370 assertEquals(108, test.getMillis());
1371 }
1372
1373 public void testAdd_RInterval5() {
1374 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1375 test.add((ReadableInterval) null);
1376 assertEquals(1, test.getYears());
1377 assertEquals(2, test.getMonths());
1378 assertEquals(3, test.getWeeks());
1379 assertEquals(4, test.getDays());
1380 assertEquals(5, test.getHours());
1381 assertEquals(6, test.getMinutes());
1382 assertEquals(7, test.getSeconds());
1383 assertEquals(8, test.getMillis());
1384 }
1385
1386
1387 public void testMergePeriod_RP1() {
1388 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1389 test.mergePeriod(new MutablePeriod(0, 0, 0, 14, 15, 16, 17, 18, PeriodType.dayTime()));
1390 assertEquals(1, test.getYears());
1391 assertEquals(2, test.getMonths());
1392 assertEquals(3, test.getWeeks());
1393 assertEquals(14, test.getDays());
1394 assertEquals(15, test.getHours());
1395 assertEquals(16, test.getMinutes());
1396 assertEquals(17, test.getSeconds());
1397 assertEquals(18, test.getMillis());
1398 }
1399
1400 public void testMergePeriod_RP2() {
1401 MutablePeriod test = new MutablePeriod(100L, PeriodType.millis());
1402 try {
1403 test.mergePeriod(new MutablePeriod(11, 12, 13, 14, 15, 16, 17, 18));
1404 fail();
1405 } catch (IllegalArgumentException ex) {}
1406 assertEquals(0, test.getYears());
1407 assertEquals(0, test.getMonths());
1408 assertEquals(0, test.getWeeks());
1409 assertEquals(0, test.getDays());
1410 assertEquals(0, test.getHours());
1411 assertEquals(0, test.getMinutes());
1412 assertEquals(0, test.getSeconds());
1413 assertEquals(100, test.getMillis());
1414 }
1415
1416 public void testMergePeriod_RP3() {
1417 MutablePeriod test = new MutablePeriod(100L, PeriodType.millis());
1418 test.mergePeriod(new MutablePeriod(0, 0, 0, 0, 0, 0, 0, 18));
1419 assertEquals(0, test.getYears());
1420 assertEquals(0, test.getMonths());
1421 assertEquals(0, test.getWeeks());
1422 assertEquals(0, test.getDays());
1423 assertEquals(0, test.getHours());
1424 assertEquals(0, test.getMinutes());
1425 assertEquals(0, test.getSeconds());
1426 assertEquals(18, test.getMillis());
1427 }
1428
1429 public void testMergePeriod_RP4() {
1430 MutablePeriod test = new MutablePeriod(0, 0, 0, 0, 5, 6, 7, 8);
1431 test.mergePeriod(new MutablePeriod(11, 12, 13, 14, 15, 16, 17, 18));
1432 assertEquals(11, test.getYears());
1433 assertEquals(12, test.getMonths());
1434 assertEquals(13, test.getWeeks());
1435 assertEquals(14, test.getDays());
1436 assertEquals(15, test.getHours());
1437 assertEquals(16, test.getMinutes());
1438 assertEquals(17, test.getSeconds());
1439 assertEquals(18, test.getMillis());
1440 }
1441
1442 public void testMergePeriod_RP5() {
1443 MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
1444 test.mergePeriod((ReadablePeriod) null);
1445 assertEquals(1, test.getYears());
1446 assertEquals(2, test.getMonths());
1447 assertEquals(3, test.getWeeks());
1448 assertEquals(4, test.getDays());
1449 assertEquals(5, test.getHours());
1450 assertEquals(6, test.getMinutes());
1451 assertEquals(7, test.getSeconds());
1452 assertEquals(8, test.getMillis());
1453 }
1454
1455 }