Restore burnt subtitle tests.
authorCarl Hetherington <cth@carlh.net>
Sat, 26 Aug 2023 17:49:25 +0000 (19:49 +0200)
committerCarl Hetherington <cth@carlh.net>
Tue, 29 Aug 2023 16:29:58 +0000 (18:29 +0200)
test/burnt_subtitle_test.cc
test/data
test/required_disk_space_test.cc
test/wscript

index 8136253e2cf6cffae5005331b935f207e194e8c4..104cbe95ce5e4d0fcfbdea44ec447deb67c25546 100644 (file)
 #include "lib/content_factory.h"
 #include "lib/dcp_content.h"
 #include "lib/dcp_content_type.h"
-#include "lib/dcp_text_content.h"
 #include "lib/film.h"
 #include "lib/log_entry.h"
-#include "lib/plain_text_content.h"
 #include "lib/ratio.h"
 #include "lib/text_content.h"
 #include "test.h"
@@ -52,6 +50,7 @@
 using std::dynamic_pointer_cast;
 using std::make_shared;
 using std::map;
+using std::string;
 using namespace dcpomatic;
 
 
@@ -62,14 +61,21 @@ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_subrip)
        film->set_container (Ratio::from_id ("185"));
        film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
        film->set_name ("frobozz");
-       auto content = make_shared<StringText>(film, "test/data/subrip2.srt");
-       content->subtitle->set_use (true);
-       content->subtitle->set_burn (true);
+       auto content = content_factory("test/data/subrip2.srt")[0];
+       content->text[0]->set_use(true);
+       content->text[0]->set_burn(true);
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
-       make_and_verify_dcp (film);
+       make_and_verify_dcp(
+               film,
+               { dcp::VerificationNote::Code::MISSING_CPL_METADATA }
+               );
 
-       check_dcp ("test/data/burnt_subtitle_test_subrip", film->dir (film->dcp_name ()));
+#ifdef DCPOMATIC_WINDOWS
+       check_dcp("test/data/windows/burnt_subtitle_test_subrip", film);
+#else
+       check_dcp("test/data/burnt_subtitle_test_subrip", film);
+#endif
 }
 
 /** Build a small DCP with no picture and a single subtitle overlaid onto it from a DCP XML file */
@@ -79,13 +85,19 @@ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_dcp)
        film->set_container (Ratio::from_id ("185"));
        film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
        film->set_name ("frobozz");
-       auto content = make_shared<DCPTextContent>(film, "test/data/dcp_sub.xml");
-       content->subtitle->set_use (true);
+       auto content = content_factory("test/data/dcp_sub.xml")[0];
+       content->text[0]->set_use(true);
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
-       make_and_verify_dcp (film);
-
-       check_dcp ("test/data/burnt_subtitle_test_dcp", film->dir (film->dcp_name ()));
+       make_and_verify_dcp(
+               film,
+               {
+                       dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE,
+                       dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME,
+                       dcp::VerificationNote::Code::MISSING_CPL_METADATA
+               });
+
+       check_dcp("test/data/burnt_subtitle_test_dcp", film);
 }
 
 /** Burn some subtitles into an existing DCP to check the colour conversion */
@@ -95,7 +107,7 @@ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_onto_dcp)
        film->set_container (Ratio::from_id ("185"));
        film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
        film->set_name ("frobozz");
-       film->examine_and_add_content (content_factory(film, "test/data/flat_black.png")[0]);
+       film->examine_and_add_content(content_factory("test/data/flat_black.png")[0]);
        BOOST_REQUIRE (!wait_for_jobs());
        make_and_verify_dcp (film);
 
@@ -104,13 +116,11 @@ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_onto_dcp)
        film2->set_container (Ratio::from_id ("185"));
        film2->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
        film2->set_name ("frobozz");
-       auto background_dcp = make_shared<DCPContent>(film2, film->dir(film->dcp_name()));
+       auto background_dcp = make_shared<DCPContent>(film->dir(film->dcp_name()));
        film2->examine_and_add_content (background_dcp);
