Verify a whole bunch of DCPs made by unit tests.
[dcpomatic.git] / test / kdm_naming_test.cc
index 35188d5e602c56cad17b5743e87f9f50599b4ff6..c58de34711c509a5d4ab4b554683f5abaec14dcf 100644 (file)
 #include "lib/kdm_with_metadata.h"
 #include "test.h"
 #include <boost/test/unit_test.hpp>
-#include <boost/shared_ptr.hpp>
+
 
 using std::list;
 using std::string;
 using std::vector;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::optional;
-using boost::dynamic_pointer_cast;
+using std::dynamic_pointer_cast;
 
 static
 bool
@@ -79,10 +79,8 @@ BOOST_AUTO_TEST_CASE (single_kdm_naming_test)
        film->examine_and_add_content (content_factory("test/data/flat_black.png").front());
        BOOST_REQUIRE (!wait_for_jobs());
        film->set_encrypted (true);
-       film->make_dcp ();
-       BOOST_REQUIRE (!wait_for_jobs());
-       film->write_metadata ();
-       vector<CPLSummary> cpls = film->cpls ();
+       make_and_verify_dcp (film);
+       auto cpls = film->cpls ();
        BOOST_REQUIRE(cpls.size() == 1);
 
        dcp::LocalTime from (cert.not_before());
@@ -93,23 +91,20 @@ BOOST_AUTO_TEST_CASE (single_kdm_naming_test)
        string const from_string = from.date() + " " + from.time_of_day(true, false);
        string const until_string = until.date() + " " + until.time_of_day(true, false);
 
-       boost::filesystem::path cpl = cpls.front().cpl_file;
-       KDMWithMetadataPtr kdm = kdm_for_screen (
+       auto cpl = cpls.front().cpl_file;
+       auto kdm = kdm_for_screen (
                        film,
                        cpls.front().cpl_file,
                        cinema_a_screen_1,
                        boost::posix_time::time_from_string(from_string),
                        boost::posix_time::time_from_string(until_string),
-                       dcp::MODIFIED_TRANSITIONAL_1,
+                       dcp::Formulation::MODIFIED_TRANSITIONAL_1,
                        false,
                        optional<int>()
                        );
 
-       list<KDMWithMetadataPtr> kdms;
-       kdms.push_back (kdm);
-
        write_files (
-               kdms,
+               { kdm },
                boost::filesystem::path("build/test/single_kdm_naming_test"),
                dcp::NameFormat("KDM %c - %s - %f - %b - %e"),
                &confirm_overwrite
@@ -133,15 +128,15 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on(
 
        /* Film */
        boost::filesystem::remove_all ("build/test/directory_kdm_naming_test");
-       shared_ptr<Film> film = new_test_film2 ("directory_kdm_naming_test");
+       auto film = new_test_film2 (
+               "directory_kdm_naming_test",
+               { content_factory("test/data/flat_black.png").front() }
+               );
+
        film->set_name ("my_great_film");
-       film->examine_and_add_content (content_factory("test/data/flat_black.png").front());
-       BOOST_REQUIRE (!wait_for_jobs());
        film->set_encrypted (true);
-       film->make_dcp ();
-       BOOST_REQUIRE (!wait_for_jobs());
-       film->write_metadata ();
-       vector<CPLSummary> cpls = film->cpls ();
+       make_and_verify_dcp (film);
+       auto cpls = film->cpls ();
        BOOST_REQUIRE(cpls.size() == 1);
 
        dcp::LocalTime from (cert.not_before());
@@ -152,24 +147,22 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on(
        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<shared_ptr<dcpomatic::Screen> > screens;
-       screens.push_back (cinema_a_screen_2);
-       screens.push_back (cinema_b_screen_x);
-       screens.push_back (cinema_a_screen_1);
-       screens.push_back (cinema_b_screen_z);
+       list<shared_ptr<dcpomatic::Screen>> screens = {
+               cinema_a_screen_2, cinema_b_screen_x, cinema_a_screen_1, (cinema_b_screen_z)
+       };
 
-       path const cpl = cpls.front().cpl_file;
-       string const cpl_id = cpls.front().cpl_id;
+       auto const cpl = cpls.front().cpl_file;
+       auto const cpl_id = cpls.front().cpl_id;
 
        list<KDMWithMetadataPtr> kdms;
-       BOOST_FOREACH (shared_ptr<dcpomatic::Screen> i, screens) {
-               KDMWithMetadataPtr kdm = kdm_for_screen (
+       for (auto i: screens) {
+               auto kdm = kdm_for_screen (
                                film,
                                cpls.front().cpl_file,
                                i,
                                boost::posix_time::time_from_string(from_string),
                                boost::posix_time::time_from_string(until_string),
-                               dcp::MODIFIED_TRANSITIONAL_1,
+                               dcp::Formulation::MODIFIED_TRANSITIONAL_1,
                                false,
                                optional<int>()
                                );
@@ -181,13 +174,18 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on(
                collect(kdms),
                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"),
+#else
                dcp::NameFormat("KDM %c - %s - %f - %b - %e - %i"),
+#endif
                &confirm_overwrite
                );
 
-       string from_time = from.time_of_day (true, false);
+       auto from_time = from.time_of_day (true, false);
        boost::algorithm::replace_all (from_time, ":", "-");
-       string until_time = until.time_of_day (true, false);
+       auto until_time = until.time_of_day (true, false);
        boost::algorithm::replace_all (until_time, ":", "-");
 
        path const base = "build/test/directory_kdm_naming_test";
@@ -197,16 +195,32 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on(
        path dir_b = String::compose("Cinema_B_-_%s_-_my_great_film_-_%1_%2_-_%3_%4", from.date(), from_time, until.date(), until_time);
        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);
+#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);
+#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);
+#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);
+#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);
+#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);
+#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);
+#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);
+#endif
        BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_b / ref), "File " << ref << " not found");
 }