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