X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fmarkers_test.cc;h=afea00d525ebcce2db2b376b215db6a27d1b1dc2;hb=a66c4f957d50e93e01912810876fbdd883ac5d6a;hp=cbdad26c516279b52dda6d0d3593610ced7989df;hpb=3a0fba174d25c7be461b4714b5ab8bd1fcf81ed8;p=dcpomatic.git diff --git a/test/markers_test.cc b/test/markers_test.cc index cbdad26c5..afea00d52 100644 --- a/test/markers_test.cc +++ b/test/markers_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2020 Carl Hetherington + Copyright (C) 2020-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -37,34 +37,32 @@ using std::string; using boost::optional; -using boost::shared_ptr; /** Check that FFOC and LFOC are automatically added if not specified */ BOOST_AUTO_TEST_CASE (automatic_ffoc_lfoc_markers_test1) { string const name = "automatic_ffoc_lfoc_markers_test1"; - shared_ptr film = new_test_film2 (name); - film->examine_and_add_content (content_factory("test/data/flat_red.png").front()); + auto film = new_test_film2 (name); + film->examine_and_add_content (content_factory("test/data/flat_red.png")[0]); BOOST_REQUIRE (!wait_for_jobs()); film->set_interop (false); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs()); + make_and_verify_dcp (film); dcp::DCP dcp (String::compose("build/test/%1/%2", name, film->dcp_name())); dcp.read (); BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1U); - shared_ptr cpl = dcp.cpls().front(); + auto cpl = dcp.cpls().front(); BOOST_REQUIRE_EQUAL (cpl->reels().size(), 1U); - shared_ptr reel = cpl->reels().front(); - shared_ptr markers = reel->main_markers(); + auto reel = cpl->reels()[0]; + auto markers = reel->main_markers(); BOOST_REQUIRE (markers); - optional ffoc = markers->get (dcp::Marker::FFOC); + auto ffoc = markers->get (dcp::Marker::FFOC); BOOST_REQUIRE (ffoc); - BOOST_CHECK (*ffoc == dcp::Time (0, 0, 0, 0, 24)); - optional lfoc = markers->get (dcp::Marker::LFOC); + BOOST_CHECK (*ffoc == dcp::Time(0, 0, 0, 1, 24)); + auto lfoc = markers->get (dcp::Marker::LFOC); BOOST_REQUIRE (lfoc); BOOST_CHECK (*lfoc == dcp::Time(0, 0, 9, 23, 24)); } @@ -74,30 +72,70 @@ BOOST_AUTO_TEST_CASE (automatic_ffoc_lfoc_markers_test1) BOOST_AUTO_TEST_CASE (automatic_ffoc_lfoc_markers_test2) { string const name = "automatic_ffoc_lfoc_markers_test2"; - shared_ptr film = new_test_film2 (name); - film->examine_and_add_content (content_factory("test/data/flat_red.png").front()); + auto film = new_test_film2 (name); + film->examine_and_add_content (content_factory("test/data/flat_red.png")[0]); BOOST_REQUIRE (!wait_for_jobs()); film->set_interop (false); film->set_marker (dcp::Marker::FFOC, dcpomatic::DCPTime::from_seconds(1)); film->set_marker (dcp::Marker::LFOC, dcpomatic::DCPTime::from_seconds(9)); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs()); + make_and_verify_dcp ( + film, + { + dcp::VerificationNote::Code::INCORRECT_FFOC, + dcp::VerificationNote::Code::INCORRECT_LFOC + }); dcp::DCP dcp (String::compose("build/test/%1/%2", name, film->dcp_name())); dcp.read (); BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1U); - shared_ptr cpl = dcp.cpls().front(); + auto cpl = dcp.cpls().front(); BOOST_REQUIRE_EQUAL (cpl->reels().size(), 1U); - shared_ptr reel = cpl->reels().front(); - shared_ptr markers = reel->main_markers(); + auto reel = cpl->reels()[0]; + auto markers = reel->main_markers(); BOOST_REQUIRE (markers); - optional ffoc = markers->get (dcp::Marker::FFOC); + auto ffoc = markers->get (dcp::Marker::FFOC); BOOST_REQUIRE (ffoc); BOOST_CHECK (*ffoc == dcp::Time (0, 0, 1, 0, 24)); - optional lfoc = markers->get (dcp::Marker::LFOC); + auto lfoc = markers->get (dcp::Marker::LFOC); BOOST_REQUIRE (lfoc); BOOST_CHECK (*lfoc == dcp::Time(0, 0, 9, 0, 24)); } + + +BOOST_AUTO_TEST_CASE(markers_correct_with_reels) +{ + string const name = "markers_correct_with_reels"; + auto content1 = content_factory("test/data/flat_red.png")[0]; + auto content2 = content_factory("test/data/flat_red.png")[0]; + auto film = new_test_film2(name, { content1, content2}); + + film->set_interop(false); + film->set_reel_type(ReelType::BY_VIDEO_CONTENT); + make_and_verify_dcp(film); + + dcp::DCP dcp(String::compose("build/test/%1/%2", name, film->dcp_name())); + dcp.read (); + BOOST_REQUIRE_EQUAL(dcp.cpls().size(), 1U); + auto cpl = dcp.cpls()[0]; + BOOST_REQUIRE_EQUAL(cpl->reels().size(), 2U); + + auto markers1 = cpl->reels()[0]->main_markers(); + BOOST_REQUIRE(markers1); + auto ffoc = markers1->get(dcp::Marker::FFOC); + BOOST_REQUIRE(ffoc); + BOOST_CHECK(*ffoc == dcp::Time(0, 0, 0, 1, 24)); + auto no_lfoc = markers1->get(dcp::Marker::LFOC); + BOOST_CHECK(!no_lfoc); + + auto markers2 = cpl->reels()[1]->main_markers(); + BOOST_REQUIRE(markers2); + auto no_ffoc = markers2->get(dcp::Marker::FFOC); + BOOST_REQUIRE(!no_ffoc); + auto lfoc = markers2->get(dcp::Marker::LFOC); + BOOST_REQUIRE(lfoc); + BOOST_CHECK(*lfoc == dcp::Time(0, 0, 9, 23, 24)); +} +