Fix some build warnings on macOS.
[libsub.git] / test / stl_binary_reader_test.cc
index cf97b5afb6afed8915d726c036099c28a51c4491..a0469d009796d5e1f1847d0a9ccd24532c0a86bd 100644 (file)
@@ -17,6 +17,7 @@
 
 */
 
+
 #include "stl_binary_reader.h"
 #include "subtitle.h"
 #include "test.h"
 #include <boost/test/unit_test.hpp>
 #include <fstream>
 
+
 using std::ifstream;
+using std::make_shared;
 using std::ofstream;
 using std::shared_ptr;
-using std::make_shared;
+using std::vector;
+
 
 /* Test reading of a binary STL file */
 BOOST_AUTO_TEST_CASE (stl_binary_reader_test1)
@@ -70,15 +74,60 @@ BOOST_AUTO_TEST_CASE (stl_binary_reader_test2)
 }
 
 
-/** Test reading a file which raised "Unknown language group code U8" */
+/** Test reading a file which raised "Unknown language group code U8" and which has
+ *  bizarre line numbering.
+ */
 BOOST_AUTO_TEST_CASE (stl_binary_reader_test3)
 {
        if (private_test.empty()) {
                return;
        }
 
+       /* This file has a MNR value of 99, which (as per the spec recommendation)
+        * we "fix" to 12.  But it also has line numbers which start at 99 and go up from there,
+        * so if we don't also alter the line numbers they end up way off the bottom of the screen.
+        * Check that the line numbers are brought into the range of our "fix".
+        */
+
        auto path = private_test / "hsk.stl";
        ifstream in (path.string().c_str());
        auto reader = make_shared<sub::STLBinaryReader>(in);
+       for (auto i: reader->subtitles()) {
+               BOOST_REQUIRE(*i.vertical_position.line >= 0);
+               BOOST_REQUIRE(*i.vertical_position.line <= 12);
+       }
+}
+
+
+BOOST_AUTO_TEST_CASE(stl_binary_reader_with_colour)
+{
+       auto path = private_test / "at.stl";
+       ifstream in(path.string().c_str());
+       auto reader = make_shared<sub::STLBinaryReader>(in);
+
+       vector<sub::Colour> reference = {
+               { 1, 1, 1 },
+               { 1, 0, 1 },
+               { 1, 1, 1 },
+               { 1, 0, 1 },
+               { 1, 1, 1 },
+               { 1, 1, 0 },
+               { 1, 1, 1 },
+               { 1, 1, 0 },
+               { 1, 1, 1 },
+               { 1, 1, 0 },
+               { 1, 1, 1 },
+               { 1, 1, 0 },
+               { 1, 1, 1 },
+               { 1, 1, 0 }
+       };
+
+       /* Check the first few lines */
+       auto subs = reader->subtitles();
+       BOOST_REQUIRE(subs.size() >= reference.size());
+
+       for (size_t i = 0; i < reference.size(); ++i) {
+               BOOST_CHECK(subs[i].colour == reference[i]);
+       }
 }