X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fkdm_naming_test.cc;h=0f44fe2ea570cef51e83cf8b5258008cc3b210cf;hb=a7fa6e05bf01b7739556b1310db90326bf4b7cbc;hp=f692c165d6edde466efde8dcf97a58ea036c7e82;hpb=689fa55d1529ad88449ca464e9107c4dcc54d1cb;p=dcpomatic.git diff --git a/test/kdm_naming_test.cc b/test/kdm_naming_test.cc index f692c165d..0f44fe2ea 100644 --- a/test/kdm_naming_test.cc +++ b/test/kdm_naming_test.cc @@ -57,23 +57,21 @@ BOOST_AUTO_TEST_CASE (single_kdm_naming_test) { auto c = Config::instance(); - auto cert = c->decryption_chain()->leaf(); + auto crypt_cert = c->decryption_chain()->leaf(); - /* Cinema A: UTC +4:30 */ - auto cinema_a = make_shared("Cinema A", list(), "", 4, 30); - cinema_a_screen_1 = make_shared("Screen 1", "", cert, vector()); + auto cinema_a = make_shared("Cinema A", vector(), ""); + cinema_a_screen_1 = std::make_shared("Screen 1", "", crypt_cert, boost::none, vector()); cinema_a->add_screen (cinema_a_screen_1); - cinema_a_screen_2 = make_shared("Screen 2", "", cert, vector()); + cinema_a_screen_2 = std::make_shared("Screen 2", "", crypt_cert, boost::none, vector()); cinema_a->add_screen (cinema_a_screen_2); c->add_cinema (cinema_a); - /* Cinema B: UTC -1:00 */ - auto cinema_b = make_shared("Cinema B", list(), "", -1, 0); - cinema_b_screen_x = make_shared("Screen X", "", cert, vector()); + auto cinema_b = make_shared("Cinema B", vector(), ""); + cinema_b_screen_x = std::make_shared("Screen X", "", crypt_cert, boost::none, vector()); cinema_b->add_screen (cinema_b_screen_x); - cinema_b_screen_y = make_shared("Screen Y", "", cert, vector()); + cinema_b_screen_y = std::make_shared("Screen Y", "", crypt_cert, boost::none, vector()); cinema_b->add_screen (cinema_b_screen_y); - cinema_b_screen_z = make_shared("Screen Z", "", cert, vector()); + cinema_b_screen_z = std::make_shared("Screen Z", "", crypt_cert, boost::none, vector()); cinema_b->add_screen (cinema_b_screen_z); c->add_cinema (cinema_a); @@ -81,31 +79,37 @@ BOOST_AUTO_TEST_CASE (single_kdm_naming_test) boost::filesystem::remove_all ("build/test/single_kdm_naming_test"); auto film = new_test_film2 ("single_kdm_naming_test"); film->set_name ("my_great_film"); - film->examine_and_add_content (content_factory("test/data/flat_black.png").front()); + film->examine_and_add_content (content_factory("test/data/flat_black.png")[0]); BOOST_REQUIRE (!wait_for_jobs()); film->set_encrypted (true); make_and_verify_dcp (film); auto cpls = film->cpls (); BOOST_REQUIRE(cpls.size() == 1); - dcp::LocalTime from (cert.not_before()); + auto sign_cert = c->signer_chain()->leaf(); + + dcp::LocalTime from = sign_cert.not_before(); + from.set_offset({ 4, 30 }); from.add_months (2); - dcp::LocalTime until (cert.not_after()); + dcp::LocalTime until = sign_cert.not_after(); + until.set_offset({ 4, 30 }); until.add_months (-2); - auto const from_string = from.date() + " " + from.time_of_day(true, false); - auto const until_string = until.date() + " " + until.time_of_day(true, false); + std::vector period_checks; auto cpl = cpls.front().cpl_file; + std::function make_kdm = [film, cpl](dcp::LocalTime begin, dcp::LocalTime end) { + return film->make_kdm(cpl, begin, end); + }; auto kdm = kdm_for_screen ( - film, - cpls.front().cpl_file, + make_kdm, cinema_a_screen_1, - boost::posix_time::time_from_string(from_string), - boost::posix_time::time_from_string(until_string), + from, + until, dcp::Formulation::MODIFIED_TRANSITIONAL_1, false, - optional() + optional(), + period_checks ); write_files ( @@ -120,7 +124,8 @@ BOOST_AUTO_TEST_CASE (single_kdm_naming_test) auto until_time = until.time_of_day (true, false); boost::algorithm::replace_all (until_time, ":", "-"); - auto const ref = String::compose("KDM_Cinema_A_-_Screen_1_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + auto const dcp_date = boost::gregorian::to_iso_string(film->isdcf_date()); + auto const ref = String::compose("KDM_Cinema_A_-_Screen_1_-_MyGreatFilm_TST-1_F_XX-XX_MOS_2K_%1_SMPTE_OV_-_%2_%3_-_%4_%5.xml", dcp_date, from.date(), from_time, until.date(), until_time); BOOST_CHECK_MESSAGE (boost::filesystem::exists("build/test/single_kdm_naming_test/" + ref), "File " << ref << " not found"); } @@ -129,13 +134,11 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on( { using boost::filesystem::path; - auto cert = Config::instance()->decryption_chain()->leaf(); - /* Film */ boost::filesystem::remove_all ("build/test/directory_kdm_naming_test"); auto film = new_test_film2 ( "directory_kdm_naming_test", - { content_factory("test/data/flat_black.png").front() } + { content_factory("test/data/flat_black.png")[0] } ); film->set_name ("my_great_film"); @@ -144,32 +147,37 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on( auto cpls = film->cpls (); BOOST_REQUIRE(cpls.size() == 1); - dcp::LocalTime from (cert.not_before()); + auto sign_cert = Config::instance()->signer_chain()->leaf(); + + dcp::LocalTime from (sign_cert.not_before()); from.add_months (2); - dcp::LocalTime until (cert.not_after()); + dcp::LocalTime until (sign_cert.not_after()); until.add_months (-2); - string const from_string = from.date() + " " + from.time_of_day(true, false); - string const until_string = until.date() + " " + until.time_of_day(true, false); - - list> screens = { + vector> screens = { cinema_a_screen_2, cinema_b_screen_x, cinema_a_screen_1, (cinema_b_screen_z) }; auto const cpl = cpls.front().cpl_file; auto const cpl_id = cpls.front().cpl_id; + std::vector period_checks; list kdms; + + std::function make_kdm = [film, cpls](dcp::LocalTime begin, dcp::LocalTime end) { + return film->make_kdm(cpls.front().cpl_file, begin, end); + }; + for (auto i: screens) { auto kdm = kdm_for_screen ( - film, - cpls.front().cpl_file, + make_kdm, i, - boost::posix_time::time_from_string(from_string), - boost::posix_time::time_from_string(until_string), + from, + until, dcp::Formulation::MODIFIED_TRANSITIONAL_1, false, - optional() + optional(), + period_checks ); kdms.push_back (kdm); @@ -180,8 +188,8 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on( path("build/test/directory_kdm_naming_test"), dcp::NameFormat("%c - %s - %f - %b - %e"), #ifdef DCPOMATIC_WINDOWS - /* With %i in the format the path is too long for Windows */ - dcp::NameFormat("KDM %c - %s - %f - %b - %e"), + /* Use a shorter name on Windows so that the paths aren't too long */ + dcp::NameFormat("KDM %f"), #else dcp::NameFormat("KDM %c - %s - %f - %b - %e - %i"), #endif @@ -193,38 +201,42 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on( auto until_time = until.time_of_day (true, false); boost::algorithm::replace_all (until_time, ":", "-"); + auto const dcp_date = boost::gregorian::to_iso_string(film->isdcf_date()); + auto const dcp_name = String::compose("MyGreatFilm_TST-1_F_XX-XX_MOS_2K_%1_SMPTE_OV", dcp_date); + auto const common = String::compose("%1_-_%2_%3_-_%4_%5", dcp_name, from.date(), from_time, until.date(), until_time); + path const base = "build/test/directory_kdm_naming_test"; - path dir_a = String::compose("Cinema_A_-_%s_-_my_great_film_-_%1_%2_-_%3_%4", from.date(), from_time, until.date(), until_time); + path dir_a = String::compose("Cinema_A_-_%s_-_%1", common); BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_a), "Directory " << dir_a << " not found"); - path dir_b = String::compose("Cinema_B_-_%s_-_my_great_film_-_%1_%2_-_%3_%4", from.date(), from_time, until.date(), until_time); + path dir_b = String::compose("Cinema_B_-_%s_-_%1", common); BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_b), "Directory " << dir_b << " not found"); #ifdef DCPOMATIC_WINDOWS - path ref = String::compose("KDM_Cinema_A_-_Screen_2_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + path ref = String::compose("KDM_%1.xml", dcp_name); #else - path ref = String::compose("KDM_Cinema_A_-_Screen_2_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + path ref = String::compose("KDM_Cinema_A_-_Screen_2_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_a / ref), "File " << ref << " not found"); #ifdef DCPOMATIC_WINDOWS - ref = String::compose("KDM_Cinema_B_-_Screen_X_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + ref = String::compose("KDM_%1.xml", dcp_name); #else - ref = String::compose("KDM_Cinema_B_-_Screen_X_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + ref = String::compose("KDM_Cinema_B_-_Screen_X_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_b / ref), "File " << ref << " not found"); #ifdef DCPOMATIC_WINDOWS - ref = String::compose("KDM_Cinema_A_-_Screen_1_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + ref = String::compose("KDM_%1.xml", dcp_name); #else - ref = String::compose("KDM_Cinema_A_-_Screen_1_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + ref = String::compose("KDM_Cinema_A_-_Screen_1_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_a / ref), "File " << ref << " not found"); #ifdef DCPOMATIC_WINDOWS - ref = String::compose("KDM_Cinema_B_-_Screen_Z_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + ref = String::compose("KDM_%1.xml", dcp_name); #else - ref = String::compose("KDM_Cinema_B_-_Screen_Z_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + ref = String::compose("KDM_Cinema_B_-_Screen_Z_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_b / ref), "File " << ref << " not found"); }