Copy another test over from DCP-o-matic.
authorCarl Hetherington <cth@carlh.net>
Mon, 6 Oct 2014 10:59:55 +0000 (11:59 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 6 Oct 2014 10:59:55 +0000 (11:59 +0100)
src/reader.h
src/subrip_reader.h
test/subrip_reader_test.cc

index 989ad58caa1ff6a72f9a235763c17b94a9547c4e..235fa81981c3cd9d692ecd088dd426b593746a05 100644 (file)
@@ -25,6 +25,8 @@
 #include <map>
 #include <string>
 
+struct subrip_reader_convert_line_test;
+
 namespace sub {
 
 /** @class Reader
@@ -42,6 +44,8 @@ public:
        }
 
 protected:
+       friend struct ::subrip_reader_convert_line_test;
+
        void warn (std::string) const;
 
        std::list<RawSubtitle> _subs;
index 2c69971d8d226095a7cff2ac1761aa25957000c1..8824347ee534bdab4918bc21d186e0490011f8a1 100644 (file)
@@ -28,6 +28,10 @@ public:
        SubripReader (FILE* f);
 
 private:
+       /* For tests */
+       friend struct ::subrip_reader_convert_line_test;
+       SubripReader () {}
+       
        TimePair convert_time (std::string t);
        void convert_line (std::string t, int line_number, TimePair from, TimePair to);
        void maybe_content (RawSubtitle& p);
index e0ecc841f3cb1f30003a45122e46a867c741e5f8..f294e556d1e01d8736e5b0b84f731fd54134e956 100644 (file)
@@ -209,3 +209,66 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test2)
        BOOST_CHECK (i == subs.end ());
 }
 
+/** Test SubripReader::convert_line */
+BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test)
+{
+       sub::SubripReader r;
+       
+       r.convert_line ("Hello world", 0, sub::TimePair (), sub::TimePair ());
+       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 ());
+       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 ());
+       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 ());
+       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 ());
+       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 ());
+       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 ());
+       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 ());
+       BOOST_CHECK_EQUAL (r._subs.size(), 3);
+       list<sub::RawSubtitle>::iterator i = r._subs.begin ();  
+       BOOST_CHECK_EQUAL (i->text, "This is ");
+       BOOST_CHECK_EQUAL (i->bold, true);
+       BOOST_CHECK_EQUAL (i->italic, false);
+       ++i;
+       BOOST_CHECK_EQUAL (i->text, "nesting");
+       BOOST_CHECK_EQUAL (i->bold, true);
+       BOOST_CHECK_EQUAL (i->italic, true);
+       ++i;
+       BOOST_CHECK_EQUAL (i->text, " of subtitles");
+       BOOST_CHECK_EQUAL (i->bold, true);
+       BOOST_CHECK_EQUAL (i->italic, false);
+       ++i;
+       r._subs.clear ();
+}