test/java/time/tck/java/time/TCKInstant.java
Print this page
*** 62,95 ****
import static java.time.temporal.ChronoField.INSTANT_SECONDS;
import static java.time.temporal.ChronoField.MICRO_OF_SECOND;
import static java.time.temporal.ChronoField.MILLI_OF_SECOND;
import static java.time.temporal.ChronoField.NANO_OF_SECOND;
import static java.time.temporal.ChronoUnit.DAYS;
import static java.time.temporal.ChronoUnit.NANOS;
import static java.time.temporal.ChronoUnit.SECONDS;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Locale;
-
import java.time.Clock;
import java.time.DateTimeException;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoField;
import java.time.temporal.JulianFields;
import java.time.temporal.Queries;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalField;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
--- 62,107 ----
import static java.time.temporal.ChronoField.INSTANT_SECONDS;
import static java.time.temporal.ChronoField.MICRO_OF_SECOND;
import static java.time.temporal.ChronoField.MILLI_OF_SECOND;
import static java.time.temporal.ChronoField.NANO_OF_SECOND;
import static java.time.temporal.ChronoUnit.DAYS;
+ import static java.time.temporal.ChronoUnit.HOURS;
+ import static java.time.temporal.ChronoUnit.MICROS;
+ import static java.time.temporal.ChronoUnit.MILLIS;
+ import static java.time.temporal.ChronoUnit.MINUTES;
+ import static java.time.temporal.ChronoUnit.MONTHS;
import static java.time.temporal.ChronoUnit.NANOS;
import static java.time.temporal.ChronoUnit.SECONDS;
+ import static java.time.temporal.ChronoUnit.WEEKS;
+ import static java.time.temporal.ChronoUnit.YEARS;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.time.Clock;
import java.time.DateTimeException;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
+ import java.time.OffsetDateTime;
import java.time.ZoneOffset;
+ import java.time.ZonedDateTime;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoField;
import java.time.temporal.JulianFields;
import java.time.temporal.Queries;
+ import java.time.temporal.Temporal;
import java.time.temporal.TemporalAccessor;
+ import java.time.temporal.TemporalAmount;
import java.time.temporal.TemporalField;
+ import java.time.temporal.TemporalQuery;
+ import java.time.temporal.TemporalUnit;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.List;
+ import java.util.Locale;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
*** 394,436 ****
}
//-----------------------------------------------------------------------
// query(TemporalQuery)
//-----------------------------------------------------------------------
! @Test
! public void test_query_chrono() {
! assertEquals(TEST_12345_123456789.query(Queries.chrono()), null);
! assertEquals(Queries.chrono().queryFrom(TEST_12345_123456789), null);
}
! @Test
! public void test_query_zoneId() {
! assertEquals(TEST_12345_123456789.query(Queries.zoneId()), null);
! assertEquals(Queries.zoneId().queryFrom(TEST_12345_123456789), null);
}
! @Test
! public void test_query_precision() {
! assertEquals(TEST_12345_123456789.query(Queries.precision()), NANOS);
! assertEquals(Queries.precision().queryFrom(TEST_12345_123456789), NANOS);
}
! @Test
! public void test_query_offset() {
! assertEquals(TEST_12345_123456789.query(Queries.offset()), null);
! assertEquals(Queries.offset().queryFrom(TEST_12345_123456789), null);
}
! @Test
! public void test_query_zone() {
! assertEquals(TEST_12345_123456789.query(Queries.zone()), null);
! assertEquals(Queries.zone().queryFrom(TEST_12345_123456789), null);
}
! @Test(expectedExceptions=NullPointerException.class)
! public void test_query_null() {
! TEST_12345_123456789.query(null);
}
//-----------------------------------------------------------------------
@DataProvider(name="Plus")
Object[][] provider_plus() {
--- 406,582 ----
}
//-----------------------------------------------------------------------
// query(TemporalQuery)
//-----------------------------------------------------------------------
! @DataProvider(name="query")
! Object[][] data_query() {
! return new Object[][] {
! {TEST_12345_123456789, Queries.chronology(), null},
! {TEST_12345_123456789, Queries.zoneId(), null},
! {TEST_12345_123456789, Queries.precision(), NANOS},
! {TEST_12345_123456789, Queries.zone(), null},
! {TEST_12345_123456789, Queries.offset(), null},
! {TEST_12345_123456789, Queries.localDate(), null},
! {TEST_12345_123456789, Queries.localTime(), null},
! };
}
! @Test(dataProvider="query")
! public <T> void test_query(TemporalAccessor temporal, TemporalQuery<T> query, T expected) {
! assertEquals(temporal.query(query), expected);
}
! @Test(dataProvider="query")
! public <T> void test_queryFrom(TemporalAccessor temporal, TemporalQuery<T> query, T expected) {
! assertEquals(query.queryFrom(temporal), expected);
}
! @Test(expectedExceptions=NullPointerException.class)
! public void test_query_null() {
! TEST_12345_123456789.query(null);
}
! //-----------------------------------------------------------------------
! // truncated(TemporalUnit)
! //-----------------------------------------------------------------------
! TemporalUnit NINETY_MINS = new TemporalUnit() {
! @Override
! public String getName() {
! return "NinetyMins";
! }
! @Override
! public Duration getDuration() {
! return Duration.ofMinutes(90);
}
+ @Override
+ public boolean isDurationEstimated() {
+ return false;
+ }
+ @Override
+ public boolean isSupportedBy(Temporal temporal) {
+ return false;
+ }
+ @Override
+ public <R extends Temporal> R addTo(R temporal, long amount) {
+ throw new UnsupportedOperationException();
+ }
+ @Override
+ public long between(Temporal temporal1, Temporal temporal2) {
+ throw new UnsupportedOperationException();
+ }
+ };
! TemporalUnit NINETY_FIVE_MINS = new TemporalUnit() {
! @Override
! public String getName() {
! return "NinetyFiveMins";
! }
! @Override
! public Duration getDuration() {
! return Duration.ofMinutes(95);
! }
! @Override
! public boolean isDurationEstimated() {
! return false;
! }
! @Override
! public boolean isSupportedBy(Temporal temporal) {
! return false;
! }
! @Override
! public <R extends Temporal> R addTo(R temporal, long amount) {
! throw new UnsupportedOperationException();
! }
! @Override
! public long between(Temporal temporal1, Temporal temporal2) {
! throw new UnsupportedOperationException();
! }
! };
!
! @DataProvider(name="truncatedToValid")
! Object[][] data_truncatedToValid() {
! return new Object[][] {
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), NANOS, Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789)},
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), MICROS, Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_000)},
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), MILLIS, Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 1230_00_000)},
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), SECONDS, Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 0)},
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), MINUTES, Instant.ofEpochSecond(86400 + 3600 + 60, 0)},
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), HOURS, Instant.ofEpochSecond(86400 + 3600, 0)},
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), DAYS, Instant.ofEpochSecond(86400, 0)},
!
! {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), NINETY_MINS, Instant.ofEpochSecond(86400 + 0, 0)},
! {Instant.ofEpochSecond(86400 + 7200 + 60 + 1, 123_456_789), NINETY_MINS, Instant.ofEpochSecond(86400 + 5400, 0)},
! {Instant.ofEpochSecond(86400 + 10800 + 60 + 1, 123_456_789), NINETY_MINS, Instant.ofEpochSecond(86400 + 10800, 0)},
! };
! }
! @Test(groups={"tck"}, dataProvider="truncatedToValid")
! public void test_truncatedTo_valid(Instant input, TemporalUnit unit, Instant expected) {
! assertEquals(input.truncatedTo(unit), expected);
! }
!
! @DataProvider(name="truncatedToInvalid")
! Object[][] data_truncatedToInvalid() {
! return new Object[][] {
! {Instant.ofEpochSecond(1, 123_456_789), NINETY_FIVE_MINS},
! {Instant.ofEpochSecond(1, 123_456_789), WEEKS},
! {Instant.ofEpochSecond(1, 123_456_789), MONTHS},
! {Instant.ofEpochSecond(1, 123_456_789), YEARS},
! };
! }
!
! @Test(groups={"tck"}, dataProvider="truncatedToInvalid", expectedExceptions=DateTimeException.class)
! public void test_truncatedTo_invalid(Instant input, TemporalUnit unit) {
! input.truncatedTo(unit);
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
! public void test_truncatedTo_null() {
! TEST_12345_123456789.truncatedTo(null);
! }
!
! //-----------------------------------------------------------------------
! // plus(TemporalAmount)
! //-----------------------------------------------------------------------
! @DataProvider(name="plusTemporalAmount")
! Object[][] data_plusTemporalAmount() {
! return new Object[][] {
! {DAYS, MockSimplePeriod.of(1, DAYS), 86401, 0},
! {HOURS, MockSimplePeriod.of(2, HOURS), 7201, 0},
! {MINUTES, MockSimplePeriod.of(4, MINUTES), 241, 0},
! {SECONDS, MockSimplePeriod.of(5, SECONDS), 6, 0},
! {NANOS, MockSimplePeriod.of(6, NANOS), 1, 6},
! {DAYS, MockSimplePeriod.of(10, DAYS), 864001, 0},
! {HOURS, MockSimplePeriod.of(11, HOURS), 39601, 0},
! {MINUTES, MockSimplePeriod.of(12, MINUTES), 721, 0},
! {SECONDS, MockSimplePeriod.of(13, SECONDS), 14, 0},
! {NANOS, MockSimplePeriod.of(14, NANOS), 1, 14},
! {SECONDS, Duration.ofSeconds(20, 40), 21, 40},
! {NANOS, Duration.ofSeconds(30, 300), 31, 300},
! };
! }
!
! @Test(dataProvider="plusTemporalAmount")
! public void test_plusTemporalAmount(TemporalUnit unit, TemporalAmount amount, int seconds, int nanos) {
! Instant inst = Instant.ofEpochMilli(1000);
! Instant actual = inst.plus(amount);
! Instant expected = Instant.ofEpochSecond(seconds, nanos);
! assertEquals(actual, expected, "plus(TemporalAmount) failed");
! }
!
! @DataProvider(name="badTemporalAmount")
! Object[][] data_badPlusTemporalAmount() {
! return new Object[][] {
! {MockSimplePeriod.of(2, YEARS)},
! {MockSimplePeriod.of(2, MONTHS)},
! };
! }
!
! @Test(dataProvider="badTemporalAmount",expectedExceptions=DateTimeException.class)
! public void test_badPlusTemporalAmount(TemporalAmount amount) {
! Instant inst = Instant.ofEpochMilli(1000);
! inst.plus(amount);
}
//-----------------------------------------------------------------------
@DataProvider(name="Plus")
Object[][] provider_plus() {
*** 1432,1441 ****
--- 1578,1631 ----
Instant i = Instant.ofEpochSecond(MIN_SECOND, 0);
i.minusNanos(1);
}
//-----------------------------------------------------------------------
+ // atOffset()
+ //-----------------------------------------------------------------------
+ @Test
+ public void test_atOffset() {
+ for (int i = 0; i < (24 * 60 * 60); i++) {
+ Instant instant = Instant.ofEpochSecond(i);
+ OffsetDateTime test = instant.atOffset(ZoneOffset.ofHours(1));
+ assertEquals(test.getYear(), 1970);
+ assertEquals(test.getMonthValue(), 1);
+ assertEquals(test.getDayOfMonth(), 1 + (i >= 23 * 60 * 60 ? 1 : 0));
+ assertEquals(test.getHour(), ((i / (60 * 60)) + 1) % 24);
+ assertEquals(test.getMinute(), (i / 60) % 60);
+ assertEquals(test.getSecond(), i % 60);
+ }
+ }
+
+ @Test(expectedExceptions=NullPointerException.class)
+ public void test_atOffset_null() {
+ TEST_12345_123456789.atOffset(null);
+ }
+
+ //-----------------------------------------------------------------------
+ // atZone()
+ //-----------------------------------------------------------------------
+ @Test
+ public void test_atZone() {
+ for (int i = 0; i < (24 * 60 * 60); i++) {
+ Instant instant = Instant.ofEpochSecond(i);
+ ZonedDateTime test = instant.atZone(ZoneOffset.ofHours(1));
+ assertEquals(test.getYear(), 1970);
+ assertEquals(test.getMonthValue(), 1);
+ assertEquals(test.getDayOfMonth(), 1 + (i >= 23 * 60 * 60 ? 1 : 0));
+ assertEquals(test.getHour(), ((i / (60 * 60)) + 1) % 24);
+ assertEquals(test.getMinute(), (i / 60) % 60);
+ assertEquals(test.getSecond(), i % 60);
+ }
+ }
+
+ @Test(expectedExceptions=NullPointerException.class)
+ public void test_atZone_null() {
+ TEST_12345_123456789.atZone(null);
+ }
+
+ //-----------------------------------------------------------------------
// toEpochMilli()
//-----------------------------------------------------------------------
@Test
public void test_toEpochMilli() {
assertEquals(Instant.ofEpochSecond(1L, 1000000).toEpochMilli(), 1001L);