X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fsubrip_reader_test.cc;h=79bda51c28f42aaf33d1973c81639b65438fe3ad;hb=c00435b4862971c7acd3844eaaac8ae6677f8eba;hp=1779517e17ed0563191ab5064200e078dadf82b1;hpb=3f630fb8334238ab8a58fbe1a0f513ae2c00de80;p=libsub.git diff --git a/test/subrip_reader_test.cc b/test/subrip_reader_test.cc index 1779517..79bda51 100644 --- a/test/subrip_reader_test.cc +++ b/test/subrip_reader_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014 Carl Hetherington + Copyright (C) 2014-2015 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,11 +24,14 @@ #include #include #include +#include +#include using std::list; using std::cerr; using std::ifstream; using std::vector; +using std::fabs; /* Test reading of a Subrip file */ BOOST_AUTO_TEST_CASE (subrip_reader_test) @@ -40,13 +43,13 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test) list::iterator i = subs.begin (); - + /* First subtitle */ BOOST_CHECK (i != subs.end ()); BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 41, 90)); BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 42, 210)); - + list::iterator j = i->lines.begin (); BOOST_CHECK (j != i->lines.end ()); BOOST_CHECK_EQUAL (j->blocks.size(), 1); @@ -74,13 +77,13 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test) BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP_OF_SUBTITLE); ++i; - + /* Second subtitle */ - + BOOST_CHECK (i != subs.end ()); BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 1, 10)); BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 2, 100)); - + BOOST_CHECK_EQUAL (i->lines.size(), 1); sub::Line l = i->lines.front (); BOOST_CHECK_EQUAL (l.blocks.size(), 7); @@ -88,7 +91,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test) BOOST_CHECK_EQUAL (l.vertical_position.reference.get(), sub::TOP_OF_SUBTITLE); list::iterator k = l.blocks.begin (); - + BOOST_CHECK (k != l.blocks.end ()); BOOST_CHECK_EQUAL (k->text, "This is some "); BOOST_CHECK_EQUAL (k->font.get(), "Arial"); @@ -151,7 +154,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test) BOOST_CHECK_EQUAL (k->italic, false); BOOST_CHECK_EQUAL (k->underline, false); ++k; - + BOOST_CHECK (k == l.blocks.end ()); } @@ -217,7 +220,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test2) BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) { sub::SubripReader r; - + r.convert_line ("Hello world", 0, sub::Time (), sub::Time ()); BOOST_CHECK_EQUAL (r._subs.size(), 1); BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world"); @@ -261,7 +264,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) r.convert_line ("This is nesting of subtitles", 0, sub::Time (), sub::Time ()); BOOST_CHECK_EQUAL (r._subs.size(), 3); - list::iterator i = r._subs.begin (); + list::iterator i = r._subs.begin (); BOOST_CHECK_EQUAL (i->text, "This is "); BOOST_CHECK_EQUAL (i->bold, true); BOOST_CHECK_EQUAL (i->italic, false); @@ -275,8 +278,48 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test) BOOST_CHECK_EQUAL (i->italic, false); ++i; r._subs.clear (); -} + r.convert_line ("simple color", 0, sub::Time (), sub::Time ()); + 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 (); + + r.convert_line ("some red text in bold", 0, sub::Time (), sub::Time ()); + BOOST_CHECK_EQUAL (r._subs.size(), 2); + i = r._subs.begin (); + BOOST_CHECK_EQUAL (i->text, "some red text "); + BOOST_CHECK_EQUAL (i->bold, false); + BOOST_CHECK_CLOSE (i->colour.r, 1, 0.1); + BOOST_CHECK (fabs (i->colour.g) < 0.01); + BOOST_CHECK (fabs (i->colour.b) < 0.01); + ++i; + BOOST_CHECK_EQUAL (i->text, "in bold"); + BOOST_CHECK_EQUAL (i->bold, true); + BOOST_CHECK_CLOSE (i->colour.r, 1, 0.1); + BOOST_CHECK (fabs (i->colour.g) < 0.01); + BOOST_CHECK (fabs (i->colour.b) < 0.01); + r._subs.clear (); + + r.convert_line ("some blue text in bold", 0, sub::Time (), sub::Time ()); + BOOST_CHECK_EQUAL (r._subs.size(), 2); + i = r._subs.begin (); + BOOST_CHECK_EQUAL (i->text, "some blue text "); + 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); + ++i; + BOOST_CHECK_EQUAL (i->text, "in bold"); + BOOST_CHECK_EQUAL (i->bold, true); + 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 (); +} /** Test SubripReader::convert_time */ BOOST_AUTO_TEST_CASE (subrip_reader_convert_time_test) @@ -303,5 +346,7 @@ test (boost::filesystem::path p) BOOST_AUTO_TEST_CASE (subrip_read_test) { test ("sintel_en.srt"); + test ("sintel_fr.srt"); test ("Fight.Club.1999.720p.BRRip.x264-x0r.srt"); + test ("Chudo.Berna.2003.DUAL.BDRip.XviD.AC3.-HELLYWOOD.ENG.srt"); }