X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fdcpomatic_time_test.cc;h=5d23f247808135eeadfc94ad17451ffb7b42db45;hb=25eb7aa723af004162fc7f95995df250c4e4571b;hp=94d51503552f93018494b10c472644d33e1f7840;hpb=35e5de23b21a1fc9788fadd9ecd8beae9cfc18e3;p=dcpomatic.git diff --git a/test/dcpomatic_time_test.cc b/test/dcpomatic_time_test.cc index 94d515035..5d23f2478 100644 --- a/test/dcpomatic_time_test.cc +++ b/test/dcpomatic_time_test.cc @@ -19,7 +19,7 @@ */ /** @file test/dcpomatic_time_test.cc - * @brief Test Time and TimePeriod classes. + * @brief Test dcpomatic::Time and dcpomatic::TimePeriod classes. * @ingroup selfcontained */ @@ -31,6 +31,7 @@ using std::list; using std::cout; +using namespace dcpomatic; BOOST_AUTO_TEST_CASE (dcpomatic_time_test) { @@ -243,7 +244,7 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_period_coalesce_test1) p.push_back (A); p.push_back (B); list q = coalesce (p); - BOOST_REQUIRE_EQUAL (q.size(), 2); + BOOST_REQUIRE_EQUAL (q.size(), 2U); BOOST_CHECK (q.front() == DCPTimePeriod(DCPTime(14), DCPTime(29))); BOOST_CHECK (q.back () == DCPTimePeriod(DCPTime(45), DCPTime(91))); } @@ -256,7 +257,7 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_period_coalesce_test2) p.push_back (A); p.push_back (B); list q = coalesce (p); - BOOST_REQUIRE_EQUAL (q.size(), 1); + BOOST_REQUIRE_EQUAL (q.size(), 1U); BOOST_CHECK (q.front() == DCPTimePeriod(DCPTime(14), DCPTime(91))); } @@ -268,7 +269,7 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_period_coalesce_test3) p.push_back (A); p.push_back (B); list q = coalesce (p); - BOOST_REQUIRE_EQUAL (q.size(), 1); + BOOST_REQUIRE_EQUAL (q.size(), 1U); BOOST_CHECK (q.front() == DCPTimePeriod(DCPTime(14), DCPTime(91))); } @@ -282,7 +283,7 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_period_coalesce_test4) p.push_back (B); p.push_back (C); list q = coalesce (p); - BOOST_REQUIRE_EQUAL (q.size(), 1); + BOOST_REQUIRE_EQUAL (q.size(), 1U); BOOST_CHECK (q.front() == DCPTimePeriod(DCPTime(14), DCPTime(106))); } @@ -296,11 +297,23 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_period_coalesce_test5) p.push_back (B); p.push_back (C); list q = coalesce (p); - BOOST_REQUIRE_EQUAL (q.size(), 2); + BOOST_REQUIRE_EQUAL (q.size(), 2U); BOOST_CHECK (q.front() == DCPTimePeriod(DCPTime(14), DCPTime(91))); BOOST_CHECK (q.back() == DCPTimePeriod(DCPTime(100), DCPTime(106))); } +BOOST_AUTO_TEST_CASE (test_coalesce_with_overlapping_periods) +{ + DCPTimePeriod A (DCPTime(0), DCPTime(10)); + DCPTimePeriod B (DCPTime(2), DCPTime(8)); + list p; + p.push_back (A); + p.push_back (B); + auto q = coalesce(p); + BOOST_REQUIRE_EQUAL (q.size(), 1U); + BOOST_CHECK (q.front() == DCPTimePeriod(DCPTime(0), DCPTime(10))); +} + /* Straightforward test of DCPTime::ceil */ BOOST_AUTO_TEST_CASE (dcpomatic_time_ceil_test) { @@ -316,6 +329,9 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_ceil_test) /* Check that rounding up to non-integer frame rates works */ BOOST_CHECK_EQUAL (DCPTime(45312).ceil(29.976).get(), 48038); + + /* Check another tricky case that used to fail */ + BOOST_CHECK_EQUAL (DCPTime(212256039).ceil(23.976).get(), 212256256); } /* Straightforward test of DCPTime::floor */