- BOOST_CHECK_EQUAL (divide_with_round (0, 4), 0);
- BOOST_CHECK_EQUAL (divide_with_round (1, 4), 0);
- BOOST_CHECK_EQUAL (divide_with_round (2, 4), 1);
- BOOST_CHECK_EQUAL (divide_with_round (3, 4), 1);
- BOOST_CHECK_EQUAL (divide_with_round (4, 4), 1);
- BOOST_CHECK_EQUAL (divide_with_round (5, 4), 1);
- BOOST_CHECK_EQUAL (divide_with_round (6, 4), 2);
-
- BOOST_CHECK_EQUAL (divide_with_round (1000, 500), 2);
+ BOOST_CHECK_EQUAL (DCPTime (0).round_up (DCPTime::HZ / 2), DCPTime (0));
+ BOOST_CHECK_EQUAL (DCPTime (1).round_up (DCPTime::HZ / 2), DCPTime (2));
+ BOOST_CHECK_EQUAL (DCPTime (2).round_up (DCPTime::HZ / 2), DCPTime (2));
+ BOOST_CHECK_EQUAL (DCPTime (3).round_up (DCPTime::HZ / 2), DCPTime (4));
+
+ BOOST_CHECK_EQUAL (DCPTime (0).round_up (DCPTime::HZ / 42), DCPTime (0));
+ BOOST_CHECK_EQUAL (DCPTime (1).round_up (DCPTime::HZ / 42), DCPTime (42));
+ BOOST_CHECK_EQUAL (DCPTime (42).round_up (DCPTime::HZ / 42), DCPTime (42));
+ BOOST_CHECK_EQUAL (DCPTime (43).round_up (DCPTime::HZ / 42), DCPTime (84));
+
+ /* Check that rounding up to non-integer frame rates works */
+ BOOST_CHECK_EQUAL (DCPTime (45312).round_up (29.976), DCPTime (48045));
+}
+
+BOOST_AUTO_TEST_CASE (timecode_test)
+{
+ DCPTime t = DCPTime::from_seconds (2 * 60 * 60 + 4 * 60 + 31) + DCPTime::from_frames (19, 24);
+ BOOST_CHECK_EQUAL (t.timecode (24), "02:04:31:19");