Fill test disk partitions with random noise to expose more bugs.
[dcpomatic.git] / test / dcpomatic_time_test.cc
index 1637738ad7c7fb66c623f8c043f41e7e709100cc..5d23f247808135eeadfc94ad17451ffb7b42db45 100644 (file)
@@ -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<DCPTimePeriod> 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<DCPTimePeriod> 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<DCPTimePeriod> 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<DCPTimePeriod> 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<DCPTimePeriod> 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<DCPTimePeriod> 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)
 {