public void test_convertToUtc_TaiInstant_justAfterLeap() { TaiInstant tai = TaiInstant.ofTaiSeconds(TAI_SECS_UTC1980, 0); // 1980-01-01 (19 leap secs added) UtcInstant expected = UtcInstant.ofModifiedJulianDay(MJD_1980, 0); assertEquals(rules.convertToUtc(tai), expected); assertEquals(rules.convertToTai(expected), tai); // check reverse }
public void test_convertToInstant_furtherAfterLeap() { OffsetDateTime odt = OffsetDateTime.of(1980, 1, 1, 0, 0, 1, 0, ZoneOffset.UTC); Instant instant = odt.toInstant(); UtcInstant utc = UtcInstant.ofModifiedJulianDay(MJD_1980, NANOS_PER_SEC); assertEquals(rules.convertToInstant(utc), instant); assertEquals(rules.convertToUtc(instant), utc); }
public void test_negativeLeap_justAfterLeap() { rules.register(MJD_2100 - 1, -1); TaiInstant tai = TaiInstant.ofTaiSeconds(TAI_SECS_UTC2100_EXTRA_NEGATIVE_LEAP, 0); // 2100-01-01 UtcInstant expected = UtcInstant.ofModifiedJulianDay(MJD_2100, 0); assertEquals(rules.convertToUtc(tai), expected); assertEquals(rules.convertToTai(expected), tai); // check reverse }
// ----------------------------------------------------------------------- // convertToUtc(Instant)/convertToInstant(UtcInstant) // ----------------------------------------------------------------------- public void test_convertToInstant_justBeforeLeap() { OffsetDateTime odt = OffsetDateTime.of(1979, 12, 31, 23, 43, 21, 0, ZoneOffset.UTC); Instant instant = odt.toInstant(); UtcInstant utc = UtcInstant.ofModifiedJulianDay(MJD_1980 - 1, (SECS_PER_DAY + 1 - 1000) * NANOS_PER_SEC); assertEquals(rules.convertToInstant(utc), instant); assertEquals(rules.convertToUtc(instant), utc); }
public void test_convertToUtc_TaiInstant_justBeforeLeap() { TaiInstant tai = TaiInstant.ofTaiSeconds(TAI_SECS_UTC1980 - 2, 0); // 1980-01-01 (2 seconds before 1980) UtcInstant expected = UtcInstant.ofModifiedJulianDay(MJD_1980 - 1, (SECS_PER_DAY - 1) * NANOS_PER_SEC); assertEquals(rules.convertToUtc(tai), expected); assertEquals(rules.convertToTai(expected), tai); // check reverse }
public void test_convertToUtc_TaiInstant_startUtcPeriod() { TaiInstant tai = TaiInstant.ofTaiSeconds(TAI_SECS_UTC1980, 0); // 1980-01-01 (19 leap secs added) UtcInstant expected = UtcInstant.ofModifiedJulianDay(MJD_1980, 0); for (int i = -10; i < 10; i++) { Duration duration = Duration.ofNanos(i); assertEquals(rules.convertToUtc(tai.plus(duration)), expected.plus(duration)); assertEquals( rules.convertToTai(expected.plus(duration)), tai.plus(duration)); // check reverse } for (int i = -10; i < 10; i++) { Duration duration = Duration.ofSeconds(i); assertEquals(rules.convertToUtc(tai.plus(duration)), expected.plus(duration)); assertEquals( rules.convertToTai(expected.plus(duration)), tai.plus(duration)); // check reverse } }
// ------------------------------------------------------------------------- public void test_negativeLeap_justBeforeLeap() { rules.register(MJD_2100 - 1, -1); TaiInstant tai = TaiInstant.ofTaiSeconds( TAI_SECS_UTC2100_EXTRA_NEGATIVE_LEAP - 1, 0); // 2100-01-01 (1 second before 2100) UtcInstant expected = UtcInstant.ofModifiedJulianDay(MJD_2100 - 1, (SECS_PER_DAY - 2) * NANOS_PER_SEC); assertEquals(rules.convertToUtc(tai), expected); assertEquals(rules.convertToTai(expected), tai); // check reverse }
public void test_convertToInstant_slsMicros() { for (int i = 1; i < 1000; i++) { long utcNanos = (SECS_PER_DAY + 1 - 1000) * NANOS_PER_SEC + i * 1000; long startSls = (86401 - 1000) * NANOS_PER_SEC; long slsNanos = (utcNanos - (utcNanos - startSls) / 1000); OffsetDateTime odt = OffsetDateTime.of( 1979, 12, 31, 23, 43, 21, (int) (slsNanos % NANOS_PER_SEC), ZoneOffset.UTC); Instant instant = odt.toInstant(); UtcInstant utc = UtcInstant.ofModifiedJulianDay( MJD_1980 - 1, (SECS_PER_DAY + 1 - 1000) * NANOS_PER_SEC + i * 1000); assertEquals(rules.convertToInstant(utc), instant); assertEquals(rules.convertToUtc(instant), utc); } }
public void test_convertToInstant_slsNanos() { for (int i = 1; i < 5005; i++) { long utcNanos = (SECS_PER_DAY + 1 - 1000) * NANOS_PER_SEC + i; long startSls = (86401 - 1000) * NANOS_PER_SEC; long slsNanos = (utcNanos - (utcNanos - startSls) / 1000); OffsetDateTime odt = OffsetDateTime.of( 1979, 12, 31, 23, 43, 21, (int) (slsNanos % NANOS_PER_SEC), ZoneOffset.UTC); Instant instant = odt.toInstant(); UtcInstant utc = UtcInstant.ofModifiedJulianDay(MJD_1980 - 1, utcNanos); assertEquals(rules.convertToInstant(utc), instant); // not all instants can map back to the correct UTC value long reverseUtcNanos = startSls + ((slsNanos - startSls) * 1000L) / (1000L - 1); assertEquals( rules.convertToUtc(instant), UtcInstant.ofModifiedJulianDay(MJD_1980 - 1, reverseUtcNanos)); } }
@Test(expectedExceptions = NullPointerException.class) public void test_convertToUtc_TaiInstant_null() { rules.convertToUtc((TaiInstant) null); }
public void test_convertToUtc_TaiInstant_2100() { TaiInstant tai = TaiInstant.ofTaiSeconds(TAI_SECS_UTC2100, 0); // 2100-01-01 UtcInstant expected = UtcInstant.ofModifiedJulianDay(MJD_2100, 0); assertEquals(rules.convertToUtc(tai), expected); assertEquals(rules.convertToTai(expected), tai); // check reverse }