summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-08-22 17:33:43 +0100
committerCarl Hetherington <cth@carlh.net>2012-08-22 17:33:43 +0100
commit78979cc6ad60c03bfc2e3757722d8e18d670a4c3 (patch)
tree662e7bb91ad3cd7b06b4c7260dd449e7d151a8ef
parentb4a004619216df74aaac99a67ccc25d5547926ee (diff)
Very slightly less verbose subs checking.
-rw-r--r--src/subtitle_asset.cc39
-rw-r--r--src/subtitle_asset.h10
-rw-r--r--test/tests.cc135
3 files changed, 126 insertions, 58 deletions
diff --git a/src/subtitle_asset.cc b/src/subtitle_asset.cc
index ee74e5eb..2446c137 100644
--- a/src/subtitle_asset.cc
+++ b/src/subtitle_asset.cc
@@ -287,3 +287,42 @@ Subtitle::size_in_pixels (int screen_height) const
return _size * screen_height / (11 * 72);
}
+
+bool
+libdcp::operator== (Subtitle const & a, Subtitle const & b)
+{
+ return (
+ a.font() == b.font() &&
+ a.italic() == b.italic() &&
+ a.color() == b.color() &&
+ a.size() == b.size() &&
+ a.in() == b.in() &&
+ a.out() == b.out() &&
+ a.v_position() == b.v_position() &&
+ a.v_align() == b.v_align() &&
+ a.text() == b.text() &&
+ a.effect() == b.effect() &&
+ a.effect_color() == b.effect_color() &&
+ a.fade_up_time() == b.fade_up_time() &&
+ a.fade_down_time() == b.fade_down_time()
+ );
+}
+
+ostream&
+libdcp::operator<< (ostream& s, Subtitle const & sub)
+{
+ s << "\n`" << sub.text() << "' from " << sub.in() << " to " << sub.out() << ";\n"
+ << "fade up " << sub.fade_up_time() << ", fade down " << sub.fade_down_time() << ";\n"
+ << "font " << sub.font() << ", ";
+
+ if (sub.italic()) {
+ s << "italic";
+ } else {
+ s << "non-italic";
+ }
+
+ s << ", size " << sub.size() << ", color " << sub.color() << ", vpos " << sub.v_position() << ", valign " << ((int) sub.v_align()) << ";\n"
+ << "effect " << ((int) sub.effect()) << ", effect color " << sub.effect_color();
+
+ return s;
+}
diff --git a/src/subtitle_asset.h b/src/subtitle_asset.h
index 662f85f1..72563470 100644
--- a/src/subtitle_asset.h
+++ b/src/subtitle_asset.h
@@ -151,6 +151,10 @@ public:
return _fade_down_time;
}
+ int size () const {
+ return _size;
+ }
+
int size_in_pixels (int screen_height) const;
private:
@@ -169,6 +173,9 @@ private:
Time _fade_down_time;
};
+bool operator== (Subtitle const & a, Subtitle const & b);
+std::ostream& operator<< (std::ostream& s, Subtitle const & sub);
+
class SubtitleAsset : public Asset, public XMLFile
{
public:
@@ -185,6 +192,9 @@ public:
}
std::list<boost::shared_ptr<Subtitle> > subtitles_at (Time t) const;
+ std::list<boost::shared_ptr<Subtitle> > const & subtitles () const {
+ return _subtitles;
+ }
private:
std::string font_id_to_name (std::string id) const;
diff --git a/test/tests.cc b/test/tests.cc
index 3264f07d..fa6ba8e0 100644
--- a/test/tests.cc
+++ b/test/tests.cc
@@ -119,69 +119,90 @@ BOOST_AUTO_TEST_CASE (subtitles)
list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_at (libdcp::Time (0, 0, 6, 1));
BOOST_CHECK_EQUAL (s.size(), 1);
- BOOST_CHECK_EQUAL (s.front()->text(), "My jacket was Idi Amin's");
- BOOST_CHECK_EQUAL (s.front()->v_position(), 15);
- BOOST_CHECK_EQUAL (s.front()->in(), libdcp::Time (0, 0, 5, 198));
- BOOST_CHECK_EQUAL (s.front()->out(), libdcp::Time (0, 0, 7, 115));
- BOOST_CHECK_EQUAL (s.front()->font(), "Arial");
- BOOST_CHECK_EQUAL (s.front()->italic(), false);
- BOOST_CHECK_EQUAL (s.front()->color(), libdcp::Color(255, 255, 255));
- BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
- BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
- BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM);
-
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 39,
+ libdcp::Time (0, 0, 5, 198),
+ libdcp::Time (0, 0, 7, 115),
+ 15,
+ libdcp::BOTTOM,
+ "My jacket was Idi Amin's",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 20),
+ libdcp::Time (0, 0, 0, 20)
+ ));
+
s = subs.subtitles_at (libdcp::Time (0, 0, 7, 190));
BOOST_CHECK_EQUAL (s.size(), 2);
- BOOST_CHECK_EQUAL (s.front()->text(), "My corset was H.M. The Queen's");
- BOOST_CHECK_EQUAL (s.front()->v_position(), 21);
- BOOST_CHECK_EQUAL (s.front()->in(), libdcp::Time (0, 0, 7, 177));
- BOOST_CHECK_EQUAL (s.front()->out(), libdcp::Time (0, 0, 11, 31));
- BOOST_CHECK_EQUAL (s.front()->font(), "Arial");
- BOOST_CHECK_EQUAL (s.front()->italic(), true);
- BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
- BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
- BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM);
- BOOST_CHECK_EQUAL (s.back()->text(), "My large wonderbra");
- BOOST_CHECK_EQUAL (s.back()->v_position(), 15);
- BOOST_CHECK_EQUAL (s.back()->in(), libdcp::Time (0, 0, 7, 177));
- BOOST_CHECK_EQUAL (s.back()->out(), libdcp::Time (0, 0, 11, 31));
- BOOST_CHECK_EQUAL (s.back()->font(), "Arial");
- BOOST_CHECK_EQUAL (s.back()->italic(), false);
- BOOST_CHECK_EQUAL (s.back()->color(), libdcp::Color(255, 255, 255));
- BOOST_CHECK_EQUAL (s.back()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.back()->effect(), libdcp::BORDER);
- BOOST_CHECK_EQUAL (s.back()->effect_color(), libdcp::Color(0, 0, 0));
- BOOST_CHECK_EQUAL (s.back()->v_align(), libdcp::BOTTOM);
-
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 39,
+ libdcp::Time (0, 0, 7, 177),
+ libdcp::Time (0, 0, 11, 31),
+ 21,
+ libdcp::BOTTOM,
+ "My corset was H.M. The Queen's",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 20),
+ libdcp::Time (0, 0, 0, 20)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 39,
+ libdcp::Time (0, 0, 7, 177),
+ libdcp::Time (0, 0, 11, 31),
+ 15,
+ libdcp::BOTTOM,
+ "My large wonderbra",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 20),
+ libdcp::Time (0, 0, 0, 20)
+ ));
+
s = subs.subtitles_at (libdcp::Time (0, 0, 11, 95));
BOOST_CHECK_EQUAL (s.size(), 1);
- BOOST_CHECK_EQUAL (s.front()->text(), "Once belonged to the Shah");
- BOOST_CHECK_EQUAL (s.front()->v_position(), 15);
- BOOST_CHECK_EQUAL (s.front()->in(), libdcp::Time (0, 0, 11, 94));
- BOOST_CHECK_EQUAL (s.front()->out(), libdcp::Time (0, 0, 13, 63));
- BOOST_CHECK_EQUAL (s.front()->font(), "Arial");
- BOOST_CHECK_EQUAL (s.front()->italic(), false);
- BOOST_CHECK_EQUAL (s.front()->color(), libdcp::Color(255, 255, 255));
- BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
- BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
- BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM);
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 39,
+ libdcp::Time (0, 0, 11, 94),
+ libdcp::Time (0, 0, 13, 63),
+ 15,
+ libdcp::BOTTOM,
+ "Once belonged to the Shah",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 20),
+ libdcp::Time (0, 0, 0, 20)
+ ));
s = subs.subtitles_at (libdcp::Time (0, 0, 14, 42));
BOOST_CHECK_EQUAL (s.size(), 1);
- BOOST_CHECK_EQUAL (s.front()->text(), "And these are Roy Hattersley's jeans");
- BOOST_CHECK_EQUAL (s.front()->v_position(), 15);
- BOOST_CHECK_EQUAL (s.front()->in(), libdcp::Time (0, 0, 13, 104));
- BOOST_CHECK_EQUAL (s.front()->out(), libdcp::Time (0, 0, 15, 177));
- BOOST_CHECK_EQUAL (s.front()->font(), "Arial");
- BOOST_CHECK_EQUAL (s.front()->italic(), false);
- BOOST_CHECK_EQUAL (s.front()->color(), libdcp::Color(255, 255, 255));
- BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
- BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
- BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM);
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 39,
+ libdcp::Time (0, 0, 13, 104),
+ libdcp::Time (0, 0, 15, 177),
+ 15,
+ libdcp::BOTTOM,
+ "And these are Roy Hattersley's jeans",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 20),
+ libdcp::Time (0, 0, 0, 20)
+ ));
}
BOOST_AUTO_TEST_CASE (dcp_time)
@@ -235,5 +256,3 @@ BOOST_AUTO_TEST_CASE (color)
BOOST_CHECK_EQUAL (c.g, 0);
BOOST_CHECK_EQUAL (c.b, 255);
}
-
-