Tweak error threshold for an image comparison involving subtitles.
authorCarl Hetherington <cth@carlh.net>
Wed, 28 Feb 2018 00:52:42 +0000 (00:52 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 28 Feb 2018 00:52:42 +0000 (00:52 +0000)
test/player_test.cc
test/test.cc
test/test.h

index e22570bc0b95b121ccb460cedc83c314c599b6d9..585d357dfed016afeea6db34fc95b12118aad1fa 100644 (file)
@@ -227,7 +227,11 @@ BOOST_AUTO_TEST_CASE (player_seek_test)
                pair<shared_ptr<PlayerVideo>, DCPTime> video = butler->get_video();
                BOOST_CHECK_EQUAL(video.second.get(), t.get());
                write_image(video.first->image(note_handler, PlayerVideo::always_rgb, false, true), String::compose("build/test/player_seek_test_%1.png", i), "RGB");
-               check_image(String::compose("test/data/player_seek_test_%1.png", i), String::compose("build/test/player_seek_test_%1.png", i));
+               /* This 0.011 is empirically chosen (hopefully) to accept changes in rendering between the reference and a test machine
+                  (17.10 and 16.04 seem to anti-alias a little differently) but to reject gross errors e.g. missing fonts or missing
+                  text altogether.
+               */
+               check_image(String::compose("test/data/player_seek_test_%1.png", i), String::compose("build/test/player_seek_test_%1.png", i), 0.011);
        }
 }
 
index 9e168b1e21c5cca692c69ea7ad04bdd771432819..68c1cfccd897e5792d88698af675337290813097 100644 (file)
@@ -231,7 +231,7 @@ check_mxf_audio_file (boost::filesystem::path ref, boost::filesystem::path check
 }
 
 void
-check_image (boost::filesystem::path ref, boost::filesystem::path check)
+check_image (boost::filesystem::path ref, boost::filesystem::path check, double threshold)
 {
 #ifdef DCPOMATIC_IMAGE_MAGICK
        using namespace MagickCore;
@@ -248,7 +248,7 @@ check_image (boost::filesystem::path ref, boost::filesystem::path check)
        */
 #ifdef DCPOMATIC_ADVANCED_MAGICK_COMPARE
        double const dist = ref_image.compare(check_image, Magick::RootMeanSquaredErrorMetric);
-       BOOST_CHECK_MESSAGE (dist < 0.01, ref << " differs from " << check << " " << dist);
+       BOOST_CHECK_MESSAGE (dist < threshold, ref << " differs from " << check << " " << dist);
 #else
        BOOST_CHECK_MESSAGE (!ref_image.compare(check_image), ref << " differs from " << check);
 #endif
index 78fa26b4361497f39f34dab478f2bff6cdfa8042..5e030f0ccb3ad2af8dc5fa180e6f06c3af722439 100644 (file)
@@ -36,7 +36,7 @@ extern void check_mxf_audio_file (boost::filesystem::path ref, boost::filesystem
 extern void check_xml (boost::filesystem::path, boost::filesystem::path, std::list<std::string>);
 extern void check_file (boost::filesystem::path, boost::filesystem::path);
 extern void check_ffmpeg (boost::filesystem::path, boost::filesystem::path, int audio_tolerance);
-extern void check_image (boost::filesystem::path, boost::filesystem::path);
+extern void check_image (boost::filesystem::path, boost::filesystem::path, double threshold = 0.01);
 extern boost::filesystem::path test_film_dir (std::string);
 extern void write_image (boost::shared_ptr<const Image> image, boost::filesystem::path file, std::string format);
 boost::filesystem::path dcp_file (boost::shared_ptr<const Film> film, std::string prefix);