void check_default() { { D d; BOOST_TEST(d.count() == typename D::rep()); } { BOOST_CONSTEXPR D d; BOOST_CONSTEXPR_ASSERT(d.count() == typename D::rep()); } }
int main() { test(boost::chrono::milliseconds(7265000), boost::chrono::hours(2)); test(boost::chrono::milliseconds(7265000), boost::chrono::minutes(121)); test(boost::chrono::milliseconds(7265000), boost::chrono::seconds(7265)); test(boost::chrono::milliseconds(7265000), boost::chrono::milliseconds(7265000)); test(boost::chrono::milliseconds(7265000), boost::chrono::microseconds(7265000000LL)); test(boost::chrono::milliseconds(7265000), boost::chrono::nanoseconds(7265000000000LL)); test(boost::chrono::milliseconds(7265000), boost::chrono::duration<double, boost::ratio<3600> >(7265./3600)); test(boost::chrono::duration<int, boost::ratio<2, 3> >(9), boost::chrono::duration<int, boost::ratio<3, 5> >(10)); { BOOST_CONSTEXPR boost::chrono::hours h = boost::chrono::duration_cast<boost::chrono::hours>(boost::chrono::milliseconds(7265000)); BOOST_CONSTEXPR_ASSERT(h.count() == 2); } return boost::report_errors(); }
int main() { test(boost::chrono::milliseconds(7265000), boost::chrono::hours(2)); test(boost::chrono::milliseconds(7265000), boost::chrono::minutes(121)); test(boost::chrono::milliseconds(7265000), boost::chrono::seconds(7265)); test(boost::chrono::milliseconds(7265000), boost::chrono::milliseconds(7265000)); test(boost::chrono::milliseconds(7265000), boost::chrono::microseconds(7265000000LL)); test(boost::chrono::milliseconds(7265000), boost::chrono::nanoseconds(7265000000000LL)); test(boost::chrono::milliseconds(7265000), boost::chrono::duration<double, boost::ratio<3600> >(7265./3600)); test(boost::chrono::duration<int, boost::ratio<2, 3> >(9), boost::chrono::duration<int, boost::ratio<3, 5> >(10)); { typedef boost::chrono::system_clock Clock; typedef boost::chrono::time_point<Clock, boost::chrono::milliseconds> FromTimePoint; typedef boost::chrono::time_point<Clock, boost::chrono::hours> ToTimePoint; BOOST_CONSTEXPR FromTimePoint f(boost::chrono::milliseconds(7265000)); BOOST_CONSTEXPR ToTimePoint tph = boost::chrono::time_point_cast<boost::chrono::hours>(f); BOOST_CONSTEXPR_ASSERT(tph.time_since_epoch().count() == 2); } return boost::report_errors(); }
int main() { // exact conversions allowed for integral reps { boost::chrono::milliseconds ms(1); boost::chrono::microseconds us = ms; BOOST_TEST(us.count() == 1000); { BOOST_CONSTEXPR boost::chrono::milliseconds ms(1); BOOST_CONSTEXPR boost::chrono::microseconds us = ms; BOOST_CONSTEXPR_ASSERT(us.count() == 1000); } } // inexact conversions allowed for floating point reps { boost::chrono::duration<double, boost::micro> us(1); boost::chrono::duration<double, boost::milli> ms = us; BOOST_TEST(ms.count() == 1./1000); { BOOST_CONSTEXPR boost::chrono::duration<double, boost::micro> us(1); BOOST_CONSTEXPR boost::chrono::duration<double, boost::milli> ms = us; BOOST_CONSTEXPR_ASSERT(ms.count() == 1./1000); } } // Convert int to float { boost::chrono::duration<int> i(3); boost::chrono::duration<double> d = i; BOOST_TEST(d.count() == 3); { BOOST_CONSTEXPR boost::chrono::duration<int> i(3); BOOST_CONSTEXPR boost::chrono::duration<double> d = i; BOOST_CONSTEXPR_ASSERT(d.count() == 3); } } // default constructor { check_default<boost::chrono::duration<Rep> >(); } // constructor from rep { check_from_rep<boost::chrono::duration<int> >(5); { BOOST_CONSTEXPR boost::chrono::duration<int> d(5); BOOST_CONSTEXPR_ASSERT(d.count() == 5); } check_from_rep<boost::chrono::duration<int, boost::ratio<3, 2> > >(5); { BOOST_CONSTEXPR boost::chrono::duration<int, boost::ratio<3, 2> > d(5); BOOST_CONSTEXPR_ASSERT(d.count() == 5); } check_from_rep<boost::chrono::duration<Rep, boost::ratio<3, 2> > >(Rep(3)); { BOOST_CONSTEXPR boost::chrono::duration<Rep, boost::ratio<3, 2> > d(Rep(3)); BOOST_CONSTEXPR_ASSERT(d.count() == Rep(3)); } check_from_rep<boost::chrono::duration<double, boost::ratio<2, 3> > >(5.5); { BOOST_CONSTEXPR boost::chrono::duration<double, boost::ratio<3, 2> > d(5.5); BOOST_CONSTEXPR_ASSERT(d.count() == 5.5); } } // constructor from other rep { boost::chrono::duration<double> d(5); BOOST_TEST(d.count() == 5); { BOOST_CONSTEXPR boost::chrono::duration<double> d(5); BOOST_CONSTEXPR_ASSERT(d.count() == 5); } } return boost::report_errors(); }
int main() { { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration; boost::chrono::time_point<Clock, Duration> t(Duration(3)); t += Duration(2); BOOST_TEST(t.time_since_epoch() == Duration(5)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration; boost::chrono::time_point<Clock, Duration> t(Duration(3)); t -= Duration(2); BOOST_TEST(t.time_since_epoch() == Duration(1)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); boost::chrono::time_point<Clock, Duration2> t2 = t1 - Duration2(5); BOOST_TEST(t2.time_since_epoch() == Duration2(2995)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; BOOST_CONSTEXPR boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); BOOST_CONSTEXPR boost::chrono::time_point<Clock, Duration2> t2 = t1 - Duration2(5); BOOST_CONSTEXPR_ASSERT(t2.time_since_epoch() == Duration2(2995)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); boost::chrono::time_point<Clock, Duration2> t2(Duration2(5)); BOOST_TEST( (t1 - t2) == Duration2(2995)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; BOOST_CONSTEXPR boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); BOOST_CONSTEXPR boost::chrono::time_point<Clock, Duration2> t2(Duration2(5)); BOOST_CONSTEXPR_ASSERT( (t1 - t2) == Duration2(2995)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); boost::chrono::time_point<Clock, Duration2> t2 = t1 + Duration2(5); BOOST_TEST(t2.time_since_epoch() == Duration2(3005)); t2 = Duration2(6) + t1; BOOST_TEST(t2.time_since_epoch() == Duration2(3006)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; BOOST_CONSTEXPR boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); BOOST_CONSTEXPR boost::chrono::time_point<Clock, Duration2> t2 = t1 + Duration2(5); BOOST_CONSTEXPR_ASSERT(t2.time_since_epoch() == Duration2(3005)); BOOST_CONSTEXPR boost::chrono::time_point<Clock, Duration2> t3 = Duration2(6) + t1; BOOST_CONSTEXPR_ASSERT(t3.time_since_epoch() == Duration2(3006)); } #ifdef BOOST_CHRONO_EXTENSIONS { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration; boost::chrono::time_point<Clock, Duration> t(Duration(3)); t += 2; BOOST_TEST(t.time_since_epoch() == Duration(5)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration; boost::chrono::time_point<Clock, Duration> t(Duration(3)); t++; BOOST_TEST(t.time_since_epoch() == Duration(4)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration; boost::chrono::time_point<Clock, Duration> t(Duration(3)); ++t; BOOST_TEST(t.time_since_epoch() == Duration(4)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration; boost::chrono::time_point<Clock, Duration> t(Duration(3)); t -= 2; BOOST_TEST(t.time_since_epoch() == Duration(1)); } #if 0 { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); boost::chrono::time_point<Clock, Duration2> t2 = t1 - Duration2(5); BOOST_TEST(t2.time_since_epoch() == Duration2(2995)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); boost::chrono::time_point<Clock, Duration2> t2(Duration2(5)); BOOST_TEST((t1 - t2) == Duration2(2995)); } { typedef boost::chrono::system_clock Clock; typedef boost::chrono::milliseconds Duration1; typedef boost::chrono::microseconds Duration2; boost::chrono::time_point<Clock, Duration1> t1(Duration1(3)); boost::chrono::time_point<Clock, Duration2> t2 = t1 + Duration2(5); BOOST_TEST(t2.time_since_epoch() == Duration2(3005)); t2 = Duration2(6) + t1; BOOST_TEST(t2.time_since_epoch() == Duration2(3006)); } #endif #endif return boost::report_errors(); }