diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-03-01 09:34:06 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-04-19 23:04:32 +0100 |
| commit | 6bc1976ac8780a4f7aa32d8c13d8bafe7eb537a8 (patch) | |
| tree | 41bc921adda38e2f131101e96ad1bfdff650ac33 | |
| parent | 7a7c1673c1aa6f687d542536017769dd487a138f (diff) | |
Restore dcp_subtitle_test.
| -rw-r--r-- | test/dcp_subtitle_test.cc | 89 | ||||
| -rw-r--r-- | test/wscript | 2 |
2 files changed, 41 insertions, 50 deletions
diff --git a/test/dcp_subtitle_test.cc b/test/dcp_subtitle_test.cc index 7b7308a00..66fe855cd 100644 --- a/test/dcp_subtitle_test.cc +++ b/test/dcp_subtitle_test.cc @@ -39,6 +39,15 @@ using std::cout; using std::list; using boost::shared_ptr; +using boost::optional; + +optional<ContentTextSubtitle> stored; + +static void +store (ContentTextSubtitle sub) +{ + stored = sub; +} /** Test pass-through of a very simple DCP subtitle file */ BOOST_AUTO_TEST_CASE (dcp_subtitle_test) @@ -73,34 +82,15 @@ BOOST_AUTO_TEST_CASE (dcp_subtitle_within_dcp_test) wait_for_jobs (); shared_ptr<DCPDecoder> decoder (new DCPDecoder (content, film->log())); + decoder->subtitle->TextData.connect (bind (store, _1)); + + while (!decoder->pass() || !stored) {} - list<ContentTimePeriod> ctp = decoder->text_subtitles_during ( - ContentTimePeriod ( - ContentTime::from_seconds (25), - ContentTime::from_seconds (26) - ), - true - ); - - BOOST_REQUIRE_EQUAL (ctp.size(), 2); - BOOST_CHECK_EQUAL (ctp.front().from.get(), ContentTime::from_seconds(25 + 12 * 0.04).get()); - BOOST_CHECK_EQUAL (ctp.front().to.get(), ContentTime::from_seconds(26 + 4 * 0.04).get()); - BOOST_CHECK_EQUAL (ctp.back().from.get(), ContentTime::from_seconds(25 + 12 * 0.04).get()); - BOOST_CHECK_EQUAL (ctp.back().to.get(), ContentTime::from_seconds(26 + 4 * 0.04).get()); - - list<ContentTextSubtitle> subs = decoder->subtitle->get_text ( - ContentTimePeriod ( - ContentTime::from_seconds (25), - ContentTime::from_seconds (26) - ), - true, - true - ); - - BOOST_REQUIRE_EQUAL (subs.size(), 1); - BOOST_REQUIRE_EQUAL (subs.front().subs.size(), 2); - BOOST_CHECK_EQUAL (subs.front().subs.front().text(), "Noch mal."); - BOOST_CHECK_EQUAL (subs.front().subs.back().text(), "Encore une fois."); + BOOST_REQUIRE (stored); + BOOST_REQUIRE_EQUAL (stored->subs.size(), 1); + BOOST_REQUIRE_EQUAL (stored->subs.size(), 2); + BOOST_CHECK_EQUAL (stored->subs.front().text(), "Noch mal."); + BOOST_CHECK_EQUAL (stored->subs.back().text(), "Encore une fois."); } /** Test subtitles whose text includes things like <b> */ @@ -115,12 +105,13 @@ BOOST_AUTO_TEST_CASE (dcp_subtitle_test2) wait_for_jobs (); shared_ptr<DCPSubtitleDecoder> decoder (new DCPSubtitleDecoder (content, film->log())); - list<ContentTextSubtitle> sub = decoder->subtitle->get_text ( - ContentTimePeriod (ContentTime::from_seconds(0), ContentTime::from_seconds(2)), true, true - ); - BOOST_REQUIRE_EQUAL (sub.size(), 1); - BOOST_REQUIRE_EQUAL (sub.front().subs.size(), 1); - BOOST_CHECK_EQUAL (sub.front().subs.front().text(), "<b>Hello world!</b>"); + decoder->subtitle->TextData.connect (bind (store, _1)); + + while (!decoder->pass ()) { + if (stored && stored->period().from == ContentTime(0)) { + BOOST_CHECK_EQUAL (stored->subs.front().text(), "<b>Hello world!</b>"); + } + } } /** Test a failure case */ @@ -139,20 +130,20 @@ BOOST_AUTO_TEST_CASE (dcp_subtitle_test3) wait_for_jobs (); shared_ptr<DCPSubtitleDecoder> decoder (new DCPSubtitleDecoder (content, film->log())); - list<ContentTextSubtitle> sub = decoder->subtitle->get_text ( - ContentTimePeriod (ContentTime::from_seconds(0), ContentTime::from_seconds(2)), true, true - ); - BOOST_REQUIRE_EQUAL (sub.size(), 1); - BOOST_REQUIRE_EQUAL (sub.front().subs.size(), 3); - list<dcp::SubtitleString> s = sub.front().subs; - list<dcp::SubtitleString>::const_iterator i = s.begin (); - BOOST_CHECK_EQUAL (i->text(), "This"); - ++i; - BOOST_REQUIRE (i != s.end ()); - BOOST_CHECK_EQUAL (i->text(), " is "); - ++i; - BOOST_REQUIRE (i != s.end ()); - BOOST_CHECK_EQUAL (i->text(), "wrong."); - ++i; - BOOST_REQUIRE (i == s.end ()); + while (!decoder->pass ()) { + decoder->subtitle->TextData.connect (bind (store, _1)); + if (stored && stored->period().from == ContentTime::from_seconds(0.08)) { + list<dcp::SubtitleString> s = stored->subs; + list<dcp::SubtitleString>::const_iterator i = s.begin (); + BOOST_CHECK_EQUAL (i->text(), "This"); + ++i; + BOOST_REQUIRE (i != s.end ()); + BOOST_CHECK_EQUAL (i->text(), " is "); + ++i; + BOOST_REQUIRE (i != s.end ()); + BOOST_CHECK_EQUAL (i->text(), "wrong."); + ++i; + BOOST_REQUIRE (i == s.end ()); + } + } } diff --git a/test/wscript b/test/wscript index 0fb32670c..df0a05c35 100644 --- a/test/wscript +++ b/test/wscript @@ -51,6 +51,7 @@ def build(bld): client_server_test.cc colour_conversion_test.cc dcpomatic_time_test.cc + dcp_subtitle_test.cc digest_test.cc ffmpeg_audio_only_test.cc ffmpeg_audio_test.cc @@ -102,7 +103,6 @@ def build(bld): # resampler_test.cc # XXX - # dcp_subtitle_test.cc # ffmpeg_decoder_seek_test.cc # ffmpeg_decoder_sequential_test.cc # upmixer_a_test.cc |
