|
16 | 16 |
|
17 | 17 | import static software.amazon.ion.Decimal.NEGATIVE_ZERO;
|
18 | 18 | import static software.amazon.ion.Decimal.negativeZero;
|
| 19 | +import static software.amazon.ion.Timestamp.MAXIMUM_ALLOWED_FRACTIONAL_MILLIS; |
| 20 | +import static software.amazon.ion.Timestamp.MINIMUM_ALLOWED_FRACTIONAL_MILLIS; |
19 | 21 | import static software.amazon.ion.Timestamp.UNKNOWN_OFFSET;
|
20 | 22 | import static software.amazon.ion.Timestamp.UTC_OFFSET;
|
21 | 23 | import static software.amazon.ion.Timestamp.createFromUtcFields;
|
|
32 | 34 | import java.util.Calendar;
|
33 | 35 | import java.util.Date;
|
34 | 36 | import java.util.TimeZone;
|
| 37 | +import org.junit.Ignore; |
35 | 38 | import org.junit.Test;
|
36 |
| -import software.amazon.ion.Decimal; |
37 |
| -import software.amazon.ion.IonTimestamp; |
38 |
| -import software.amazon.ion.IonType; |
39 |
| -import software.amazon.ion.IonValue; |
40 |
| -import software.amazon.ion.NullValueException; |
41 |
| -import software.amazon.ion.Timestamp; |
42 | 39 | import software.amazon.ion.Timestamp.Precision;
|
43 | 40 |
|
44 | 41 | /**
|
@@ -781,12 +778,53 @@ public void testNewTimestampFromBigDecimal()
|
781 | 778 | assertEquals("2012-01-01T12:12:30.555123Z", ts.toZString());
|
782 | 779 | }
|
783 | 780 |
|
| 781 | + @Test |
| 782 | + @Ignore // see https://github.com/amzn/ion-java/issues/160 |
| 783 | + public void testNewTimestampFromMinimumAllowedMillis() |
| 784 | + { |
| 785 | + Timestamp ts = Timestamp.forMillis(MINIMUM_ALLOWED_FRACTIONAL_MILLIS, PST_OFFSET); |
| 786 | + assertEquals("0001-01-01T00:00:00.000Z", ts.toZString()); |
| 787 | + } |
| 788 | + |
| 789 | + @Test |
| 790 | + public void testNewTimestampFromBigDecimalWithMaximumAllowedMillis() |
| 791 | + { |
| 792 | + Timestamp ts = Timestamp.forMillis(MAXIMUM_ALLOWED_FRACTIONAL_MILLIS, PST_OFFSET); |
| 793 | + checkFields(9999, 12, 31, 15, 59, 59, new BigDecimal("0.999999999999"), PST_OFFSET, SECOND, ts); |
| 794 | + assertEquals("9999-12-31T15:59:59.999999999999-08:00", ts.toString()); |
| 795 | + assertEquals("9999-12-31T23:59:59.999999999999Z", ts.toZString()); |
| 796 | + } |
784 | 797 |
|
785 |
| - @SuppressWarnings("unused") |
786 |
| - @Test (expected = NullPointerException.class) |
| 798 | + @Test(expected = NullPointerException.class) |
787 | 799 | public void testNewTimestampFromBigDecimalWithNull()
|
788 | 800 | {
|
789 |
| - Timestamp ts = Timestamp.forMillis(null, PST_OFFSET); |
| 801 | + Timestamp.forMillis(null, PST_OFFSET); |
| 802 | + } |
| 803 | + |
| 804 | + @Test(expected = IllegalArgumentException.class) |
| 805 | + public void testNewTimestampFromBigDecimalWithMillisTooSmall() |
| 806 | + { |
| 807 | + // MIN - 1 |
| 808 | + Timestamp.forMillis(MINIMUM_ALLOWED_FRACTIONAL_MILLIS.add(BigDecimal.ONE.negate()), PST_OFFSET); |
| 809 | + } |
| 810 | + |
| 811 | + @Test(expected = IllegalArgumentException.class) |
| 812 | + public void testNewTimestampFromBigDecimalWithMillisTooBig() |
| 813 | + { |
| 814 | + // Max + 1 |
| 815 | + Timestamp.forMillis(MAXIMUM_ALLOWED_FRACTIONAL_MILLIS.add(BigDecimal.ONE), PST_OFFSET); |
| 816 | + } |
| 817 | + |
| 818 | + @Test(expected = IllegalArgumentException.class) |
| 819 | + public void testNewTimestampFromBigDecimalWithScaleTooBigPositive() |
| 820 | + { |
| 821 | + Timestamp.forMillis(new BigDecimal("1e100000"), PST_OFFSET); |
| 822 | + } |
| 823 | + |
| 824 | + @Test(expected = IllegalArgumentException.class) |
| 825 | + public void testNewTimestampFromBigDecimalWithScaleTooBigNegative() |
| 826 | + { |
| 827 | + Timestamp.forMillis(new BigDecimal("1e-100000"), PST_OFFSET); |
790 | 828 | }
|
791 | 829 |
|
792 | 830 | /**
|
|
0 commit comments