31 namespace astrotypes {
55 ASSERT_EQ(
julian_day(1), std::chrono::hours(24));
56 ASSERT_EQ(
julian_day(2), std::chrono::hours(48));
61 std::chrono::time_point<ModifiedJulianClock> epoc;
62 ASSERT_EQ(
julian_day(0), epoc.time_since_epoch());
64 std::chrono::time_point<ModifiedJulianClock> hundred = epoc +
julian_day(100.0);
65 ASSERT_EQ(
julian_day(100.0), hundred.time_since_epoch());
71 typename ModifiedJulianClock::time_point base(
julian_day(48.0));
72 typename ModifiedJulianClock::time_point expected(
julian_day(48.5));
74 ASSERT_TRUE(expected == midday);
79 typename ModifiedJulianClock::time_point base(
julian_day(48.0));
80 typename ModifiedJulianClock::time_point expected(
julian_day(47.5));
82 ASSERT_TRUE(expected == midday);
87 typename ModifiedJulianClock::time_point epoch(
julian_day(40587.0));
88 std::chrono::time_point<std::chrono::system_clock> system_epoch;
89 ASSERT_TRUE(
static_cast<std::chrono::time_point<std::chrono::system_clock>
>(epoch) == system_epoch);
90 ASSERT_TRUE( static_cast<ModifiedJulianClock::time_point>(system_epoch) == epoch);
95 typename ModifiedJulianClock::time_point tp(
julian_day(40000.576453212111));
96 typename ModifiedJulianClock::time_point tp2(tp);
98 ASSERT_TRUE(
typename ModifiedJulianClock::duration(0.0) == tp -tp2);
99 ASSERT_FALSE( (tp -tp2) >= boost::units::quantity<boost::units::si::time>(0.1 * boost::units::si::seconds) );
100 ASSERT_FALSE( (tp -tp2) > boost::units::quantity<boost::units::si::time>(0.1 * boost::units::si::seconds) );
101 ASSERT_TRUE( (tp -tp2) < boost::units::quantity<boost::units::si::time>(0.1 * boost::units::si::seconds) );
106 auto today = ModifiedJulianClock::now();
107 std::cout <<
"time now=" << today <<
"\n";
~ModifiedJulianClockTest()
TEST_F(DispersionConstantTest, test_dimensionally_correct)
ModifiedJulianClockTest()
constexpr std::enable_if< boost::units::is_quantity< BoostQuantity >::value &&boost::units::is_unit_of_dimension< typename BoostQuantity::unit_type, boost::units::time_dimension >::value &&!is_equivalent< BoostQuantity, std::chrono::duration< ChronoNumericalRep, PeriodType > >::value, BoostQuantity >::type duration_cast(const std::chrono::duration< ChronoNumericalRep, PeriodType > &duration)
Mimic the std::duration_cast to convert to/from boost::units::quantity
std::chrono::duration< double, std::ratio< 86400 > > julian_day
representation of julian time is in days