X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fssa_subtitle_test.cc;h=5c2e61b7e41d74602209432e0f6e9017d6fdf33b;hb=HEAD;hp=0bfa39e747487416babc67c8f221335ff5d47468;hpb=5a5324ed3a381a86dfe0a6e3932c1d58fdcd596f;p=dcpomatic.git diff --git a/test/ssa_subtitle_test.cc b/test/ssa_subtitle_test.cc index 0bfa39e74..2565fc035 100644 --- a/test/ssa_subtitle_test.cc +++ b/test/ssa_subtitle_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2016 Carl Hetherington + Copyright (C) 2016-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,60 +18,61 @@ */ -#include "lib/film.h" -#include "lib/text_subtitle_content.h" + +/** @file test/ssa_subtitle_test.cc + * @brief Test use of SSA subtitle files. + * @ingroup feature + */ + + #include "lib/dcp_content_type.h" +#include "lib/film.h" #include "lib/font.h" #include "lib/ratio.h" -#include "lib/subtitle_content.h" +#include "lib/string_text_file_content.h" +#include "lib/text_content.h" #include "test.h" +#include +#include #include #include -#include -#include -using std::string; + using std::list; -using boost::shared_ptr; -using boost::make_shared; +using std::make_shared; +using std::string; + /** Make a DCP with subs from a .ssa file */ BOOST_AUTO_TEST_CASE (ssa_subtitle_test1) { - shared_ptr film = new_test_film ("ssa_subtitle_test1"); + Cleanup cl; + + auto film = new_test_film2 ("ssa_subtitle_test1", {}, &cl); film->set_container (Ratio::from_id ("185")); - film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); film->set_name ("frobozz"); film->set_interop (true); - shared_ptr content = make_shared (film, private_data / "DKH_UT_EN20160601def.ssa"); + auto content = make_shared(TestPaths::private_data() / "DKH_UT_EN20160601def.ssa"); film->examine_and_add_content (content); - wait_for_jobs (); - - content->subtitle->set_use (true); - content->subtitle->set_burn (false); - - film->make_dcp (); - wait_for_jobs (); - - /* Find the subtitle file and check it */ - for ( - boost::filesystem::directory_iterator i = boost::filesystem::directory_iterator (film->directory() / film->dcp_name (false)); - i != boost::filesystem::directory_iterator (); - ++i) { - - if (boost::filesystem::is_directory (i->path ())) { - for ( - boost::filesystem::directory_iterator j = boost::filesystem::directory_iterator (i->path ()); - j != boost::filesystem::directory_iterator (); - ++j) { - - if (boost::algorithm::starts_with (j->path().leaf().string(), "sub_")) { - list ignore; - ignore.push_back ("SubtitleID"); - check_xml (*j, private_data / "DKH_UT_EN20160601def.xml", ignore); - } - } + BOOST_REQUIRE (!wait_for_jobs()); + + content->only_text()->set_use (true); + content->only_text()->set_burn (false); + content->only_text()->set_language(dcp::LanguageTag("de")); + + make_and_verify_dcp (film, { dcp::VerificationNote::Code::INVALID_STANDARD }); + + auto ref = make_shared(TestPaths::private_data() / "DKH_UT_EN20160601def.xml"); + auto check = make_shared(subtitle_file(film)); + + dcp::EqualityOptions options; + options.max_subtitle_vertical_position_error = 0.1; + BOOST_CHECK(ref->equals(check, options, [](dcp::NoteType t, string n) { + if (t == dcp::NoteType::ERROR) { + std::cerr << n << "\n"; } - } + })); + + cl.run (); }