summaryrefslogtreecommitdiff
path: root/test/subtitle_tests.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-07-02 23:50:08 +0100
committerCarl Hetherington <cth@carlh.net>2013-07-02 23:50:08 +0100
commitf33cc09ad01f4aa57a09d3bfa23193f357240d45 (patch)
tree202752555b8cc3fd6398954c7de2db460a8d2307 /test/subtitle_tests.cc
parentac08ad9d8e10aa1c8e13645ea83438376329d678 (diff)
Split test file up a bit.
Diffstat (limited to 'test/subtitle_tests.cc')
-rw-r--r--test/subtitle_tests.cc419
1 files changed, 419 insertions, 0 deletions
diff --git a/test/subtitle_tests.cc b/test/subtitle_tests.cc
new file mode 100644
index 00000000..64a3f6bd
--- /dev/null
+++ b/test/subtitle_tests.cc
@@ -0,0 +1,419 @@
+/*
+ Copyright (C) 2012-2013 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
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+/* Load a subtitle asset from XML and check that it is read correctly */
+BOOST_AUTO_TEST_CASE (subtitles1)
+{
+ libdcp::SubtitleAsset subs ("test/data", "subs1.xml");
+
+ BOOST_CHECK_EQUAL (subs.language(), "French");
+
+ 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().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, 1),
+ libdcp::Time (0, 0, 0, 1)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 0, 7, 190));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ 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, 1),
+ libdcp::Time (0, 0, 0, 1)
+ ));
+ 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, 1),
+ libdcp::Time (0, 0, 0, 1)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 0, 11, 95));
+ BOOST_CHECK_EQUAL (s.size(), 1);
+ 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, 1),
+ libdcp::Time (0, 0, 0, 1)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 0, 14, 42));
+ BOOST_CHECK_EQUAL (s.size(), 1);
+ 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, 1),
+ libdcp::Time (0, 0, 0, 1)
+ ));
+}
+
+/** And similarly for another one */
+BOOST_AUTO_TEST_CASE (subtitles2)
+{
+ libdcp::SubtitleAsset subs ("test/data", "subs2.xml");
+
+ list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_at (libdcp::Time (0, 0, 42, 100));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 0, 41, 62),
+ libdcp::Time (0, 0, 43, 52),
+ 89,
+ libdcp::TOP,
+ "At afternoon tea with John Peel",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 0, 41, 62),
+ libdcp::Time (0, 0, 43, 52),
+ 95,
+ libdcp::TOP,
+ "I enquired if his accent was real",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 0, 50, 50));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 0, 50, 42),
+ libdcp::Time (0, 0, 52, 21),
+ 89,
+ libdcp::TOP,
+ "He said \"out of the house",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 0, 50, 42),
+ libdcp::Time (0, 0, 52, 21),
+ 95,
+ libdcp::TOP,
+ "I'm incredibly scouse",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 1, 2, 300));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 2, 208),
+ libdcp::Time (0, 1, 4, 10),
+ 89,
+ libdcp::TOP,
+ "At home it depends how I feel.\"",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 2, 208),
+ libdcp::Time (0, 1, 4, 10),
+ 95,
+ libdcp::TOP,
+ "I spent a long weekend in Brighton",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 1, 15, 50));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 15, 42),
+ libdcp::Time (0, 1, 16, 42),
+ 89,
+ libdcp::TOP,
+ "With the legendary Miss Enid Blyton",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 15, 42),
+ libdcp::Time (0, 1, 16, 42),
+ 95,
+ libdcp::TOP,
+ "She said \"you be Noddy",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 1, 27, 200));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 27, 115),
+ libdcp::Time (0, 1, 28, 208),
+ 89,
+ libdcp::TOP,
+ "That curious creature the Sphinx",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 27, 115),
+ libdcp::Time (0, 1, 28, 208),
+ 95,
+ libdcp::TOP,
+ "Is smarter than anyone thinks",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 1, 42, 300));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 42, 229),
+ libdcp::Time (0, 1, 45, 62),
+ 89,
+ libdcp::TOP,
+ "It sits there and smirks",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 42, 229),
+ libdcp::Time (0, 1, 45, 62),
+ 95,
+ libdcp::TOP,
+ "And you don't think it works",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 1, 45, 200));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 45, 146),
+ libdcp::Time (0, 1, 47, 94),
+ 89,
+ libdcp::TOP,
+ "Then when you're not looking, it winks.",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 45, 146),
+ libdcp::Time (0, 1, 47, 94),
+ 95,
+ libdcp::TOP,
+ "When it snows you will find Sister Sledge",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 1, 47, 249));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 47, 146),
+ libdcp::Time (0, 1, 48, 167),
+ 89,
+ libdcp::TOP,
+ "Out mooning, at night, on the ledge",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ false,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 1, 47, 146),
+ libdcp::Time (0, 1, 48, 167),
+ 95,
+ libdcp::TOP,
+ "One storey down",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+ s = subs.subtitles_at (libdcp::Time (0, 2, 6, 210));
+ BOOST_CHECK_EQUAL (s.size(), 2);
+ BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 2, 5, 208),
+ libdcp::Time (0, 2, 7, 31),
+ 89,
+ libdcp::TOP,
+ "HELLO",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+ BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
+ "Arial",
+ true,
+ libdcp::Color (255, 255, 255),
+ 42,
+ libdcp::Time (0, 2, 5, 208),
+ libdcp::Time (0, 2, 7, 31),
+ 95,
+ libdcp::TOP,
+ "WORLD",
+ libdcp::BORDER,
+ libdcp::Color (0, 0, 0),
+ libdcp::Time (0, 0, 0, 0),
+ libdcp::Time (0, 0, 0, 0)
+ ));
+
+
+
+}