test/java/time/test/java/time/temporal/TestDateTimeBuilderCombinations.java

Print this page

        

*** 69,81 **** import static java.time.temporal.ChronoField.EPOCH_DAY; import static java.time.temporal.ChronoField.EPOCH_MONTH; import static java.time.temporal.ChronoField.MONTH_OF_YEAR; import static java.time.temporal.ChronoField.YEAR; import static org.testng.Assert.assertEquals; import java.time.LocalDate; ! import java.time.format.DateTimeBuilder; import java.time.temporal.TemporalField; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; --- 69,85 ---- import static java.time.temporal.ChronoField.EPOCH_DAY; import static java.time.temporal.ChronoField.EPOCH_MONTH; import static java.time.temporal.ChronoField.MONTH_OF_YEAR; import static java.time.temporal.ChronoField.YEAR; import static org.testng.Assert.assertEquals; + import static org.testng.Assert.fail; + import java.time.DateTimeException; import java.time.LocalDate; ! import java.time.format.DateTimeFormatter; ! import java.time.format.DateTimeFormatterBuilder; ! import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; import org.testng.annotations.DataProvider; import org.testng.annotations.Test;
*** 96,171 **** {EPOCH_DAY, 12, null, null, null, null, null, null, LocalDate.class, LocalDate.of(1970, 1, 13)}, }; } @Test(dataProvider = "combine") ! public void test_derive(TemporalField field1, Number value1, TemporalField field2, Number value2, ! TemporalField field3, Number value3, TemporalField field4, Number value4, Class<?> query, Object expectedVal) { ! DateTimeBuilder builder = new DateTimeBuilder(field1, value1.longValue()); if (field2 != null) { ! builder.addFieldValue(field2, value2.longValue()); } if (field3 != null) { ! builder.addFieldValue(field3, value3.longValue()); } if (field4 != null) { ! builder.addFieldValue(field4, value4.longValue()); } - builder.resolve(); - assertEquals(builder.extract((Class<?>) query), expectedVal); } //----------------------------------------------------------------------- @DataProvider(name = "normalized") Object[][] data_normalized() { return new Object[][] { ! {YEAR, 2127, null, null, null, null, YEAR, 2127}, ! {MONTH_OF_YEAR, 12, null, null, null, null, MONTH_OF_YEAR, 12}, ! {DAY_OF_YEAR, 127, null, null, null, null, DAY_OF_YEAR, 127}, ! {DAY_OF_MONTH, 23, null, null, null, null, DAY_OF_MONTH, 23}, ! {DAY_OF_WEEK, 127, null, null, null, null, DAY_OF_WEEK, 127L}, ! {ALIGNED_WEEK_OF_YEAR, 23, null, null, null, null, ALIGNED_WEEK_OF_YEAR, 23}, ! {ALIGNED_DAY_OF_WEEK_IN_YEAR, 4, null, null, null, null, ALIGNED_DAY_OF_WEEK_IN_YEAR, 4L}, ! {ALIGNED_WEEK_OF_MONTH, 4, null, null, null, null, ALIGNED_WEEK_OF_MONTH, 4}, ! {ALIGNED_DAY_OF_WEEK_IN_MONTH, 3, null, null, null, null, ALIGNED_DAY_OF_WEEK_IN_MONTH, 3}, ! {EPOCH_MONTH, 15, null, null, null, null, EPOCH_MONTH, null}, ! {EPOCH_MONTH, 15, null, null, null, null, YEAR, 1971}, ! {EPOCH_MONTH, 15, null, null, null, null, MONTH_OF_YEAR, 4}, }; } @Test(dataProvider = "normalized") ! public void test_normalized(TemporalField field1, Number value1, TemporalField field2, Number value2, ! TemporalField field3, Number value3, TemporalField query, Number expectedVal) { ! DateTimeBuilder builder = new DateTimeBuilder(field1, value1.longValue()); ! if (field2 != null) { ! builder.addFieldValue(field2, value2.longValue()); } ! if (field3 != null) { ! builder.addFieldValue(field3, value3.longValue()); } ! builder.resolve(); if (expectedVal != null) { ! assertEquals(builder.getLong(query), expectedVal.longValue()); } else { ! assertEquals(builder.containsFieldValue(query), false); } } - //----------------------------------------------------------------------- - // TODO: maybe reinstate - // public void test_split() { - // DateTimeBuilder builder = new DateTimeBuilder(); - // builder.addCalendrical(LocalDateTime.of(2012, 6, 30, 12, 30)); - // builder.addCalendrical(ZoneOffset.ofHours(2)); - // builder.resolve(); - // assertEquals(builder.build(LocalDate.class), LocalDate.of(2012, 6, 30)); - // assertEquals(builder.build(LocalTime.class), LocalTime.of(12, 30)); - // assertEquals(builder.build(ZoneOffset.class), ZoneOffset.ofHours(2)); - // - // assertEquals(builder.build(LocalDateTime.class), LocalDateTime.of(2012, 6, 30, 12, 30)); - // assertEquals(builder.build(OffsetDate.class), OffsetDate.of(LocalDate.of(2012, 6, 30), ZoneOffset.ofHours(2))); - // assertEquals(builder.build(OffsetTime.class), OffsetTime.of(LocalTime.of(12, 30), ZoneOffset.ofHours(2))); - //// assertEquals(builder.build(OffsetDateTime.class), OffsetDateTime.of(2012, 6, 30, 12, 30, ZoneOffset.ofHours(2))); - // } - } --- 100,211 ---- {EPOCH_DAY, 12, null, null, null, null, null, null, LocalDate.class, LocalDate.of(1970, 1, 13)}, }; } @Test(dataProvider = "combine") ! public void test_derive(final TemporalField field1, final Number value1, ! final TemporalField field2, final Number value2, ! final TemporalField field3, final Number value3, ! final TemporalField field4, final Number value4, ! Class<?> query, Object expectedVal) { ! // mock for testing that does not fully comply with TemporalAccessor contract ! TemporalAccessor test = new TemporalAccessor() { ! @Override ! public boolean isSupported(TemporalField field) { ! return field == field1 || field == field2 || field == field3 || field == field4; ! } ! @Override ! public long getLong(TemporalField field) { ! if (field == field1) { ! return value1.longValue(); ! } ! if (field == field2) { ! return value2.longValue(); ! } ! if (field == field3) { ! return value3.longValue(); ! } ! if (field == field4) { ! return value4.longValue(); ! } ! throw new DateTimeException("Unsupported"); ! } ! }; ! String str = ""; ! DateTimeFormatterBuilder dtfb = new DateTimeFormatterBuilder(); ! dtfb.appendValue(field1).appendLiteral('-'); ! str += value1 + "-"; if (field2 != null) { ! dtfb.appendValue(field2).appendLiteral('-'); ! str += value2 + "-"; } if (field3 != null) { ! dtfb.appendValue(field3).appendLiteral('-'); ! str += value3 + "-"; } if (field4 != null) { ! dtfb.appendValue(field4).appendLiteral('-'); ! str += value4 + "-"; ! } ! TemporalAccessor parsed = dtfb.toFormatter().parse(str); ! if (query == LocalDate.class) { ! if (expectedVal != null) { ! assertEquals(parsed.query(LocalDate::from), expectedVal); ! } else { ! try { ! parsed.query(LocalDate::from); ! fail(); ! } catch (DateTimeException ex) { ! // expected ! } ! } ! } else { ! throw new IllegalArgumentException(); } } //----------------------------------------------------------------------- @DataProvider(name = "normalized") Object[][] data_normalized() { return new Object[][] { ! {YEAR, 2127, YEAR, 2127}, ! {MONTH_OF_YEAR, 12, MONTH_OF_YEAR, 12}, ! {DAY_OF_YEAR, 127, DAY_OF_YEAR, 127}, ! {DAY_OF_MONTH, 23, DAY_OF_MONTH, 23}, ! {DAY_OF_WEEK, 127, DAY_OF_WEEK, 127L}, ! {ALIGNED_WEEK_OF_YEAR, 23, ALIGNED_WEEK_OF_YEAR, 23}, ! {ALIGNED_DAY_OF_WEEK_IN_YEAR, 4, ALIGNED_DAY_OF_WEEK_IN_YEAR, 4L}, ! {ALIGNED_WEEK_OF_MONTH, 4, ALIGNED_WEEK_OF_MONTH, 4}, ! {ALIGNED_DAY_OF_WEEK_IN_MONTH, 3, ALIGNED_DAY_OF_WEEK_IN_MONTH, 3}, ! {EPOCH_MONTH, 15, EPOCH_MONTH, null}, ! {EPOCH_MONTH, 15, YEAR, 1971}, ! {EPOCH_MONTH, 15, MONTH_OF_YEAR, 4}, }; } @Test(dataProvider = "normalized") ! public void test_normalized(final TemporalField field1, final Number value1, TemporalField expectedField, Number expectedVal) { ! // mock for testing that does not fully comply with TemporalAccessor contract ! TemporalAccessor test = new TemporalAccessor() { ! @Override ! public boolean isSupported(TemporalField field) { ! return field == field1; ! } ! @Override ! public long getLong(TemporalField field) { ! if (field == field1) { ! return value1.longValue(); } ! throw new DateTimeException("Unsupported"); } ! }; ! DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(field1).toFormatter(); ! String str = value1.toString(); ! TemporalAccessor temporal = f.parse(str); if (expectedVal != null) { ! assertEquals(temporal.getLong(expectedField), expectedVal.longValue()); } else { ! assertEquals(temporal.isSupported(expectedField), false); } } }