test/java/time/tck/java/time/temporal/TestChronoLocalDateTime.java

Print this page

        

*** 61,95 **** import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; - import java.util.ArrayList; - import java.util.List; - import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; ! import java.time.temporal.Chrono; ! import java.time.temporal.ChronoLocalDateTime; import java.time.temporal.ChronoUnit; - import java.time.temporal.SimplePeriod; import java.time.temporal.Temporal; import java.time.temporal.TemporalAccessor; - import java.time.format.DateTimeBuilder; - import java.time.temporal.TemporalAdder; import java.time.temporal.TemporalAdjuster; import java.time.temporal.TemporalField; - import java.time.temporal.TemporalSubtractor; - import java.time.temporal.ValueRange; import java.time.temporal.TemporalUnit; ! import java.time.temporal.ISOChrono; ! import java.time.calendar.HijrahChrono; ! import java.time.calendar.JapaneseChrono; ! import java.time.calendar.MinguoChrono; ! import java.time.calendar.ThaiBuddhistChrono; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; --- 61,92 ---- import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; ! import java.time.chrono.HijrahChronology; ! import java.time.chrono.JapaneseChronology; ! import java.time.chrono.MinguoChronology; ! import java.time.chrono.ThaiBuddhistChronology; ! import java.time.chrono.ChronoLocalDate; ! import java.time.chrono.ChronoLocalDateTime; ! import java.time.chrono.Chronology; ! import java.time.chrono.IsoChronology; import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalAdjuster; + import java.time.temporal.TemporalAmount; import java.time.temporal.TemporalField; import java.time.temporal.TemporalUnit; ! import java.time.temporal.ValueRange; ! import java.util.ArrayList; ! import java.util.List; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test;
*** 101,125 **** //----------------------------------------------------------------------- // regular data factory for names and descriptions of available calendars //----------------------------------------------------------------------- @DataProvider(name = "calendars") ! Chrono<?>[][] data_of_calendars() { ! return new Chrono<?>[][]{ ! {HijrahChrono.INSTANCE}, ! {ISOChrono.INSTANCE}, ! {JapaneseChrono.INSTANCE}, ! {MinguoChrono.INSTANCE}, ! {ThaiBuddhistChrono.INSTANCE}}; } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badWithAdjusterChrono(Chrono<?> chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chrono<?>[] clist : data_of_calendars()) { ! Chrono<?> chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalAdjuster adjuster = new FixedAdjuster(cdt2); if (chrono != chrono2) { try { cdt.with(adjuster); --- 98,122 ---- //----------------------------------------------------------------------- // regular data factory for names and descriptions of available calendars //----------------------------------------------------------------------- @DataProvider(name = "calendars") ! Chronology[][] data_of_calendars() { ! return new Chronology[][]{ ! {HijrahChronology.INSTANCE}, ! {IsoChronology.INSTANCE}, ! {JapaneseChronology.INSTANCE}, ! {MinguoChronology.INSTANCE}, ! {ThaiBuddhistChronology.INSTANCE}}; } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badWithAdjusterChrono(Chronology chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chronology[] clist : data_of_calendars()) { ! Chronology chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalAdjuster adjuster = new FixedAdjuster(cdt2); if (chrono != chrono2) { try { cdt.with(adjuster);
*** 135,151 **** } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badPlusAdjusterChrono(Chrono<?> chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chrono<?>[] clist : data_of_calendars()) { ! Chrono<?> chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); ! TemporalAdder adjuster = new FixedAdjuster(cdt2); if (chrono != chrono2) { try { cdt.plus(adjuster); Assert.fail("WithAdjuster should have thrown a ClassCastException, " + "required: " + cdt + ", supplied: " + cdt2); --- 132,148 ---- } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badPlusAdjusterChrono(Chronology chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chronology[] clist : data_of_calendars()) { ! Chronology chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); ! TemporalAmount adjuster = new FixedAdjuster(cdt2); if (chrono != chrono2) { try { cdt.plus(adjuster); Assert.fail("WithAdjuster should have thrown a ClassCastException, " + "required: " + cdt + ", supplied: " + cdt2);
*** 159,175 **** } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badMinusAdjusterChrono(Chrono<?> chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chrono<?>[] clist : data_of_calendars()) { ! Chrono<?> chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); ! TemporalSubtractor adjuster = new FixedAdjuster(cdt2); if (chrono != chrono2) { try { cdt.minus(adjuster); Assert.fail("WithAdjuster should have thrown a ClassCastException, " + "required: " + cdt + ", supplied: " + cdt2); --- 156,172 ---- } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badMinusAdjusterChrono(Chronology chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chronology[] clist : data_of_calendars()) { ! Chronology chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); ! TemporalAmount adjuster = new FixedAdjuster(cdt2); if (chrono != chrono2) { try { cdt.minus(adjuster); Assert.fail("WithAdjuster should have thrown a ClassCastException, " + "required: " + cdt + ", supplied: " + cdt2);
*** 183,197 **** } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badPlusTemporalUnitChrono(Chrono<?> chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chrono<?>[] clist : data_of_calendars()) { ! Chrono<?> chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalUnit adjuster = new FixedTemporalUnit(cdt2); if (chrono != chrono2) { try { cdt.plus(1, adjuster); --- 180,194 ---- } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badPlusTemporalUnitChrono(Chronology chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chronology[] clist : data_of_calendars()) { ! Chronology chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalUnit adjuster = new FixedTemporalUnit(cdt2); if (chrono != chrono2) { try { cdt.plus(1, adjuster);
*** 207,221 **** } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badMinusTemporalUnitChrono(Chrono<?> chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chrono<?>[] clist : data_of_calendars()) { ! Chrono<?> chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalUnit adjuster = new FixedTemporalUnit(cdt2); if (chrono != chrono2) { try { cdt.minus(1, adjuster); --- 204,218 ---- } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badMinusTemporalUnitChrono(Chronology chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chronology[] clist : data_of_calendars()) { ! Chronology chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalUnit adjuster = new FixedTemporalUnit(cdt2); if (chrono != chrono2) { try { cdt.minus(1, adjuster);
*** 231,245 **** } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badTemporalFieldChrono(Chrono<?> chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chrono<?>[] clist : data_of_calendars()) { ! Chrono<?> chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalField adjuster = new FixedTemporalField(cdt2); if (chrono != chrono2) { try { cdt.with(adjuster, 1); --- 228,242 ---- } } } @Test(groups={"tck"}, dataProvider="calendars") ! public void test_badTemporalFieldChrono(Chronology chrono) { LocalDate refDate = LocalDate.of(1900, 1, 1); ChronoLocalDateTime<?> cdt = chrono.date(refDate).atTime(LocalTime.NOON); ! for (Chronology[] clist : data_of_calendars()) { ! Chronology chrono2 = clist[0]; ChronoLocalDateTime<?> cdt2 = chrono2.date(refDate).atTime(LocalTime.NOON); TemporalField adjuster = new FixedTemporalField(cdt2); if (chrono != chrono2) { try { cdt.with(adjuster, 1);
*** 258,268 **** //----------------------------------------------------------------------- // isBefore, isAfter, isEqual //----------------------------------------------------------------------- @Test(groups={"tck"}, dataProvider="calendars") ! public void test_datetime_comparisons(Chrono<?> chrono) { List<ChronoLocalDateTime<?>> dates = new ArrayList<>(); ChronoLocalDateTime<?> date = chrono.date(LocalDate.of(1900, 1, 1)).atTime(LocalTime.MIN); // Insert dates in order, no duplicates --- 255,265 ---- //----------------------------------------------------------------------- // isBefore, isAfter, isEqual //----------------------------------------------------------------------- @Test(groups={"tck"}, dataProvider="calendars") ! public void test_datetime_comparisons(Chronology chrono) { List<ChronoLocalDateTime<?>> dates = new ArrayList<>(); ChronoLocalDateTime<?> date = chrono.date(LocalDate.of(1900, 1, 1)).atTime(LocalTime.MIN); // Insert dates in order, no duplicates
*** 285,299 **** dates.add(date.plus(1, ChronoUnit.MONTHS)); dates.add(date.plus(1, ChronoUnit.YEARS)); dates.add(date.plus(100, ChronoUnit.YEARS)); // Check these dates against the corresponding dates for every calendar ! for (Chrono<?>[] clist : data_of_calendars()) { List<ChronoLocalDateTime<?>> otherDates = new ArrayList<>(); ! Chrono<?> chrono2 = clist[0]; for (ChronoLocalDateTime<?> d : dates) { ! otherDates.add(chrono2.date(d).atTime(d.getTime())); } // Now compare the sequence of original dates with the sequence of converted dates for (int i = 0; i < dates.size(); i++) { ChronoLocalDateTime<?> a = dates.get(i); --- 282,296 ---- dates.add(date.plus(1, ChronoUnit.MONTHS)); dates.add(date.plus(1, ChronoUnit.YEARS)); dates.add(date.plus(100, ChronoUnit.YEARS)); // Check these dates against the corresponding dates for every calendar ! for (Chronology[] clist : data_of_calendars()) { List<ChronoLocalDateTime<?>> otherDates = new ArrayList<>(); ! Chronology chrono2 = clist[0]; for (ChronoLocalDateTime<?> d : dates) { ! otherDates.add(chrono2.date(d).atTime(d.toLocalTime())); } // Now compare the sequence of original dates with the sequence of converted dates for (int i = 0; i < dates.size(); i++) { ChronoLocalDateTime<?> a = dates.get(i);
*** 323,351 **** //----------------------------------------------------------------------- // Test Serialization of ISO via chrono API //----------------------------------------------------------------------- @Test( groups={"tck"}, dataProvider="calendars") ! public <C extends Chrono<C>> void test_ChronoLocalDateTimeSerialization(C chrono) throws Exception { LocalDateTime ref = LocalDate.of(2000, 1, 5).atTime(12, 1, 2, 3); ! ChronoLocalDateTime<C> orginal = chrono.date(ref).atTime(ref.getTime()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(orginal); out.close(); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream in = new ObjectInputStream(bais); @SuppressWarnings("unchecked") ! ChronoLocalDateTime<C> ser = (ChronoLocalDateTime<C>) in.readObject(); assertEquals(ser, orginal, "deserialized date is wrong"); } /** * FixedAdjusted returns a fixed Temporal in all adjustments. * Construct an adjuster with the Temporal that should be returned from adjust. */ ! static class FixedAdjuster implements TemporalAdjuster, TemporalAdder, TemporalSubtractor { private Temporal datetime; FixedAdjuster(Temporal datetime) { this.datetime = datetime; } --- 320,348 ---- //----------------------------------------------------------------------- // Test Serialization of ISO via chrono API //----------------------------------------------------------------------- @Test( groups={"tck"}, dataProvider="calendars") ! public void test_ChronoLocalDateTimeSerialization(Chronology chrono) throws Exception { LocalDateTime ref = LocalDate.of(2000, 1, 5).atTime(12, 1, 2, 3); ! ChronoLocalDateTime<?> orginal = chrono.date(ref).atTime(ref.toLocalTime()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(orginal); out.close(); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream in = new ObjectInputStream(bais); @SuppressWarnings("unchecked") ! ChronoLocalDateTime<?> ser = (ChronoLocalDateTime<?>) in.readObject(); assertEquals(ser, orginal, "deserialized date is wrong"); } /** * FixedAdjusted returns a fixed Temporal in all adjustments. * Construct an adjuster with the Temporal that should be returned from adjust. */ ! static class FixedAdjuster implements TemporalAdjuster, TemporalAmount { private Temporal datetime; FixedAdjuster(Temporal datetime) { this.datetime = datetime; }
*** 363,377 **** @Override public Temporal subtractFrom(Temporal ignore) { return datetime; } } /** * FixedTemporalUnit returns a fixed Temporal in all adjustments. ! * Construct an FixedTemporalUnit with the Temporal that should be returned from doPlus. */ static class FixedTemporalUnit implements TemporalUnit { private Temporal temporal; FixedTemporalUnit(Temporal temporal) { --- 360,384 ---- @Override public Temporal subtractFrom(Temporal ignore) { return datetime; } + @Override + public long get(TemporalUnit unit) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public List<TemporalUnit> getUnits() { + throw new UnsupportedOperationException("Not supported yet."); + } + } /** * FixedTemporalUnit returns a fixed Temporal in all adjustments. ! * Construct an FixedTemporalUnit with the Temporal that should be returned from addTo. */ static class FixedTemporalUnit implements TemporalUnit { private Temporal temporal; FixedTemporalUnit(Temporal temporal) {
*** 392,420 **** public boolean isDurationEstimated() { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public boolean isSupported(Temporal temporal) { throw new UnsupportedOperationException("Not supported yet."); } @SuppressWarnings("unchecked") @Override ! public <R extends Temporal> R doPlus(R dateTime, long periodToAdd) { return (R) this.temporal; } @Override ! public <R extends Temporal> SimplePeriod between(R dateTime1, R dateTime2) { throw new UnsupportedOperationException("Not supported yet."); } } /** * FixedTemporalField returns a fixed Temporal in all adjustments. ! * Construct an FixedTemporalField with the Temporal that should be returned from doWith. */ static class FixedTemporalField implements TemporalField { private Temporal temporal; FixedTemporalField(Temporal temporal) { this.temporal = temporal; --- 399,427 ---- public boolean isDurationEstimated() { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public boolean isSupportedBy(Temporal temporal) { throw new UnsupportedOperationException("Not supported yet."); } @SuppressWarnings("unchecked") @Override ! public <R extends Temporal> R addTo(R temporal, long amount) { return (R) this.temporal; } @Override ! public long between(Temporal temporal1, Temporal temporal2) { throw new UnsupportedOperationException("Not supported yet."); } } /** * FixedTemporalField returns a fixed Temporal in all adjustments. ! * Construct an FixedTemporalField with the Temporal that should be returned from adjustInto. */ static class FixedTemporalField implements TemporalField { private Temporal temporal; FixedTemporalField(Temporal temporal) { this.temporal = temporal;
*** 439,470 **** public ValueRange range() { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public boolean doIsSupported(TemporalAccessor temporal) { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public ValueRange doRange(TemporalAccessor temporal) { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public long doGet(TemporalAccessor temporal) { throw new UnsupportedOperationException("Not supported yet."); } @SuppressWarnings("unchecked") @Override ! public <R extends Temporal> R doWith(R temporal, long newValue) { return (R) this.temporal; } - - @Override - public boolean resolve(DateTimeBuilder builder, long value) { - throw new UnsupportedOperationException("Not supported yet."); - } - } } --- 446,471 ---- public ValueRange range() { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public boolean isSupportedBy(TemporalAccessor temporal) { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public ValueRange rangeRefinedBy(TemporalAccessor temporal) { throw new UnsupportedOperationException("Not supported yet."); } @Override ! public long getFrom(TemporalAccessor temporal) { throw new UnsupportedOperationException("Not supported yet."); } @SuppressWarnings("unchecked") @Override ! public <R extends Temporal> R adjustInto(R temporal, long newValue) { return (R) this.temporal; } } }