X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fvf_test.cc;h=6fd0a00e8de3c8596355d38d3943ff14f50a71f0;hb=6ef1fc5f40567650ca9ef2b7644e4fdd97640ae6;hp=6862a12043fa9a497f4ee79f99006a31dc8ef541;hpb=5e3ee55930334c7e0a5a398918794bff955383d4;p=dcpomatic.git diff --git a/test/vf_test.cc b/test/vf_test.cc index 6862a1204..6fd0a00e8 100644 --- a/test/vf_test.cc +++ b/test/vf_test.cc @@ -45,6 +45,7 @@ using std::string; using std::cout; using boost::shared_ptr; using boost::dynamic_pointer_cast; +using namespace dcpomatic; /** Test the logic which decides whether a DCP can be referenced or not */ BOOST_AUTO_TEST_CASE (vf_test1) @@ -74,13 +75,11 @@ BOOST_AUTO_TEST_CASE (vf_test1) shared_ptr other (new FFmpegContent("test/data/test.mp4")); film->examine_and_add_content (other); BOOST_REQUIRE (!wait_for_jobs()); + BOOST_CHECK (!other->audio); - /* Not possible if there is overlap */ + /* Not possible if there is overlap; we only check video here as that's all test.mp4 has */ other->set_position (film, DCPTime()); BOOST_CHECK (!dcp->can_reference_video(film, why_not)); - BOOST_CHECK (!dcp->can_reference_audio(film, why_not)); - BOOST_CHECK (!dcp->can_reference_text(film, TEXT_OPEN_SUBTITLE, why_not)); - BOOST_CHECK (!dcp->can_reference_text(film, TEXT_CLOSED_CAPTION, why_not)); /* This should not be considered an overlap */ other->set_position (film, dcp->end(film)); @@ -288,7 +287,7 @@ BOOST_AUTO_TEST_CASE (vf_test5) BOOST_REQUIRE (!wait_for_jobs()); /* Check that the selected reel assets are right */ - shared_ptr player (new Player(vf, vf->playlist())); + shared_ptr player (new Player(vf)); list a = player->get_reel_assets(); BOOST_REQUIRE_EQUAL (a.size(), 4); list::const_iterator i = a.begin(); @@ -336,3 +335,39 @@ BOOST_AUTO_TEST_CASE (vf_test6) vf->make_dcp (); BOOST_REQUIRE (!wait_for_jobs()); } + +/** Test bug #1643 (the second part; referring fails if there are gaps) */ +BOOST_AUTO_TEST_CASE (vf_test7) +{ + /* First OV */ + shared_ptr ov1 = new_test_film2 ("vf_test7_ov1"); + ov1->set_video_frame_rate (24); + ov1->examine_and_add_content (content_factory("test/data/flat_red.png").front()); + BOOST_REQUIRE (!wait_for_jobs()); + ov1->make_dcp (); + BOOST_REQUIRE (!wait_for_jobs()); + + /* Second OV */ + shared_ptr ov2 = new_test_film2 ("vf_test7_ov2"); + ov2->set_video_frame_rate (24); + ov2->examine_and_add_content (content_factory("test/data/flat_red.png").front()); + BOOST_REQUIRE (!wait_for_jobs()); + ov2->make_dcp (); + BOOST_REQUIRE (!wait_for_jobs()); + + /* VF */ + shared_ptr vf = new_test_film2 ("vf_test7_vf"); + shared_ptr ov1_dcp (new DCPContent(ov1->dir(ov1->dcp_name()))); + vf->examine_and_add_content (ov1_dcp); + shared_ptr ov2_dcp (new DCPContent(ov1->dir(ov1->dcp_name()))); + vf->examine_and_add_content (ov2_dcp); + BOOST_REQUIRE (!wait_for_jobs()); + vf->set_reel_type (REELTYPE_BY_VIDEO_CONTENT); + ov1_dcp->set_reference_video (true); + ov2_dcp->set_reference_video (true); + ov1_dcp->set_position (vf, DCPTime::from_seconds(1)); + ov2_dcp->set_position (vf, DCPTime::from_seconds(20)); + vf->write_metadata (); + vf->make_dcp (); + BOOST_REQUIRE (!wait_for_jobs()); +}