Fill test disk partitions with random noise to expose more bugs.
[dcpomatic.git] / test / isdcf_name_test.cc
index b55cea1adfaf487f0a27539136276f18772f11a4..d3227f636ee5ba57d75e71ef40841d73dc1ae49e 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014-2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
@@ -59,20 +59,17 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        auto audio = content_factory("test/data/sine_440.wav").front();
        film->examine_and_add_content (audio);
        BOOST_REQUIRE (!wait_for_jobs());
-       BOOST_REQUIRE (audio->audio);
-       audio->audio->set_language(dcp::LanguageTag("en-US"));
+       film->set_audio_language(dcp::LanguageTag("en-US"));
        film->set_content_versions({"1"});
        film->set_release_territory(dcp::LanguageTag::RegionSubtag("GB"));
        film->set_ratings({dcp::Rating("BBFC", "PG")});
        film->set_studio (string("ST"));
        film->set_facility (string("FAC"));
-       ISDCFMetadata m;
-       film->set_isdcf_metadata (m);
        film->set_interop (true);
        BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilm_FTR-1_F_EN-XX_GB-PG_10_2K_ST_20140704_FAC_IOP_OV");
 
        /* Check that specifying no audio language writes XX */
-       audio->audio->set_language (boost::none);
+       film->set_audio_language (boost::none);
        BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilm_FTR-1_F_XX-XX_GB-PG_10_2K_ST_20140704_FAC_IOP_OV");
 
        /* Test a long name and some different data */
@@ -97,9 +94,7 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        audio = content_factory("test/data/sine_440.wav").front();
        film->examine_and_add_content (audio);
        BOOST_REQUIRE (!wait_for_jobs());
-       BOOST_REQUIRE (audio->audio);
-       audio->audio->set_language (dcp::LanguageTag("de-DE"));
-       film->set_isdcf_metadata (m);
+       film->set_audio_language (dcp::LanguageTag("de-DE"));
        film->set_interop (false);
        BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_TLR-2_S_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
 
@@ -129,6 +124,13 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
 
        content->video->set_custom_ratio (1.9);
        BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2_F-190_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
+
+       /* And it should be possible to set any 'strange' ratio, not just the ones we know about */
+       content->video->set_custom_ratio (2.2);
+       BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2_F-220_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
+       content->video->set_custom_ratio (1.95);
+       BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2_F-195_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
+
        content->video->set_custom_ratio (1.33);
 
        /* Test 3D */
@@ -139,26 +141,24 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        /* Test content type modifiers */
 
        film->set_three_d (false);
-       m.temp_version = true;
-       m.pre_release = true;
-       m.red_band = true;
-       m.chain = "MyChain";
-       m.two_d_version_of_three_d = true;
-       m.mastered_luminance = "4fl";
-       film->set_isdcf_metadata (m);
+       film->set_temp_version (true);
+       film->set_pre_release (true);
+       film->set_red_band (true);
+       film->set_two_d_version_of_three_d (true);
+       film->set_chain (string("MyChain"));
+       film->set_luminance (dcp::Luminance(4.5, dcp::Luminance::Unit::FOOT_LAMBERT));
        film->set_video_frame_rate (48);
-       BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-Temp-Pre-RedBand-MyChain-2D-4fl-48_F-133_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
+       BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-Temp-Pre-RedBand-MyChain-2D-4.5fl-48_F-133_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
 
        /* Test a name which is already in camelCase */
 
        film->set_three_d (false);
-       m.temp_version = false;
-       m.pre_release = false;
-       m.red_band = false;
-       m.chain = "";
-       m.two_d_version_of_three_d = false;
-       m.mastered_luminance = "";
-       film->set_isdcf_metadata (m);
+       film->set_temp_version (false);
+       film->set_pre_release (false);
+       film->set_red_band (false);
+       film->set_two_d_version_of_three_d (false);
+       film->set_chain (string(""));
+       film->set_luminance (boost::none);
        film->set_video_frame_rate (24);
        film->set_name ("IKnowCamels");
        BOOST_CHECK_EQUAL (film->isdcf_name(false), "IKnowCamels_XSN-2_F-133_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
@@ -230,5 +230,9 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        mapping.set (0, dcp::Channel::VI, 1.0);
        sound->audio->set_mapping (mapping);
        BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_71-HI-VI_4K_DI_20140704_PPF_SMPTE_OV");
+
+       /* Check that the proper codes are used, not just part of the language code; in this case, QBP instead of PT (#2235) */
+       film->set_audio_language(dcp::LanguageTag("pt-BR"));
+       BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_QBP-fr_US-R_71-HI-VI_4K_DI_20140704_PPF_SMPTE_OV");
 }