示例#1
0
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();
}
示例#4
0
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();
}
示例#5
0
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();
}