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;
}
}
}