diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-08-22 17:33:43 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-08-22 17:33:43 +0100 |
| commit | 78979cc6ad60c03bfc2e3757722d8e18d670a4c3 (patch) | |
| tree | 662e7bb91ad3cd7b06b4c7260dd449e7d151a8ef | |
| parent | b4a004619216df74aaac99a67ccc25d5547926ee (diff) | |
Very slightly less verbose subs checking.
| -rw-r--r-- | src/subtitle_asset.cc | 39 | ||||
| -rw-r--r-- | src/subtitle_asset.h | 10 | ||||
| -rw-r--r-- | test/tests.cc | 135 |
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); } - - |
