summaryrefslogtreecommitdiff
path: root/test/subrip_reader_test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-01-14 17:39:32 +0000
committerCarl Hetherington <cth@carlh.net>2015-01-20 11:20:25 +0000
commit3f630fb8334238ab8a58fbe1a0f513ae2c00de80 (patch)
tree4b773b91029d6374bfd4f2194053d3e249d597cd /test/subrip_reader_test.cc
parent49cafda01b3e07c47e3b20dd5ee91e1426446aea (diff)
Simplify time representation; better in-tree DCP subtitle parser.
Diffstat (limited to 'test/subrip_reader_test.cc')
-rw-r--r--test/subrip_reader_test.cc71
1 files changed, 35 insertions, 36 deletions
diff --git a/test/subrip_reader_test.cc b/test/subrip_reader_test.cc
index e54f620..1779517 100644
--- a/test/subrip_reader_test.cc
+++ b/test/subrip_reader_test.cc
@@ -44,15 +44,15 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
/* First subtitle */
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 41, 90));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 42, 210));
+ 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<sub::Line>::iterator j = i->lines.begin ();
BOOST_CHECK (j != i->lines.end ());
BOOST_CHECK_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
BOOST_CHECK_EQUAL (b.text, "This is a subtitle");
- BOOST_CHECK_EQUAL (b.font, "Arial");
+ BOOST_CHECK_EQUAL (b.font.get(), "Arial");
BOOST_CHECK_EQUAL (b.font_size.points().get(), 48);
BOOST_CHECK_EQUAL (b.bold, false);
BOOST_CHECK_EQUAL (b.italic, false);
@@ -65,7 +65,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
BOOST_CHECK_EQUAL (b.text, "and that's a line break");
- BOOST_CHECK_EQUAL (b.font, "Arial");
+ BOOST_CHECK_EQUAL (b.font.get(), "Arial");
BOOST_CHECK_EQUAL (b.font_size.points().get(), 48);
BOOST_CHECK_EQUAL (b.bold, false);
BOOST_CHECK_EQUAL (b.italic, false);
@@ -78,8 +78,8 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
/* Second subtitle */
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 1, 10));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 2, 100));
+ 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 ();
@@ -91,7 +91,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "This is some ");
- BOOST_CHECK_EQUAL (k->font, "Arial");
+ BOOST_CHECK_EQUAL (k->font.get(), "Arial");
BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -100,7 +100,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "bold");
- BOOST_CHECK_EQUAL (k->font, "Arial");
+ BOOST_CHECK_EQUAL (k->font.get(), "Arial");
BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
BOOST_CHECK_EQUAL (k->bold, true);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -109,7 +109,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, " and some ");
- BOOST_CHECK_EQUAL (k->font, "Arial");
+ BOOST_CHECK_EQUAL (k->font.get(), "Arial");
BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -118,7 +118,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "bold italic");
- BOOST_CHECK_EQUAL (k->font, "Arial");
+ BOOST_CHECK_EQUAL (k->font.get(), "Arial");
BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
BOOST_CHECK_EQUAL (k->bold, true);
BOOST_CHECK_EQUAL (k->italic, true);
@@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, " and some ");
- BOOST_CHECK_EQUAL (k->font, "Arial");
+ BOOST_CHECK_EQUAL (k->font.get(), "Arial");
BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -136,7 +136,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "underlined");
- BOOST_CHECK_EQUAL (k->font, "Arial");
+ BOOST_CHECK_EQUAL (k->font.get(), "Arial");
BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -145,7 +145,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test)
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, ".");
- BOOST_CHECK_EQUAL (k->font, "Arial");
+ BOOST_CHECK_EQUAL (k->font.get(), "Arial");
BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -166,46 +166,46 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test2)
list<sub::Subtitle>::const_iterator i = subs.begin();
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 49, 200));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 52, 351));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 49, 200));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 52, 351));
BOOST_CHECK_EQUAL (i->lines.size(), 2);
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "This is a subtitle, and it goes ");
BOOST_CHECK_EQUAL (i->lines.back().blocks.front().text, "over two lines.");
++i;
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 52, 440));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 54, 351));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 52, 440));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 54, 351));
BOOST_CHECK_EQUAL (i->lines.size(), 1);
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "We have emboldened this");
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().bold, true);
++i;
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 54, 440));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 56, 590));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 54, 440));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 56, 590));
BOOST_CHECK_EQUAL (i->lines.size(), 1);
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "And italicised this.");
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().italic, true);
++i;
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 56, 680));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 58, 955));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 56, 680));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 58, 955));
BOOST_CHECK_EQUAL (i->lines.size(), 1);
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "Shall I compare thee to a summers' day?");
++i;
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 2, 0, 840));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 2, 3, 400));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 2, 0, 840));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 2, 3, 400));
BOOST_CHECK_EQUAL (i->lines.size(), 1);
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "Is this a dagger I see before me?");
++i;
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 3, 54, 560));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 3, 56, 471));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 3, 54, 560));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 3, 56, 471));
BOOST_CHECK_EQUAL (i->lines.size(), 1);
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "Hello world.");
@@ -218,48 +218,48 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test)
{
sub::SubripReader r;
- r.convert_line ("Hello world", 0, sub::TimePair (), sub::TimePair ());
+ 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");
r._subs.clear ();
- r.convert_line ("<b>Hello world</b>", 0, sub::TimePair (), sub::TimePair ());
+ r.convert_line ("<b>Hello world</b>", 0, sub::Time (), sub::Time ());
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::TimePair (), sub::TimePair ());
+ r.convert_line ("<i>Hello world</i>", 0, sub::Time (), sub::Time ());
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::TimePair (), sub::TimePair ());
+ r.convert_line ("<u>Hello world</u>", 0, sub::Time (), sub::Time ());
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::TimePair (), sub::TimePair ());
+ r.convert_line ("{b}Hello world{/b}", 0, sub::Time (), sub::Time ());
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::TimePair (), sub::TimePair ());
+ r.convert_line ("{i}Hello world{/i}", 0, sub::Time (), sub::Time ());
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::TimePair (), sub::TimePair ());
+ r.convert_line ("{u}Hello world{/u}", 0, sub::Time (), sub::Time ());
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::TimePair (), sub::TimePair ());
+ r.convert_line ("<b>This is <i>nesting</i> of subtitles</b>", 0, sub::Time (), sub::Time ());
BOOST_CHECK_EQUAL (r._subs.size(), 3);
list<sub::RawSubtitle>::iterator i = r._subs.begin ();
BOOST_CHECK_EQUAL (i->text, "This is ");
@@ -281,11 +281,10 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test)
/** Test SubripReader::convert_time */
BOOST_AUTO_TEST_CASE (subrip_reader_convert_time_test)
{
- BOOST_CHECK_EQUAL (sub::SubripReader::convert_time ("00:03:10,500"), sub::TimePair (sub::MetricTime (0, 3, 10, 500)));
- BOOST_CHECK_EQUAL (sub::SubripReader::convert_time ("04:19:51,782"), sub::TimePair (sub::MetricTime (4, 19, 51, 782)));
+ BOOST_CHECK_EQUAL (sub::SubripReader::convert_time ("00:03:10,500"), sub::Time::from_hms (0, 3, 10, 500));
+ BOOST_CHECK_EQUAL (sub::SubripReader::convert_time ("04:19:51,782"), sub::Time::from_hms (4, 19, 51, 782));
}
-
static void
test (boost::filesystem::path p)
{