Default to SMPTE for tests.
[dcpomatic.git] / test / reels_test.cc
index 9718898e256547f7df4fd0b8fdbded98f5242a53..1951d53748a8f9b4cfeda161c8b83fb3d0fd6bed 100644 (file)
@@ -174,7 +174,7 @@ BOOST_AUTO_TEST_CASE (reels_test3)
        BOOST_CHECK_EQUAL (i->to.get(), 96000 * 3);
        ++i;
        BOOST_CHECK_EQUAL (i->from.get(), 96000 * 3);
-       BOOST_CHECK_EQUAL (i->to.get(), sub->full_length().round_up(film->video_frame_rate()).get());
+       BOOST_CHECK_EQUAL (i->to.get(), sub->full_length().ceil(film->video_frame_rate()).get());
 }
 
 /** Check creation of a multi-reel DCP with a single .srt subtitle file;
@@ -221,3 +221,55 @@ BOOST_AUTO_TEST_CASE (reels_test4)
 
        check_dcp ("test/data/reels_test4", film->dir (film->dcp_name()));
 }
+
+BOOST_AUTO_TEST_CASE (reels_test5)
+{
+       shared_ptr<Film> film = new_test_film ("reels_test4");
+       shared_ptr<DCPContent> dcp (new DCPContent (film, "test/data/reels_test4"));
+       film->examine_and_add_content (dcp);
+       wait_for_jobs ();
+
+       dcp->set_position(DCPTime(123));
+
+       {
+               list<DCPTimePeriod> p = dcp->reels ();
+               BOOST_REQUIRE_EQUAL (p.size(), 4);
+               list<DCPTimePeriod>::const_iterator i = p.begin();
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 0), DCPTime(123 + 96000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 96000), DCPTime(123 + 192000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 192000), DCPTime(123 + 288000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 288000), DCPTime(123 + 384000)));
+       }
+
+       {
+               dcp->set_trim_start (ContentTime::from_seconds (0.5));
+               list<DCPTimePeriod> p = dcp->reels ();
+               BOOST_REQUIRE_EQUAL (p.size(), 4);
+               list<DCPTimePeriod>::const_iterator i = p.begin();
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 0), DCPTime(123 + 48000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 48000), DCPTime(123 + 144000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 144000), DCPTime(123 + 240000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 240000), DCPTime(123 + 336000)));
+       }
+
+       {
+               dcp->set_trim_end (ContentTime::from_seconds (0.5));
+               list<DCPTimePeriod> p = dcp->reels ();
+               BOOST_REQUIRE_EQUAL (p.size(), 4);
+               list<DCPTimePeriod>::const_iterator i = p.begin();
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 0), DCPTime(123 + 48000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 48000), DCPTime(123 + 144000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 144000), DCPTime(123 + 240000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 240000), DCPTime(123 + 288000)));
+       }
+
+       {
+               dcp->set_trim_start (ContentTime::from_seconds (1.5));
+               list<DCPTimePeriod> p = dcp->reels ();
+               BOOST_REQUIRE_EQUAL (p.size(), 3);
+               list<DCPTimePeriod>::const_iterator i = p.begin();
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 0), DCPTime(123 + 48000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 48000), DCPTime(123 + 144000)));
+               BOOST_CHECK (*i++ == DCPTimePeriod (DCPTime(123 + 144000), DCPTime(123 + 192000)));
+       }
+}