/** * Initializes a {@link JulianDate} from a {@link ZonedDateTime} and specified time standard. * @param dateTime The {@link ZonedDateTime}. * @param standard The time standard to use for this Julian Date. The {@code dateTime} is assumed to be expressed in this time standard. */ public JulianDate(@Nonnull ZonedDateTime dateTime, @Nonnull TimeStandard standard) { this(new GregorianDate(dateTime), standard); }
@Test public final void roundSecondsAllows61SecondsDuringLeapSecond() { GregorianDate gd = new GregorianDate(2012, 6, 30, 23, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 6, 30, 23, 59, 60.0), gd.roundSeconds(6)); gd = new GregorianDate(2012, 6, 30, 23, 59, 60.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 7, 1, 0, 0, 0.0), gd.roundSeconds(6)); }
@Test public final void testRoundTripDefaultConstructed() { GregorianDate gd = new GregorianDate(); GregorianDate gd2 = new GregorianDate(gd.toJulianDate()); AssertHelper.assertEquals(gd, gd2); }
@Test public final void roundSecondsDoesNotAllow61SecondsDuringLeapSecondIfTimeStandardIsNotUtc() { GregorianDate gd = new GregorianDate(2012, 6, 30, 23, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 7, 1, 0, 0, 0.0), gd.roundSeconds(6, TimeStandard.INTERNATIONAL_ATOMIC_TIME)); }
public final void toIso8601CompactStringProducesCorrectStrings(int year, int month, int day, int hour, int minute, double second, String expectedIsoString) { cesiumlanguagewriter.GregorianDate gregorianDate = new GregorianDate(year, month, day, hour, minute, second); String isoString = gregorianDate.toIso8601String(Iso8601Format.COMPACT); Assert.assertEquals(expectedIsoString, isoString); }
public final void toIso8601StringWithFractionalSeconds(int year, int month, int day, int hour, int minute, double second, String expectedIsoString) { cesiumlanguagewriter.GregorianDate gregorianDate = new GregorianDate(year, month, day, hour, minute, second); String isoString = gregorianDate.toIso8601String(Iso8601Format.EXTENDED, 6); Assert.assertEquals(expectedIsoString, isoString); }
@Test public final void wholeNumberSecondsIsFormattedCorrectly() { GregorianDate gd = new GregorianDate(2012, 8, 7, 13, 59, 55.0); Assert.assertEquals("2012-08-07 13:59:55.000000", gd.toString("yyyy-MM-dd HH:mm:ss.ffffff", m_cultureInfo)); gd = new GregorianDate(2012, 8, 7, 13, 59, 55.0); Assert.assertEquals("2012-08-07 13:59:55", gd.toString("yyyy-MM-dd HH:mm:ss", m_cultureInfo)); gd = new GregorianDate(2012, 8, 7, 13, 59, 55.0); Assert.assertEquals("2012-08-07 13:59:55", gd.toString("yyyy-MM-dd HH:mm:ss.FFFFFF", m_cultureInfo)); }
@Test public final void testGetHashCode() { GregorianDate date = new GregorianDate(2001, 1, 1, 6, 3, 14D); GregorianDate sameDate = new GregorianDate(2001, 1, 1, 6, 3, 14D); GregorianDate differentTime = new GregorianDate(2001, 1, 1, 6, 5, 26D); GregorianDate differentDay = new GregorianDate(2001, 2, 3, 6, 3, 14D); Assert.assertEquals((int) date.hashCode(), (int) sameDate.hashCode()); AssertHelper.assertNotEqual(date.hashCode(), differentTime.hashCode()); AssertHelper.assertNotEqual(date.hashCode(), differentDay.hashCode()); }
@Test public final void cannotConstructGregorianDateRepresentingInvalidLeapSecond() { ExpectedExceptionHelper.expectException(getRule$expectedException(), ArgumentException.class); new GregorianDate(2008, 12, 30, 23, 59, 60D); }
@Test public final void testFormattingLeapSecond() { GregorianDate date = new GregorianDate(2008, 12, 31, 23, 59, 60.444); Assert.assertEquals("31 Dec 2008 23:59:60.444", date.toString("d MMM yyyy H:mm:ss.fff", m_cultureInfo)); }
@Test public final void fractionalSecondsCloseToZeroAreFormattedCorrectly() { // Based on BUG71966: GregorianDate.ToString(format) produces incorrect value for fractional seconds cesiumlanguagewriter.GregorianDate date = new GregorianDate(2012, 2, 25, 0, 15, 0.000000000014551915228366852); Assert.assertEquals("001500.0000000", date.toString("HHmmss.fffffff", m_cultureInfo)); }
@Test public final void cannotConstructWithInvalidDate() { ExpectedExceptionHelper.expectException(getRule$expectedException(), ArgumentException.class); new GregorianDate(2006, 2, 29, 0, 0, 0D); }
@Test public final void testConversionToJulianDate() { GregorianDate date = new GregorianDate(2008, 12, 31, 23, 59, 0D); JulianDate julianDate = date.toJulianDate(); GregorianDate oneSecondLater = new GregorianDate(2008, 12, 31, 23, 59, 1D); GregorianDate oneSecondBefore = new GregorianDate(2008, 12, 31, 23, 58, 59D); Assert.assertEquals(1, oneSecondLater.toJulianDate().subtract(julianDate).getSeconds(), 0d); Assert.assertEquals(1, julianDate.subtract(oneSecondBefore.toJulianDate()).getSeconds(), 0d); }
@Test public final void testToStringFormatProvider() { GregorianDate gd1 = new GregorianDate(2001, 1, 1, 6, 3, 14D); Assert.assertEquals("1/1/2001 6:03:14 AM", gd1.toString(CultureInfoHelper.create("en-US"))); gd1 = new GregorianDate(2003, 3, 4, 16, 43, 23.23452); Assert.assertEquals("3/4/2003 4:43:23 PM", gd1.toString(CultureInfoHelper.create("en-US"))); }
@Test public final void canConvertGregorianDateRepresentingLeapSecondToJulianDate() { GregorianDate leapSecondGregorianDate = new GregorianDate(2008, 12, 31, 23, 59, 60D); JulianDate leapSecondJulianDate = leapSecondGregorianDate.toJulianDate(); AssertHelper.assertEquals(leapSecondGregorianDate, leapSecondJulianDate.toGregorianDate()); GregorianDate oneSecondLater = new GregorianDate(2009, 1, 1, 0, 0, 0D); GregorianDate oneSecondBefore = new GregorianDate(2008, 12, 31, 23, 59, 59D); Assert.assertEquals(1, oneSecondLater.toJulianDate().subtract(leapSecondJulianDate).getSeconds(), 0d); Assert.assertEquals(1, leapSecondJulianDate.subtract(oneSecondBefore.toJulianDate()).getSeconds(), 0d); }
@Test public final void cantFormatMoreThan15FractionalSeconds() { ExpectedExceptionHelper.expectException(getRule$expectedException(), NumberFormatException.class); String unused = new GregorianDate(2009, 6, 10).toString("ffffffffffffffff"); }
@Test public final void cantEndWithABackslash() { ExpectedExceptionHelper.expectException(getRule$expectedException(), NumberFormatException.class); String unused = new GregorianDate(2009, 6, 10).toString("f\\"); }
@Test public final void cantHaveADoublePercent() { ExpectedExceptionHelper.expectException(getRule$expectedException(), NumberFormatException.class); String unused = new GregorianDate(2009, 6, 10).toString("%%"); }
@Test public final void testJulianSecondsOfDay() { final double julianSecondsOfDay = 0.05486; GregorianDate gd = new GregorianDate(new JulianDate(2046050, julianSecondsOfDay, TimeStandard.COORDINATED_UNIVERSAL_TIME)); Assert.assertEquals(julianSecondsOfDay, gd.getJulianSecondsOfDay(), Constants.Epsilon11); }
@Test public final void testNonStandardTimeStandard() { GregorianDate gregorianDate = new GregorianDate(2008, 12, 31, 23, 59, 40D); JulianDate jd = gregorianDate.toJulianDate(TimeStandard.INTERNATIONAL_ATOMIC_TIME); AssertHelper.assertEquals(TimeStandard.INTERNATIONAL_ATOMIC_TIME, jd.getStandard()); GregorianDate roundTrip1 = jd.toGregorianDate(TimeStandard.INTERNATIONAL_ATOMIC_TIME); AssertHelper.assertEquals(gregorianDate, roundTrip1); GregorianDate roundTrip = new GregorianDate(jd); AssertHelper.assertNotEqual(gregorianDate, roundTrip); double expectedDifference = LeapSeconds.getInstance().getTaiMinusUtc(jd); Assert.assertEquals(expectedDifference, gregorianDate.getSecond() - roundTrip.getSecond(), 0d); }