Supporters update.
[dcpomatic.git] / test / subtitle_reel_test.cc
index d75c8af1a155dfd6b8151fb9fcd8aa3cb23b0e84..147f5c5237d25f2e27ee66c31cfa39f522394c75 100644 (file)
@@ -19,9 +19,9 @@
 */
 
 #include "lib/content_factory.h"
+#include "lib/dcp_subtitle_content.h"
 #include "lib/film.h"
 #include "lib/image_content.h"
-#include "lib/dcp_subtitle_content.h"
 #include "lib/text_content.h"
 #include "lib/video_content.h"
 #include "test.h"
@@ -35,9 +35,8 @@
 
 
 using std::list;
-using std::string;
-using std::shared_ptr;
 using std::make_shared;
+using std::string;
 using boost::optional;
 
 
@@ -61,9 +60,11 @@ BOOST_AUTO_TEST_CASE (subtitle_reel_test)
        red_a->set_position (film, dcpomatic::DCPTime());
        red_a->video->set_length (240);
        sub_a->set_position (film, dcpomatic::DCPTime());
+       sub_a->only_text()->set_language(dcp::LanguageTag("de"));
        red_b->set_position (film, dcpomatic::DCPTime::from_seconds(10));
        red_b->video->set_length (240);
        sub_b->set_position (film, dcpomatic::DCPTime::from_seconds(10));
+       sub_b->only_text()->set_language(dcp::LanguageTag("de"));
 
        film->set_reel_type (ReelType::BY_VIDEO_CONTENT);
 
@@ -72,7 +73,7 @@ BOOST_AUTO_TEST_CASE (subtitle_reel_test)
        dcp::DCP dcp ("build/test/subtitle_reel_test/" + film->dcp_name());
        dcp.read ();
        BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1U);
-       shared_ptr<dcp::CPL> cpl = dcp.cpls().front();
+       auto cpl = dcp.cpls().front();
 
        auto reels = cpl->reels ();
        BOOST_REQUIRE_EQUAL (reels.size(), 2U);
@@ -106,13 +107,13 @@ BOOST_AUTO_TEST_CASE (subtitle_in_all_reels_test)
        film->set_sequence (false);
        film->set_reel_type (ReelType::BY_VIDEO_CONTENT);
        for (int i = 0; i < 3; ++i) {
-               auto video = content_factory("test/data/flat_red.png").front();
+               auto video = content_factory("test/data/flat_red.png")[0];
                film->examine_and_add_content (video);
                BOOST_REQUIRE (!wait_for_jobs());
                video->video->set_length (15 * 24);
                video->set_position (film, dcpomatic::DCPTime::from_seconds(15 * i));
        }
-       auto subs = content_factory("test/data/15s.srt").front();
+       auto subs = content_factory("test/data/15s.srt")[0];
        film->examine_and_add_content (subs);
        BOOST_REQUIRE (!wait_for_jobs());
        make_and_verify_dcp (
@@ -146,31 +147,35 @@ BOOST_AUTO_TEST_CASE (closed_captions_in_all_reels_test)
        film->set_reel_type (ReelType::BY_VIDEO_CONTENT);
 
        for (int i = 0; i < 3; ++i) {
-               auto video = content_factory("test/data/flat_red.png").front();
+               auto video = content_factory("test/data/flat_red.png")[0];
                film->examine_and_add_content (video);
                BOOST_REQUIRE (!wait_for_jobs());
                video->video->set_length (15 * 24);
                video->set_position (film, dcpomatic::DCPTime::from_seconds(15 * i));
        }
 
-       auto ccap1 = content_factory("test/data/15s.srt").front();
+       auto ccap1 = content_factory("test/data/15s.srt")[0];
        film->examine_and_add_content (ccap1);
        BOOST_REQUIRE (!wait_for_jobs());
        ccap1->text.front()->set_type (TextType::CLOSED_CAPTION);
-       ccap1->text.front()->set_dcp_track (DCPTextTrack("Test", "de-DE"));
+       ccap1->text.front()->set_dcp_track (DCPTextTrack("Test", dcp::LanguageTag("de-DE")));
 
-       auto ccap2 = content_factory("test/data/15s.srt").front();
+       auto ccap2 = content_factory("test/data/15s.srt")[0];
        film->examine_and_add_content (ccap2);
        BOOST_REQUIRE (!wait_for_jobs());
        ccap2->text.front()->set_type (TextType::CLOSED_CAPTION);
-       ccap2->text.front()->set_dcp_track (DCPTextTrack("Other", "en-GB"));
+       ccap2->text.front()->set_dcp_track (DCPTextTrack("Other", dcp::LanguageTag("en-GB")));
 
        make_and_verify_dcp (
                film,
                {
                        dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME,
                        dcp::VerificationNote::Code::INVALID_SUBTITLE_SPACING
-               });
+               },
+               true,
+               /* ClairMeta gives an error with multiple ClosedCaption assets */
+               false
+               );
 
        dcp::DCP dcp ("build/test/closed_captions_in_all_reels_test/" + film->dcp_name());
        dcp.read ();
@@ -201,31 +206,32 @@ BOOST_AUTO_TEST_CASE (subtitles_split_at_reel_boundaries)
        film->set_reel_type (ReelType::BY_VIDEO_CONTENT);
 
        for (int i = 0; i < 3; ++i) {
-               auto video = content_factory("test/data/flat_red.png").front();
+               auto video = content_factory("test/data/flat_red.png")[0];
                film->examine_and_add_content (video);
                BOOST_REQUIRE (!wait_for_jobs());
                video->video->set_length (15 * 24);
                video->set_position (film, dcpomatic::DCPTime::from_seconds(15 * i));
        }
 
-       auto subtitle = content_factory("test/data/45s.srt").front();
+       auto subtitle = content_factory("test/data/45s.srt")[0];
        film->examine_and_add_content (subtitle);
        BOOST_REQUIRE (!wait_for_jobs());
+       subtitle->only_text()->set_language(dcp::LanguageTag("de"));
 
-       make_and_verify_dcp (film, {{ dcp::VerificationNote::Code::INVALID_STANDARD }});
+       make_and_verify_dcp (film, { dcp::VerificationNote::Code::INVALID_STANDARD });
 
        dcp::DCP dcp (film->dir(film->dcp_name()));
        dcp.read();
-       BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1);
+       BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1U);
        auto cpl = dcp.cpls()[0];
-       BOOST_REQUIRE_EQUAL (cpl->reels().size(), 3);
+       BOOST_REQUIRE_EQUAL (cpl->reels().size(), 3U);
 
        for (auto i: cpl->reels()) {
                auto reel_sub = i->main_subtitle();
                BOOST_REQUIRE (reel_sub);
                auto sub = reel_sub->asset();
                BOOST_REQUIRE (sub);
-               BOOST_CHECK_EQUAL (sub->subtitles().size(), 1);
+               BOOST_CHECK_EQUAL (sub->subtitles().size(), 1U);
        }
 }