X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fssa_subtitle_test.cc;h=8132ba3a0db3aab1283030eaac3c9b3b4034ca2d;hb=ce73eaf7875a9a3326afcd839ad85eb95879c160;hp=f6c65b1af67d34008744d868cc30b38bb4dfde40;hpb=a8a0dfd1b21de6c0facf965ab119833ff6f790bf;p=dcpomatic.git diff --git a/test/ssa_subtitle_test.cc b/test/ssa_subtitle_test.cc index f6c65b1af..8132ba3a0 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,58 +18,59 @@ */ -#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 -using std::string; + using std::list; -using boost::shared_ptr; +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 (new TextSubtitleContent (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); + + 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 (); }