+ a = dcp::Time (3600 * 24, 24, 250);
+ BOOST_CHECK_EQUAL (a.h, 1);
+ BOOST_CHECK_EQUAL (a.m, 0);
+ BOOST_CHECK_EQUAL (a.s, 0);
+ BOOST_CHECK_EQUAL (a.e, 0);
+
+ a = dcp::Time (60 * 24, 24, 250);
+ BOOST_CHECK_EQUAL (a.h, 0);
+ BOOST_CHECK_EQUAL (a.m, 1);
+ BOOST_CHECK_EQUAL (a.s, 0);
+ BOOST_CHECK_EQUAL (a.e, 0);
+
+ /* Check rounding; 3424 is 142.666666666... seconds or 0.166666666... ticks */
+ a = dcp::Time (3424, 24, 250);
+ BOOST_CHECK_EQUAL (a.h, 0);
+ BOOST_CHECK_EQUAL (a.m, 2);
+ BOOST_CHECK_EQUAL (a.s, 22);
+ BOOST_CHECK_EQUAL (a.e, 167);
+
+ a = dcp::Time (3425, 24, 250);
+ BOOST_CHECK_EQUAL (a.h, 0);
+ BOOST_CHECK_EQUAL (a.m, 2);
+ BOOST_CHECK_EQUAL (a.s, 22);
+ BOOST_CHECK_EQUAL (a.e, 177);
+
+ /* Check addition of times with different tcrs */
+ a = dcp::Time (0, 0, 0, 3, 24);
+ b = dcp::Time (0, 0, 0, 4, 48);
+ r = a + b;
+ BOOST_CHECK_EQUAL (r, dcp::Time (0, 0, 0, 240, 1152));