-       auto sub = dynamic_pointer_cast<StringText> (
-               content_factory(film2, "test/data/subrip2.srt")[0]
-               );
-       sub->subtitle->set_burn (true);
-       sub->subtitle->set_outline (true);
+       auto sub = content_factory("test/data/subrip2.srt")[0];
+       sub->text[0]->set_burn(true);
+       sub->text[0]->set_effect(dcp::Effect::BORDER);
        film2->examine_and_add_content (sub);
        BOOST_REQUIRE (!wait_for_jobs());
        make_and_verify_dcp (film2);
@@ -120,8 +130,8 @@ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_onto_dcp)
 
        dcp::DCP dcp (film2->dir (film2->dcp_name ()));
        dcp.read ();
-       BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1);
-       BOOST_REQUIRE_EQUAL (dcp.cpls().front()->reels().size(), 1);
+       BOOST_REQUIRE_EQUAL(dcp.cpls().size(), 1U);
+       BOOST_REQUIRE_EQUAL(dcp.cpls().front()->reels().size(), 1U);
        BOOST_REQUIRE (dcp.cpls().front()->reels().front()->main_picture());
        BOOST_REQUIRE (dcp.cpls().front()->reels().front()->main_picture()->asset());
        auto pic = dynamic_pointer_cast<dcp::ReelMonoPictureAsset> (
@@ -133,5 +143,9 @@ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_onto_dcp)
        BOOST_CHECK_EQUAL (xyz->size().width, 1998);
        BOOST_CHECK_EQUAL (xyz->size().height, 1080);
 
-       check_dcp ("test/data/burnt_subtitle_test_onto_dcp", film->dir(film->dcp_name()));
+#ifdef DCPOMATIC_WINDOWS
+       check_dcp("test/data/windows/burnt_subtitle_test_onto_dcp2", film2);
+#else
+       check_dcp("test/data/burnt_subtitle_test_onto_dcp2", film2);
+#endif
 }
index fd0d1c8ef46a4b3ad45ed773fa58069a7fb1737a..068d944183876d7a323ef60f80bdd4deee8218e1 160000 (submodule)
--- a/test/data
+++ b/test/data
@@ -1 +1 @@
-Subproject commit fd0d1c8ef46a4b3ad45ed773fa58069a7fb1737a
+Subproject commit 068d944183876d7a323ef60f80bdd4deee8218e1
index db659c2c9ff0d411697bbff5511250bdd741d323..fad24389bfde51117f7d996caaf358dd37433ef5 100644 (file)
@@ -58,8 +58,8 @@ BOOST_AUTO_TEST_CASE (required_disk_space_test)
 
        check_within_n (
                film->required_disk_space(),
-               289LL * (100000000 / 8) / 24 +  // video
-               289LL * 48000 * 6 * 3 / 24 +    // audio
+               288LL * (100000000 / 8) / 24 +  // video
+               288LL * 48000 * 6 * 3 / 24 +    // audio
                65536,                          // extra
                16
                );
@@ -69,7 +69,7 @@ BOOST_AUTO_TEST_CASE (required_disk_space_test)
        check_within_n (
                film->required_disk_space(),
                240LL * (100000000 / 8) / 24 +  // video
-               289LL * 48000 * 6 * 3 / 24 +    // audio
+               288LL * 48000 * 6 * 3 / 24 +    // audio
                65536,                          // extra
                16
                );
index 12cc0506f530afdae5eead6a675b37ce8236d94d..f40568e3ced03555768289b131ce074e6dcfbcfa 100644 (file)
@@ -57,6 +57,7 @@ def build(bld):
                  audio_processor_test.cc
                  audio_processor_delay_test.cc
                  audio_ring_buffers_test.cc
+                 burnt_subtitle_test.cc
                  butler_test.cc
                  bv20_test.cc
                  cinema_sound_processor_test.cc
@@ -178,8 +179,6 @@ def build(bld):
         obj.source += " disk_writer_test.cc"
         obj.uselib += "LWEXT4 NANOMSG "
 
-    # Some difference in font rendering between the test machine and others...
-    # burnt_subtitle_test.cc
     # This one doesn't check anything
     # resampler_test.cc