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.field;
017
018 import java.util.Arrays;
019 import java.util.Locale;
020
021 import junit.framework.TestCase;
022 import junit.framework.TestSuite;
023
024 import org.joda.time.DateTimeFieldType;
025 import org.joda.time.DurationField;
026 import org.joda.time.DurationFieldType;
027 import org.joda.time.TimeOfDay;
028 import org.joda.time.chrono.ISOChronology;
029
030 /**
031 * This class is a Junit unit test for PreciseDurationDateTimeField.
032 *
033 * @author Stephen Colebourne
034 */
035 public class TestPreciseDurationDateTimeField extends TestCase {
036
037 public static void main(String[] args) {
038 junit.textui.TestRunner.run(suite());
039 }
040
041 public static TestSuite suite() {
042 return new TestSuite(TestPreciseDurationDateTimeField.class);
043 }
044
045 public TestPreciseDurationDateTimeField(String name) {
046 super(name);
047 }
048
049 protected void setUp() throws Exception {
050 }
051
052 protected void tearDown() throws Exception {
053 }
054
055 //-----------------------------------------------------------------------
056 public void test_constructor() {
057 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
058 assertEquals(DateTimeFieldType.secondOfMinute(), field.getType());
059 try {
060 field = new MockPreciseDurationDateTimeField(null, null);
061 fail();
062 } catch (IllegalArgumentException ex) {}
063 try {
064 field = new MockPreciseDurationDateTimeField(
065 DateTimeFieldType.minuteOfHour(),
066 new MockImpreciseDurationField(DurationFieldType.minutes()));
067 fail();
068 } catch (IllegalArgumentException ex) {}
069 try {
070 field = new MockPreciseDurationDateTimeField(
071 DateTimeFieldType.minuteOfHour(),
072 new MockZeroDurationField(DurationFieldType.minutes()));
073 fail();
074 } catch (IllegalArgumentException ex) {}
075 }
076
077 public void test_getType() {
078 BaseDateTimeField field = new MockPreciseDurationDateTimeField(
079 DateTimeFieldType.secondOfDay(), new MockCountingDurationField(DurationFieldType.minutes()));
080 assertEquals(DateTimeFieldType.secondOfDay(), field.getType());
081 }
082
083 public void test_getName() {
084 BaseDateTimeField field = new MockPreciseDurationDateTimeField(
085 DateTimeFieldType.secondOfDay(), new MockCountingDurationField(DurationFieldType.minutes()));
086 assertEquals("secondOfDay", field.getName());
087 }
088
089 public void test_toString() {
090 BaseDateTimeField field = new MockPreciseDurationDateTimeField(
091 DateTimeFieldType.secondOfDay(), new MockCountingDurationField(DurationFieldType.minutes()));
092 assertEquals("DateTimeField[secondOfDay]", field.toString());
093 }
094
095 public void test_isSupported() {
096 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
097 assertEquals(true, field.isSupported());
098 }
099
100 public void test_isLenient() {
101 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
102 assertEquals(false, field.isLenient());
103 }
104
105 public void test_get() {
106 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
107 assertEquals(0, field.get(0));
108 assertEquals(1, field.get(60));
109 assertEquals(2, field.get(123));
110 }
111
112 //-----------------------------------------------------------------------
113 public void test_getAsText_long_Locale() {
114 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
115 assertEquals("29", field.getAsText(60L * 29, Locale.ENGLISH));
116 assertEquals("29", field.getAsText(60L * 29, null));
117 }
118
119 public void test_getAsText_long() {
120 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
121 assertEquals("29", field.getAsText(60L * 29));
122 }
123
124 public void test_getAsText_RP_int_Locale() {
125 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
126 assertEquals("20", field.getAsText(new TimeOfDay(12, 30, 40, 50), 20, Locale.ENGLISH));
127 assertEquals("20", field.getAsText(new TimeOfDay(12, 30, 40, 50), 20, null));
128 }
129
130 public void test_getAsText_RP_Locale() {
131 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
132 assertEquals("40", field.getAsText(new TimeOfDay(12, 30, 40, 50), Locale.ENGLISH));
133 assertEquals("40", field.getAsText(new TimeOfDay(12, 30, 40, 50), null));
134 }
135
136 public void test_getAsText_int_Locale() {
137 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
138 assertEquals("80", field.getAsText(80, Locale.ENGLISH));
139 assertEquals("80", field.getAsText(80, null));
140 }
141
142 //-----------------------------------------------------------------------
143 public void test_getAsShortText_long_Locale() {
144 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
145 assertEquals("29", field.getAsShortText(60L * 29, Locale.ENGLISH));
146 assertEquals("29", field.getAsShortText(60L * 29, null));
147 }
148
149 public void test_getAsShortText_long() {
150 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
151 assertEquals("29", field.getAsShortText(60L * 29));
152 }
153
154 public void test_getAsShortText_RP_int_Locale() {
155 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
156 assertEquals("20", field.getAsShortText(new TimeOfDay(12, 30, 40, 50), 20, Locale.ENGLISH));
157 assertEquals("20", field.getAsShortText(new TimeOfDay(12, 30, 40, 50), 20, null));
158 }
159
160 public void test_getAsShortText_RP_Locale() {
161 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
162 assertEquals("40", field.getAsShortText(new TimeOfDay(12, 30, 40, 50), Locale.ENGLISH));
163 assertEquals("40", field.getAsShortText(new TimeOfDay(12, 30, 40, 50), null));
164 }
165
166 public void test_getAsShortText_int_Locale() {
167 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
168 assertEquals("80", field.getAsShortText(80, Locale.ENGLISH));
169 assertEquals("80", field.getAsShortText(80, null));
170 }
171
172 //-----------------------------------------------------------------------
173 public void test_add_long_int() {
174 MockCountingDurationField.add_int = 0;
175 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
176 assertEquals(61, field.add(1L, 1));
177 assertEquals(1, MockCountingDurationField.add_int);
178 }
179
180 public void test_add_long_long() {
181 MockCountingDurationField.add_long = 0;
182 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
183 assertEquals(61, field.add(1L, 1L));
184 assertEquals(1, MockCountingDurationField.add_long);
185 }
186
187 public void test_add_RP_int_intarray_int() {
188 int[] values = new int[] {10, 20, 30, 40};
189 int[] expected = new int[] {10, 20, 30, 40};
190 BaseDateTimeField field = new MockStandardBaseDateTimeField();
191 int[] result = field.add(new TimeOfDay(), 2, values, 0);
192 assertEquals(true, Arrays.equals(expected, result));
193
194 values = new int[] {10, 20, 30, 40};
195 expected = new int[] {10, 20, 31, 40};
196 result = field.add(new TimeOfDay(), 2, values, 1);
197 assertEquals(true, Arrays.equals(expected, result));
198
199 values = new int[] {10, 20, 30, 40};
200 expected = new int[] {10, 21, 0, 40};
201 result = field.add(new TimeOfDay(), 2, values, 30);
202 assertEquals(true, Arrays.equals(expected, result));
203
204 values = new int[] {23, 59, 30, 40};
205 try {
206 field.add(new TimeOfDay(), 2, values, 30);
207 fail();
208 } catch (IllegalArgumentException ex) {}
209
210 values = new int[] {10, 20, 30, 40};
211 expected = new int[] {10, 20, 29, 40};
212 result = field.add(new TimeOfDay(), 2, values, -1);
213 assertEquals(true, Arrays.equals(expected, result));
214
215 values = new int[] {10, 20, 30, 40};
216 expected = new int[] {10, 19, 59, 40};
217 result = field.add(new TimeOfDay(), 2, values, -31);
218 assertEquals(true, Arrays.equals(expected, result));
219
220 values = new int[] {0, 0, 30, 40};
221 try {
222 field.add(new TimeOfDay(), 2, values, -31);
223 fail();
224 } catch (IllegalArgumentException ex) {}
225 }
226
227 //-----------------------------------------------------------------------
228 public void test_addWrapField_long_int() {
229 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
230 assertEquals(29 * 60L, field.addWrapField(60L * 29, 0));
231 assertEquals(59 * 60L, field.addWrapField(60L * 29, 30));
232 assertEquals(0 * 60L, field.addWrapField(60L * 29, 31));
233 }
234
235 public void test_addWrapField_RP_int_intarray_int() {
236 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
237 int[] values = new int[] {10, 20, 30, 40};
238 int[] expected = new int[] {10, 20, 30, 40};
239 int[] result = field.addWrapField(new TimeOfDay(), 2, values, 0);
240 assertEquals(true, Arrays.equals(result, expected));
241
242 values = new int[] {10, 20, 30, 40};
243 expected = new int[] {10, 20, 59, 40};
244 result = field.addWrapField(new TimeOfDay(), 2, values, 29);
245 assertEquals(true, Arrays.equals(result, expected));
246
247 values = new int[] {10, 20, 30, 40};
248 expected = new int[] {10, 20, 0, 40};
249 result = field.addWrapField(new TimeOfDay(), 2, values, 30);
250 assertEquals(true, Arrays.equals(result, expected));
251
252 values = new int[] {10, 20, 30, 40};
253 expected = new int[] {10, 20, 1, 40};
254 result = field.addWrapField(new TimeOfDay(), 2, values, 31);
255 assertEquals(true, Arrays.equals(result, expected));
256 }
257
258 //-----------------------------------------------------------------------
259 public void test_getDifference_long_long() {
260 MockCountingDurationField.difference_long = 0;
261 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
262 assertEquals(30, field.getDifference(0L, 0L));
263 assertEquals(1, MockCountingDurationField.difference_long);
264 }
265
266 public void test_getDifferenceAsLong_long_long() {
267 MockCountingDurationField.difference_long = 0;
268 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
269 assertEquals(30, field.getDifferenceAsLong(0L, 0L));
270 assertEquals(1, MockCountingDurationField.difference_long);
271 }
272
273 //-----------------------------------------------------------------------
274 public void test_set_long_int() {
275 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
276 assertEquals(0, field.set(120L, 0));
277 assertEquals(29 * 60, field.set(120L, 29));
278 }
279
280 public void test_set_RP_int_intarray_int() {
281 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
282 int[] values = new int[] {10, 20, 30, 40};
283 int[] expected = new int[] {10, 20, 30, 40};
284 int[] result = field.set(new TimeOfDay(), 2, values, 30);
285 assertEquals(true, Arrays.equals(result, expected));
286
287 values = new int[] {10, 20, 30, 40};
288 expected = new int[] {10, 20, 29, 40};
289 result = field.set(new TimeOfDay(), 2, values, 29);
290 assertEquals(true, Arrays.equals(result, expected));
291
292 values = new int[] {10, 20, 30, 40};
293 expected = new int[] {10, 20, 30, 40};
294 try {
295 field.set(new TimeOfDay(), 2, values, 60);
296 fail();
297 } catch (IllegalArgumentException ex) {}
298 assertEquals(true, Arrays.equals(values, expected));
299
300 values = new int[] {10, 20, 30, 40};
301 expected = new int[] {10, 20, 30, 40};
302 try {
303 field.set(new TimeOfDay(), 2, values, -1);
304 fail();
305 } catch (IllegalArgumentException ex) {}
306 assertEquals(true, Arrays.equals(values, expected));
307 }
308
309 public void test_set_long_String_Locale() {
310 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
311 assertEquals(0, field.set(0L, "0", null));
312 assertEquals(29 * 60, field.set(0L, "29", Locale.ENGLISH));
313 }
314
315 public void test_set_long_String() {
316 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
317 assertEquals(0, field.set(0L, "0"));
318 assertEquals(29 * 60, field.set(0L, "29"));
319 }
320
321 public void test_set_RP_int_intarray_String_Locale() {
322 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
323 int[] values = new int[] {10, 20, 30, 40};
324 int[] expected = new int[] {10, 20, 30, 40};
325 int[] result = field.set(new TimeOfDay(), 2, values, "30", null);
326 assertEquals(true, Arrays.equals(result, expected));
327
328 values = new int[] {10, 20, 30, 40};
329 expected = new int[] {10, 20, 29, 40};
330 result = field.set(new TimeOfDay(), 2, values, "29", Locale.ENGLISH);
331 assertEquals(true, Arrays.equals(result, expected));
332
333 values = new int[] {10, 20, 30, 40};
334 expected = new int[] {10, 20, 30, 40};
335 try {
336 field.set(new TimeOfDay(), 2, values, "60", null);
337 fail();
338 } catch (IllegalArgumentException ex) {}
339 assertEquals(true, Arrays.equals(values, expected));
340
341 values = new int[] {10, 20, 30, 40};
342 expected = new int[] {10, 20, 30, 40};
343 try {
344 field.set(new TimeOfDay(), 2, values, "-1", null);
345 fail();
346 } catch (IllegalArgumentException ex) {}
347 assertEquals(true, Arrays.equals(values, expected));
348 }
349
350 public void test_convertText() {
351 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
352 assertEquals(0, field.convertText("0", null));
353 assertEquals(29, field.convertText("29", null));
354 try {
355 field.convertText("2A", null);
356 fail();
357 } catch (IllegalArgumentException ex) {}
358 try {
359 field.convertText(null, null);
360 fail();
361 } catch (IllegalArgumentException ex) {}
362 }
363
364 //------------------------------------------------------------------------
365 // public abstract DurationField getDurationField();
366 //
367 // public abstract DurationField getRangeDurationField();
368
369 public void test_isLeap_long() {
370 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
371 assertEquals(false, field.isLeap(0L));
372 }
373
374 public void test_getLeapAmount_long() {
375 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
376 assertEquals(0, field.getLeapAmount(0L));
377 }
378
379 public void test_getLeapDurationField() {
380 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
381 assertEquals(null, field.getLeapDurationField());
382 }
383
384 //-----------------------------------------------------------------------
385 public void test_getMinimumValue() {
386 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
387 assertEquals(0, field.getMinimumValue());
388 }
389
390 public void test_getMinimumValue_long() {
391 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
392 assertEquals(0, field.getMinimumValue(0L));
393 }
394
395 public void test_getMinimumValue_RP() {
396 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
397 assertEquals(0, field.getMinimumValue(new TimeOfDay()));
398 }
399
400 public void test_getMinimumValue_RP_intarray() {
401 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
402 assertEquals(0, field.getMinimumValue(new TimeOfDay(), new int[4]));
403 }
404
405 public void test_getMaximumValue() {
406 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
407 assertEquals(59, field.getMaximumValue());
408 }
409
410 public void test_getMaximumValue_long() {
411 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
412 assertEquals(59, field.getMaximumValue(0L));
413 }
414
415 public void test_getMaximumValue_RP() {
416 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
417 assertEquals(59, field.getMaximumValue(new TimeOfDay()));
418 }
419
420 public void test_getMaximumValue_RP_intarray() {
421 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
422 assertEquals(59, field.getMaximumValue(new TimeOfDay(), new int[4]));
423 }
424
425 //-----------------------------------------------------------------------
426 public void test_getMaximumTextLength_Locale() {
427 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
428 assertEquals(2, field.getMaximumTextLength(Locale.ENGLISH));
429
430 field = new MockPreciseDurationDateTimeField() {
431 public int getMaximumValue() {
432 return 5;
433 }
434 };
435 assertEquals(1, field.getMaximumTextLength(Locale.ENGLISH));
436
437 field = new MockPreciseDurationDateTimeField() {
438 public int getMaximumValue() {
439 return 555;
440 }
441 };
442 assertEquals(3, field.getMaximumTextLength(Locale.ENGLISH));
443
444 field = new MockPreciseDurationDateTimeField() {
445 public int getMaximumValue() {
446 return 5555;
447 }
448 };
449 assertEquals(4, field.getMaximumTextLength(Locale.ENGLISH));
450
451 field = new MockPreciseDurationDateTimeField() {
452 public int getMaximumValue() {
453 return -1;
454 }
455 };
456 assertEquals(2, field.getMaximumTextLength(Locale.ENGLISH));
457 }
458
459 public void test_getMaximumShortTextLength_Locale() {
460 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
461 assertEquals(2, field.getMaximumShortTextLength(Locale.ENGLISH));
462 }
463
464 //------------------------------------------------------------------------
465 public void test_roundFloor_long() {
466 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
467 assertEquals(-120L, field.roundFloor(-61L));
468 assertEquals(-60L, field.roundFloor(-60L));
469 assertEquals(-60L, field.roundFloor(-59L));
470 assertEquals(-60L, field.roundFloor(-1L));
471 assertEquals(0L, field.roundFloor(0L));
472 assertEquals(0L, field.roundFloor(1L));
473 assertEquals(0L, field.roundFloor(29L));
474 assertEquals(0L, field.roundFloor(30L));
475 assertEquals(0L, field.roundFloor(31L));
476 assertEquals(60L, field.roundFloor(60L));
477 }
478
479 public void test_roundCeiling_long() {
480 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
481 assertEquals(-60L, field.roundCeiling(-61L));
482 assertEquals(-60L, field.roundCeiling(-60L));
483 assertEquals(0L, field.roundCeiling(-59L));
484 assertEquals(0L, field.roundCeiling(-1L));
485 assertEquals(0L, field.roundCeiling(0L));
486 assertEquals(60L, field.roundCeiling(1L));
487 assertEquals(60L, field.roundCeiling(29L));
488 assertEquals(60L, field.roundCeiling(30L));
489 assertEquals(60L, field.roundCeiling(31L));
490 assertEquals(60L, field.roundCeiling(60L));
491 }
492
493 public void test_roundHalfFloor_long() {
494 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
495 assertEquals(0L, field.roundHalfFloor(0L));
496 assertEquals(0L, field.roundHalfFloor(29L));
497 assertEquals(0L, field.roundHalfFloor(30L));
498 assertEquals(60L, field.roundHalfFloor(31L));
499 assertEquals(60L, field.roundHalfFloor(60L));
500 }
501
502 public void test_roundHalfCeiling_long() {
503 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
504 assertEquals(0L, field.roundHalfCeiling(0L));
505 assertEquals(0L, field.roundHalfCeiling(29L));
506 assertEquals(60L, field.roundHalfCeiling(30L));
507 assertEquals(60L, field.roundHalfCeiling(31L));
508 assertEquals(60L, field.roundHalfCeiling(60L));
509 }
510
511 public void test_roundHalfEven_long() {
512 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
513 assertEquals(0L, field.roundHalfEven(0L));
514 assertEquals(0L, field.roundHalfEven(29L));
515 assertEquals(0L, field.roundHalfEven(30L));
516 assertEquals(60L, field.roundHalfEven(31L));
517 assertEquals(60L, field.roundHalfEven(60L));
518 assertEquals(60L, field.roundHalfEven(89L));
519 assertEquals(120L, field.roundHalfEven(90L));
520 assertEquals(120L, field.roundHalfEven(91L));
521 }
522
523 public void test_remainder_long() {
524 BaseDateTimeField field = new MockPreciseDurationDateTimeField();
525 assertEquals(0L, field.remainder(0L));
526 assertEquals(29L, field.remainder(29L));
527 assertEquals(30L, field.remainder(30L));
528 assertEquals(31L, field.remainder(31L));
529 assertEquals(0L, field.remainder(60L));
530 }
531
532 //-----------------------------------------------------------------------
533 static class MockPreciseDurationDateTimeField extends PreciseDurationDateTimeField {
534 protected MockPreciseDurationDateTimeField() {
535 super(DateTimeFieldType.secondOfMinute(),
536 new MockCountingDurationField(DurationFieldType.seconds()));
537 }
538 protected MockPreciseDurationDateTimeField(DateTimeFieldType type, DurationField dur) {
539 super(type, dur);
540 }
541 public int get(long instant) {
542 return (int) (instant / 60L);
543 }
544 public DurationField getRangeDurationField() {
545 return new MockCountingDurationField(DurationFieldType.minutes());
546 }
547 public int getMaximumValue() {
548 return 59;
549 }
550 }
551
552 static class MockStandardBaseDateTimeField extends MockPreciseDurationDateTimeField {
553 protected MockStandardBaseDateTimeField() {
554 super();
555 }
556 public DurationField getDurationField() {
557 return ISOChronology.getInstanceUTC().seconds();
558 }
559 public DurationField getRangeDurationField() {
560 return ISOChronology.getInstanceUTC().minutes();
561 }
562 }
563
564 //-----------------------------------------------------------------------
565 static class MockCountingDurationField extends BaseDurationField {
566 static int add_int = 0;
567 static int add_long = 0;
568 static int difference_long = 0;
569
570 protected MockCountingDurationField(DurationFieldType type) {
571 super(type);
572 }
573 public boolean isPrecise() {
574 return true;
575 }
576 public long getUnitMillis() {
577 return 60;
578 }
579 public long getValueAsLong(long duration, long instant) {
580 return 0;
581 }
582 public long getMillis(int value, long instant) {
583 return 0;
584 }
585 public long getMillis(long value, long instant) {
586 return 0;
587 }
588 public long add(long instant, int value) {
589 add_int++;
590 return instant + (value * 60L);
591 }
592 public long add(long instant, long value) {
593 add_long++;
594 return instant + (value * 60L);
595 }
596 public long getDifferenceAsLong(long minuendInstant, long subtrahendInstant) {
597 difference_long++;
598 return 30;
599 }
600 }
601
602 //-----------------------------------------------------------------------
603 static class MockZeroDurationField extends BaseDurationField {
604 protected MockZeroDurationField(DurationFieldType type) {
605 super(type);
606 }
607 public boolean isPrecise() {
608 return true;
609 }
610 public long getUnitMillis() {
611 return 0; // this is zero
612 }
613 public long getValueAsLong(long duration, long instant) {
614 return 0;
615 }
616 public long getMillis(int value, long instant) {
617 return 0;
618 }
619 public long getMillis(long value, long instant) {
620 return 0;
621 }
622 public long add(long instant, int value) {
623 return 0;
624 }
625 public long add(long instant, long value) {
626 return 0;
627 }
628 public long getDifferenceAsLong(long minuendInstant, long subtrahendInstant) {
629 return 0;
630 }
631 }
632
633 //-----------------------------------------------------------------------
634 static class MockImpreciseDurationField extends BaseDurationField {
635 protected MockImpreciseDurationField(DurationFieldType type) {
636 super(type);
637 }
638 public boolean isPrecise() {
639 return false; // this is false
640 }
641 public long getUnitMillis() {
642 return 0;
643 }
644 public long getValueAsLong(long duration, long instant) {
645 return 0;
646 }
647 public long getMillis(int value, long instant) {
648 return 0;
649 }
650 public long getMillis(long value, long instant) {
651 return 0;
652 }
653 public long add(long instant, int value) {
654 return 0;
655 }
656 public long add(long instant, long value) {
657 return 0;
658 }
659 public long getDifferenceAsLong(long minuendInstant, long subtrahendInstant) {
660 return 0;
661 }
662 }
663
664 }