summaryrefslogtreecommitdiff
path: root/test
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
parent49cafda01b3e07c47e3b20dd5ee91e1426446aea (diff)
Simplify time representation; better in-tree DCP subtitle parser.
Diffstat (limited to 'test')
-rw-r--r--test/dcp_reader_test.cc336
-rw-r--r--test/dcp_to_stl_binary_test.cc13
-rw-r--r--test/stl_binary_writer_test.cc8
-rw-r--r--test/stl_text_reader_test.cc26
-rw-r--r--test/subrip_reader_test.cc71
-rw-r--r--test/time_test.cc53
6 files changed, 243 insertions, 264 deletions
diff --git a/test/dcp_reader_test.cc b/test/dcp_reader_test.cc
index 7fd1621..a5ec975 100644
--- a/test/dcp_reader_test.cc
+++ b/test/dcp_reader_test.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
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
@@ -17,7 +17,7 @@
*/
-#include "dcp_reader.h"
+#include "interop_dcp_reader.h"
#include "collect.h"
#include <boost/test/unit_test.hpp>
#include <fstream>
@@ -30,22 +30,22 @@ using boost::shared_ptr;
/* Test reading of a DCP XML file */
BOOST_AUTO_TEST_CASE (dcp_reader_test1)
{
- sub::DCPReader reader ("test/data/test1.xml", true);
+ sub::InteropDCPReader reader ("test/data/test1.xml");
list<sub::Subtitle> subs = sub::collect<list<sub::Subtitle> > (reader.subtitles ());
list<sub::Subtitle>::iterator i = subs.begin ();
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 5, 198 * 4));
- BOOST_CHECK_EQUAL (i->to.metric(), sub::MetricTime (0, 0, 7, 115 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 5, 198 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 7, 115 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 4));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 4));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFontId");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFontId");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
@@ -56,22 +56,22 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test1)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j == i->lines.end ());
+ BOOST_REQUIRE (j == i->lines.end ());
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 7, 177 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 11, 31 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 7, 177 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 11, 31 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 4));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 4));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFontId");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFontId");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
@@ -82,10 +82,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test1)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFontId");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFontId");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
@@ -96,22 +96,22 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test1)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j == i->lines.end ());
+ BOOST_REQUIRE (j == i->lines.end ());
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 11, 94 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 13, 63 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 11, 94 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 13, 63 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 4));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 4));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFontId");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFontId");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
@@ -122,22 +122,22 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test1)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j == i->lines.end ());
+ BOOST_REQUIRE (j == i->lines.end ());
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric(), sub::MetricTime (0, 0, 13, 104 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 15, 177 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 13, 104 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 15, 177 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 4));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 4));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFontId");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFontId");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
@@ -148,29 +148,29 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test1)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j == i->lines.end ());
+ BOOST_REQUIRE (j == i->lines.end ());
}
}
/* And another one */
BOOST_AUTO_TEST_CASE (dcp_reader_test2)
{
- sub::DCPReader reader ("test/data/test2.xml", true);
+ sub::InteropDCPReader reader ("test/data/test2.xml");
list<sub::Subtitle> subs = sub::collect<list<sub::Subtitle> > (reader.subtitles ());
list<sub::Subtitle>::iterator i = subs.begin ();
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric(), sub::MetricTime (0, 0, 41, 62 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 43, 52 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 41, 62 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 43, 52 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -181,10 +181,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -199,18 +199,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric(), sub::MetricTime (0, 0, 50, 42 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 52, 21 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 50, 42 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 52, 21 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -221,10 +221,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -239,18 +239,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 2, 208 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 04, 10 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 2, 208 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 04, 10 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -261,40 +261,40 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 2, 208 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 4, 10 * 4));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 2, 208 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 4, 10 * 4));
BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP_OF_SCREEN);
BOOST_CHECK_EQUAL (b.text, "I spent a long weekend in Brighton");
BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
++j;
BOOST_CHECK (j == i->lines.end ());
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 15, 42 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 16, 42 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 15, 42 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 16, 42 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -305,10 +305,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -323,18 +323,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 20, 219 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 22, 73 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 20, 219 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 22, 73 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -345,10 +345,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -363,18 +363,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 27, 115 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 28, 208 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 27, 115 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 28, 208 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -385,10 +385,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -403,18 +403,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 42, 229 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 45, 62 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 42, 229 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 45, 62 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -425,10 +425,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -443,18 +443,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 45, 146 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 47, 94 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 45, 146 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 47, 94 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -465,10 +465,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -483,18 +483,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 47, 146 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 48, 167 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 47, 146 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 48, 167 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -505,10 +505,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -523,18 +523,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 53, 21 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 56, 10 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 1, 53, 21 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 1, 56, 10 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -545,10 +545,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -563,18 +563,18 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
}
++i;
- BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 2, 5, 208 * 4));
- BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 2, 7, 31 * 4));
- BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
- BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 2, 5, 208 * 4));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 2, 7, 31 * 4));
+ BOOST_CHECK_EQUAL (i->fade_up.get(), sub::Time::from_hms (0, 0, 0, 0));
+ BOOST_CHECK_EQUAL (i->fade_down.get(), sub::Time::from_hms (0, 0, 0, 0));
{
list<sub::Line>::iterator j = i->lines.begin ();
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
@@ -585,10 +585,10 @@ BOOST_AUTO_TEST_CASE (dcp_reader_test2)
BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
++j;
- BOOST_CHECK (j != i->lines.end ());
- BOOST_CHECK_EQUAL (j->blocks.size(), 1);
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
- BOOST_CHECK_EQUAL (b.font, "theFont");
+ BOOST_CHECK_EQUAL (b.font.get(), "theFont");
BOOST_CHECK_EQUAL (b.italic, true);
BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
diff --git a/test/dcp_to_stl_binary_test.cc b/test/dcp_to_stl_binary_test.cc
index 8ac377b..6199c69 100644
--- a/test/dcp_to_stl_binary_test.cc
+++ b/test/dcp_to_stl_binary_test.cc
@@ -18,7 +18,8 @@
*/
#include "test.h"
-#include "dcp_reader.h"
+#include "interop_dcp_reader.h"
+#include "smpte_dcp_reader.h"
#include "stl_binary_writer.h"
#include "collect.h"
#include <boost/test/unit_test.hpp>
@@ -35,7 +36,7 @@ BOOST_AUTO_TEST_CASE (dcp_to_stl_binary_test1)
boost::filesystem::path p = private_test / "fd586c30-6d38-48f2-8241-27359acf184c_sub.xml";
sub::write_stl_binary (
- sub::collect<list<sub::Subtitle> > (sub::DCPReader(p, true).subtitles ()),
+ sub::collect<list<sub::Subtitle> > (sub::InteropDCPReader(p).subtitles ()),
25,
sub::LANGUAGE_FRENCH,
"", "",
@@ -62,7 +63,7 @@ BOOST_AUTO_TEST_CASE (dcp_to_stl_binary_test2)
boost::filesystem::path p = private_test / "93e8a6bf-499e-4d36-9350-a9bfa2e6758a_sub.xml";
sub::write_stl_binary (
- sub::collect<list<sub::Subtitle> > (sub::DCPReader(p, true).subtitles ()),
+ sub::collect<list<sub::Subtitle> > (sub::InteropDCPReader(p).subtitles ()),
25,
sub::LANGUAGE_FRENCH,
"", "",
@@ -89,7 +90,7 @@ BOOST_AUTO_TEST_CASE (dcp_to_stl_binary_test3)
boost::filesystem::path p = private_test / "Paddington_FTR_Subs_DE-FR_24fps_R1.xml";
sub::write_stl_binary (
- sub::collect<list<sub::Subtitle> > (sub::DCPReader(p, true).subtitles ()),
+ sub::collect<list<sub::Subtitle> > (sub::InteropDCPReader(p).subtitles ()),
25,
sub::LANGUAGE_FRENCH,
"", "",
@@ -111,7 +112,7 @@ BOOST_AUTO_TEST_CASE (dcp_to_stl_binary_test3)
BOOST_AUTO_TEST_CASE (dcp_to_stl_binary_test4)
{
sub::write_stl_binary (
- sub::collect<list<sub::Subtitle> > (sub::DCPReader("test/data/test1.xml", true).subtitles ()),
+ sub::collect<list<sub::Subtitle> > (sub::InteropDCPReader("test/data/test1.xml").subtitles ()),
25,
sub::LANGUAGE_FRENCH,
"", "",
@@ -133,7 +134,7 @@ BOOST_AUTO_TEST_CASE (dcp_to_stl_binary_test5)
boost::filesystem::path p = private_test / "065d39ff-6723-4dbf-a94f-849cde82f5e1_sub.mxf";
sub::write_stl_binary (
- sub::collect<list<sub::Subtitle> > (sub::DCPReader(p, false).subtitles ()),
+ sub::collect<list<sub::Subtitle> > (sub::SMPTEDCPReader(p, true).subtitles ()),
25,
sub::LANGUAGE_FRENCH,
"", "",
diff --git a/test/stl_binary_writer_test.cc b/test/stl_binary_writer_test.cc
index 9bc3ec7..f0a407c 100644
--- a/test/stl_binary_writer_test.cc
+++ b/test/stl_binary_writer_test.cc
@@ -30,8 +30,8 @@ BOOST_AUTO_TEST_CASE (stl_binary_writer_test)
{
sub::Subtitle s;
- s.from.set_frame (sub::FrameTime (0, 0, 41, 9));
- s.to.set_frame (sub::FrameTime (0, 0, 42, 21));
+ s.from = sub::Time::from_hmsf (0, 0, 41, 9, sub::Rational (25, 1));
+ s.to = sub::Time::from_hmsf (0, 0, 42, 21, sub::Rational (25, 1));
{
sub::Block b;
@@ -64,8 +64,8 @@ BOOST_AUTO_TEST_CASE (stl_binary_writer_test)
{
sub::Subtitle s;
- s.from.set_frame (sub::FrameTime (0, 1, 1, 1));
- s.to.set_frame (sub::FrameTime (0, 1, 2, 10));
+ s.from = sub::Time::from_hmsf (0, 1, 1, 1, sub::Rational (25, 1));
+ s.to = sub::Time::from_hmsf (0, 1, 2, 10, sub::Rational (25, 1));
sub::Line l;
l.vertical_position.line = 0;
diff --git a/test/stl_text_reader_test.cc b/test/stl_text_reader_test.cc
index b21ecee..0ce9594 100644
--- a/test/stl_text_reader_test.cc
+++ b/test/stl_text_reader_test.cc
@@ -40,15 +40,15 @@ BOOST_AUTO_TEST_CASE (stl_text_reader_test)
/* First subtitle */
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.frame().get(), sub::FrameTime (0, 0, 41, 9));
- BOOST_CHECK_EQUAL (i->to.frame().get(), sub::FrameTime (0, 0, 42, 21));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hmsf (0, 0, 41, 9));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hmsf (0, 0, 42, 21));
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(), 42);
BOOST_CHECK_EQUAL (b.bold, false);
BOOST_CHECK_EQUAL (b.italic, false);
@@ -60,7 +60,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (b.bold, false);
BOOST_CHECK_EQUAL (b.italic, false);
@@ -72,8 +72,8 @@ BOOST_AUTO_TEST_CASE (stl_text_reader_test)
/* Second subtitle */
BOOST_CHECK (i != subs.end ());
- BOOST_CHECK_EQUAL (i->from.frame().get(), sub::FrameTime (0, 1, 1, 1));
- BOOST_CHECK_EQUAL (i->to.frame().get(), sub::FrameTime (0, 1, 2, 10));
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hmsf (0, 1, 1, 1));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hmsf (0, 1, 2, 10));
BOOST_CHECK_EQUAL (i->lines.size(), 1);
sub::Line l = i->lines.front ();
@@ -84,7 +84,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -93,7 +93,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (k->bold, true);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -102,7 +102,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -111,7 +111,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (k->bold, true);
BOOST_CHECK_EQUAL (k->italic, true);
@@ -120,7 +120,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -129,7 +129,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
@@ -138,7 +138,7 @@ BOOST_AUTO_TEST_CASE (stl_text_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(), 42);
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
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)
{
diff --git a/test/time_test.cc b/test/time_test.cc
index d6ca14a..f57bb2c 100644
--- a/test/time_test.cc
+++ b/test/time_test.cc
@@ -17,16 +17,14 @@
*/
+#include "sub_time.h"
#include <boost/test/unit_test.hpp>
-#include "metric_time.h"
-#include "frame_time.h"
-#include "time_pair.h"
/* Check time construction */
BOOST_AUTO_TEST_CASE (time_construction_test)
{
{
- sub::MetricTime t (3, 5, 7, 40);
+ sub::Time t = sub::Time::from_hms (3, 5, 7, 40);
BOOST_CHECK_EQUAL (t.hours(), 3);
BOOST_CHECK_EQUAL (t.minutes(), 5);
BOOST_CHECK_EQUAL (t.seconds(), 7);
@@ -34,54 +32,35 @@ BOOST_AUTO_TEST_CASE (time_construction_test)
}
{
- sub::MetricTime t (591353, 1, 2, 3);
+ sub::Time t = sub::Time::from_hms (591353, 1, 2, 3);
BOOST_CHECK_EQUAL (t.hours(), 591353);
BOOST_CHECK_EQUAL (t.minutes(), 1);
BOOST_CHECK_EQUAL (t.seconds(), 2);
BOOST_CHECK_EQUAL (t.milliseconds(), 3);
}
-
- {
- sub::FrameTime t (3 * 60 * 60 * 24 + 31 * 60 * 24 + 4 * 24 + 11, 24);
- BOOST_CHECK_EQUAL (t.hours(), 3);
- BOOST_CHECK_EQUAL (t.minutes(), 31);
- BOOST_CHECK_EQUAL (t.seconds(), 4);
- BOOST_CHECK_EQUAL (t.frames(), 11);
- }
}
/* Check time conversions */
BOOST_AUTO_TEST_CASE (time_conversion_test)
{
- sub::TimePair p;
+ sub::Time p;
/* 40ms = 1 frame at 25fps */
- p.set_metric (sub::MetricTime (3, 5, 7, 40));
- BOOST_CHECK_EQUAL (p.frame (25), sub::FrameTime (3, 5, 7, 1));
- p.set_frame (sub::FrameTime (3, 5, 7, 1));
- BOOST_CHECK_EQUAL (p.metric (25), sub::MetricTime (3, 5, 7, 40));
+ p = sub::Time::from_hms (3, 5, 7, 40);
+ BOOST_CHECK_EQUAL (p.frames_at (sub::Rational (25, 1)), 1);
+ p = sub::Time::from_hmsf (3, 5, 7, 1, sub::Rational (25, 1));
+ BOOST_CHECK_EQUAL (p.milliseconds (), 40);
/* 120ms = 3 frames at 25fps */
- p.set_metric (sub::MetricTime (3, 5, 7, 120));
- BOOST_CHECK_EQUAL (p.frame (25), sub::FrameTime (3, 5, 7, 3));
- p.set_frame (sub::FrameTime (3, 5, 7, 3));
- BOOST_CHECK_EQUAL (p.metric (25), sub::MetricTime (3, 5, 7, 120));
+ p = sub::Time::from_hms (3, 5, 7, 120);
+ BOOST_CHECK_EQUAL (p.frames_at (sub::Rational (25, 1)), 3);
+ p = sub::Time::from_hmsf (3, 5, 7, 3, sub::Rational (25, 1));
+ BOOST_CHECK_EQUAL (p.milliseconds (), 120);
}
-/* Check time maths */
-BOOST_AUTO_TEST_CASE (time_maths_test)
+/* Check some operators */
+BOOST_AUTO_TEST_CASE (time_operator_test)
{
- {
- sub::FrameTime a (1, 59, 59, 23);
- sub::FrameTime b (2, 31, 19, 2);
- a.add (b, 24);
- BOOST_CHECK_EQUAL (a, sub::FrameTime (4, 31, 19, 1));
- }
-
- {
- sub::MetricTime a (1, 59, 59, 999);
- sub::MetricTime b (2, 31, 19, 2);
- a.add (b);
- BOOST_CHECK_EQUAL (a, sub::MetricTime (4, 31, 19, 1));
- }
+ BOOST_CHECK_EQUAL (sub::Time::from_hms (0, 0, 5, 198 * 4), sub::Time::from_hms (0, 0, 5, 198 * 4));
+ BOOST_CHECK (sub::Time::from_hms (0, 0, 55, 332) != sub::Time::from_hms (0, 0, 58, 332));
}