X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fvf_test.cc;h=8cbf7a3457da5cb74e57a1b82cab60e19d70ef70;hb=d366e853399d3247077aa1a04d8b6d6ef38c7cfc;hp=6862a12043fa9a497f4ee79f99006a31dc8ef541;hpb=5e3ee55930334c7e0a5a398918794bff955383d4;p=dcpomatic.git diff --git a/test/vf_test.cc b/test/vf_test.cc index 6862a1204..8cbf7a345 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)); @@ -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()); +}