Fill test disk partitions with random noise to expose more bugs.
[dcpomatic.git] / test / overlap_video_test.cc
index 7268070d58c6bf9759b760fb2654810c362008d8..c23444c4abe6756f92299b3cacb4eea6a37f2587 100644 (file)
@@ -23,6 +23,7 @@
 #include "lib/content_factory.h"
 #include "lib/dcpomatic_time.h"
 #include "lib/film.h"
+#include "lib/piece.h"
 #include "lib/player.h"
 #include "lib/video_content.h"
 #include "test.h"
@@ -40,7 +41,6 @@
 
 using std::dynamic_pointer_cast;
 using std::make_shared;
-using std::shared_ptr;
 
 
 BOOST_AUTO_TEST_CASE (overlap_video_test1)
@@ -57,7 +57,7 @@ BOOST_AUTO_TEST_CASE (overlap_video_test1)
        B->video->set_length (24);
        B->set_position (film, dcpomatic::DCPTime::from_seconds(1));
 
-       auto player = make_shared<Player>(film);
+       auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
        auto pieces = player->_pieces;
        BOOST_REQUIRE_EQUAL (pieces.size(), 2U);
        BOOST_CHECK_EQUAL (pieces.front()->content, A);
@@ -83,28 +83,32 @@ BOOST_AUTO_TEST_CASE (overlap_video_test1)
        BOOST_CHECK_EQUAL (asset->intrinsic_duration(), 72);
        auto reader = asset->start_read ();
 
+       auto close = [](int a, int b, int d) {
+               BOOST_CHECK (std::abs(a - b) < d);
+       };
+
        for (int i = 0; i < 24; ++i) {
                auto frame = reader->get_frame (i);
                auto image = dcp::decompress_j2k(*frame.get(), 0);
-               BOOST_CHECK_EQUAL (image->data(0)[0], 2808);
-               BOOST_CHECK_EQUAL (image->data(1)[0], 2176);
-               BOOST_CHECK_EQUAL (image->data(2)[0], 865);
+               close (image->data(0)[0], 2808, 2);
+               close (image->data(1)[0], 2176, 2);
+               close (image->data(2)[0], 865, 2);
        }
 
        for (int i = 24; i < 48; ++i) {
                auto frame = reader->get_frame (i);
                auto image = dcp::decompress_j2k(*frame.get(), 0);
-               BOOST_CHECK_EQUAL (image->data(0)[0], 2657);
-               BOOST_CHECK_EQUAL (image->data(1)[0], 3470);
-               BOOST_CHECK_EQUAL (image->data(2)[0], 1742);
+               close (image->data(0)[0], 2657, 2);
+               close (image->data(1)[0], 3470, 2);
+               close (image->data(2)[0], 1742, 2);
        }
 
        for (int i = 48; i < 72; ++i) {
                auto frame = reader->get_frame (i);
                auto image = dcp::decompress_j2k(*frame.get(), 0);
-               BOOST_CHECK_EQUAL (image->data(0)[0], 2808);
-               BOOST_CHECK_EQUAL (image->data(1)[0], 2176);
-               BOOST_CHECK_EQUAL (image->data(2)[0], 865);
+               close (image->data(0)[0], 2808, 2);
+               close (image->data(1)[0], 2176, 2);
+               close (image->data(2)[0], 865, 2);
        }
 }