diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-04-04 23:38:20 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-04-04 23:38:20 +0100 |
| commit | b9fb00d333a757db56da53bf74a6bd2cb745e7a6 (patch) | |
| tree | 7e1f4bb1539dfd483aa6be2eda822157e3ad5a03 /test | |
| parent | 2ff1d1af9c68423b034d3f14626cf50355c7edfc (diff) | |
Tidy subrip parsing a bit and fix failure to persist
italic/bold etc. across multiple lines of one subtitle
(DCP-o-matic bug #837).
Diffstat (limited to 'test')
| -rw-r--r-- | test/data/test2.srt | 5 | ||||
| -rw-r--r-- | test/subrip_reader_test.cc | 43 |
2 files changed, 37 insertions, 11 deletions
diff --git a/test/data/test2.srt b/test/data/test2.srt index 94251d4..3e0e478 100644 --- a/test/data/test2.srt +++ b/test/data/test2.srt @@ -22,3 +22,8 @@ Is this a dagger I see before me? 6 00:03:54,560 --> 00:03:56,471 Hello world. + +7 +00:04:50,123 --> 00:04:55,023 +<i>Some italics over +multiple lines</i> diff --git a/test/subrip_reader_test.cc b/test/subrip_reader_test.cc index 0e7f50d..a20cc07 100644 --- a/test/subrip_reader_test.cc +++ b/test/subrip_reader_test.cc @@ -213,6 +213,16 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test2) BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "Hello world."); ++i; + BOOST_CHECK (i != subs.end ()); + BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 4, 50, 123)); + BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 4, 55, 23)); + BOOST_CHECK_EQUAL (i->lines.size(), 2); + BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "Some italics over"); + BOOST_CHECK_EQUAL (i->lines.front().blocks.front().italic, true); + BOOST_CHECK_EQUAL (i->lines.back().blocks.front().text, "multiple lines"); + BOOST_CHECK_EQUAL (i->lines.back().blocks.front().italic, true); + + ++i; BOOST_CHECK (i == subs.end ()); } @@ -221,48 +231,56 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) { sub::SubripReader r; - r.convert_line ("Hello world", 0, sub::Time (), sub::Time ()); + sub::RawSubtitle rs; + r.convert_line ("Hello world", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); r._subs.clear (); - r.convert_line ("<b>Hello world</b>", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("<b>Hello world</b>", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); BOOST_CHECK_EQUAL (r._subs.front().bold, true); r._subs.clear (); - r.convert_line ("<i>Hello world</i>", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("<i>Hello world</i>", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); BOOST_CHECK_EQUAL (r._subs.front().italic, true); r._subs.clear (); - r.convert_line ("<u>Hello world</u>", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("<u>Hello world</u>", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); BOOST_CHECK_EQUAL (r._subs.front().underline, true); r._subs.clear (); - r.convert_line ("{b}Hello world{/b}", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("{b}Hello world{/b}", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); BOOST_CHECK_EQUAL (r._subs.front().bold, true); r._subs.clear (); - r.convert_line ("{i}Hello world{/i}", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("{i}Hello world{/i}", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); BOOST_CHECK_EQUAL (r._subs.front().italic, true); r._subs.clear (); - r.convert_line ("{u}Hello world{/u}", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("{u}Hello world{/u}", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); BOOST_CHECK_EQUAL (r._subs.front().underline, true); r._subs.clear (); - r.convert_line ("<b>This is <i>nesting</i> of subtitles</b>", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("<b>This is <i>nesting</i> of subtitles</b>", rs); BOOST_CHECK_EQUAL (r._subs.size(), 3); list<sub::RawSubtitle>::iterator i = r._subs.begin (); BOOST_CHECK_EQUAL (i->text, "This is "); @@ -279,7 +297,8 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) ++i; r._subs.clear (); - r.convert_line ("<font color=\"#ff00ff\">simple color</font>", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("<font color=\"#ff00ff\">simple color</font>", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "simple color"); BOOST_CHECK_EQUAL (r._subs.front().bold, false); @@ -288,7 +307,8 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) BOOST_CHECK_CLOSE (r._subs.front().colour.b, 1, 0.1); r._subs.clear (); - r.convert_line ("<font color=\"#ff0000\">some red text <b>in bold</b></font>", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("<font color=\"#ff0000\">some red text <b>in bold</b></font>", rs); BOOST_CHECK_EQUAL (r._subs.size(), 2); i = r._subs.begin (); BOOST_CHECK_EQUAL (i->text, "some red text "); @@ -304,7 +324,8 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) BOOST_CHECK (fabs (i->colour.b) < 0.01); r._subs.clear (); - r.convert_line ("<font color=\"#0000ff\">some blue text <b>in bold</b></font>", 0, sub::Time (), sub::Time ()); + rs = sub::RawSubtitle(); + r.convert_line ("<font color=\"#0000ff\">some blue text <b>in bold</b></font>", rs); BOOST_CHECK_EQUAL (r._subs.size(), 2); i = r._subs.begin (); BOOST_CHECK_EQUAL (i->text, "some blue text "); |
