X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fsubrip_reader_test.cc;h=8f23abb2556ea0962b35f6a1ec815eaebd0b32b1;hb=42ff0632f46a8b1918f16035baa67972eb221282;hp=818b6ad3ecd01f2d6335f02eabc8637e1e463517;hpb=cafee6f81257fa81ee302b5d3ffa82213a0a6a44;p=libsub.git diff --git a/test/subrip_reader_test.cc b/test/subrip_reader_test.cc index 818b6ad..8f23abb 100644 --- a/test/subrip_reader_test.cc +++ b/test/subrip_reader_test.cc @@ -307,6 +307,24 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) ++i; r._subs.clear (); + rs = sub::RawSubtitle(); + r.convert_line ("This is nesting of subtitles", rs); + BOOST_CHECK_EQUAL (r._subs.size(), 3); + i = r._subs.begin(); + BOOST_CHECK_EQUAL (i->text, "This is "); + BOOST_CHECK_EQUAL (i->bold, true); + BOOST_CHECK_EQUAL (i->italic, false); + ++i; + BOOST_CHECK_EQUAL (i->text, "nesting"); + BOOST_CHECK_EQUAL (i->bold, true); + BOOST_CHECK_EQUAL (i->italic, true); + ++i; + BOOST_CHECK_EQUAL (i->text, " of subtitles"); + BOOST_CHECK_EQUAL (i->bold, true); + BOOST_CHECK_EQUAL (i->italic, false); + ++i; + r._subs.clear (); + rs = sub::RawSubtitle(); r.convert_line ("simple color", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); @@ -317,6 +335,17 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) BOOST_CHECK_CLOSE (r._subs.front().colour.b, 1, 0.1); r._subs.clear (); + /* single quotes are apparently also allowed */ + rs = sub::RawSubtitle(); + r.convert_line("simple color", 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); + BOOST_CHECK_CLOSE(r._subs.front().colour.r, 1, 0.1); + BOOST_CHECK(fabs(r._subs.front().colour.g) < 0.01); + BOOST_CHECK_CLOSE(r._subs.front().colour.b, 1, 0.1); + r._subs.clear(); + rs = sub::RawSubtitle(); r.convert_line ("simple color in capitals", rs); BOOST_CHECK_EQUAL (r._subs.size(), 1); @@ -377,14 +406,36 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) BOOST_CHECK (fabs (i->colour.g) < 0.01); BOOST_CHECK_CLOSE (i->colour.b, 1, 0.1); r._subs.clear (); + + rs = sub::RawSubtitle(); + r.convert_line("some blue text with alpha", rs); + BOOST_CHECK_EQUAL(r._subs.size(), 1); + i = r._subs.begin(); + BOOST_CHECK_EQUAL(i->text, "some blue text with alpha"); + BOOST_CHECK_EQUAL(i->bold, false); + BOOST_CHECK(fabs(i->colour.r) < 0.01); + BOOST_CHECK(fabs(i->colour.g) < 0.01); + BOOST_CHECK_CLOSE(i->colour.b, 1, 0.1); + r._subs.clear(); + + rs = sub::RawSubtitle(); + r.convert_line ("<< angle brackets but no HTML >>", rs); + BOOST_CHECK_EQUAL (r._subs.size(), 1); + i = r._subs.begin (); + BOOST_CHECK_EQUAL (i->text, "<< angle brackets but no HTML >>"); + r._subs.clear(); } /** Test SubripReader::convert_time */ BOOST_AUTO_TEST_CASE (subrip_reader_convert_time_test) { sub::SubripReader reader; - BOOST_CHECK_EQUAL (reader.convert_time ("00:03:10,500"), sub::Time::from_hms (0, 3, 10, 500)); - BOOST_CHECK_EQUAL (reader.convert_time ("04:19:51,782"), sub::Time::from_hms (4, 19, 51, 782)); + auto t = reader.convert_time("00:03:10,500", ","); + BOOST_REQUIRE(t); + BOOST_CHECK_EQUAL(*t, sub::Time::from_hms(0, 3, 10, 500)); + t = reader.convert_time("04:19:51,782", ","); + BOOST_REQUIRE(t); + BOOST_CHECK_EQUAL(*t, sub::Time::from_hms(4, 19, 51, 782)); } static void @@ -576,6 +627,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test5) BOOST_CHECK_CLOSE (r._subs.front().colour.b, 3.0 / 255, 0.1); } + /** Test alignment */ BOOST_AUTO_TEST_CASE (subrip_reader_test6) { @@ -631,3 +683,27 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test6) r._subs.clear (); } + +BOOST_AUTO_TEST_CASE(subrip_with_unicode_line_separator_test) +{ + auto f = fopen ("test/data/newline.srt", "r"); + BOOST_REQUIRE(f); + sub::SubripReader reader(f); + fclose(f); + auto subs = sub::collect>(reader.subtitles()); + + BOOST_REQUIRE_EQUAL(subs.size(), 2U); + + BOOST_REQUIRE_EQUAL(subs[0].lines.size(), 2U); + BOOST_REQUIRE_EQUAL(subs[0].lines[0].blocks.size(), 1U); + BOOST_CHECK_EQUAL(subs[0].lines[0].blocks[0].text, "Du fühlst dich danach besser."); + BOOST_REQUIRE_EQUAL(subs[0].lines[1].blocks.size(), 1U); + BOOST_CHECK_EQUAL(subs[0].lines[1].blocks[0].text, "Okay, Kleiner?"); + + BOOST_REQUIRE_EQUAL(subs[1].lines.size(), 2U); + BOOST_REQUIRE_EQUAL(subs[1].lines[0].blocks.size(), 1U); + BOOST_CHECK_EQUAL(subs[1].lines[0].blocks[0].text, "Sie kann es nicht machen"); + BOOST_REQUIRE_EQUAL(subs[1].lines[1].blocks.size(), 1U); + BOOST_CHECK_EQUAL(subs[1].lines[1].blocks[0].text, "wenn du dich bewegst."); +} +