Untested; more movement of stuff out of decoder.
[dcpomatic.git] / test / test.cc
index 742a522fbf58287270794c717ba7a86fd9e8b06c..4235012967f719c3aa8f0dc151e872be4fad5adb 100644 (file)
@@ -177,11 +177,19 @@ BOOST_AUTO_TEST_CASE (dvd_test)
        BOOST_CHECK_EQUAL (i->size, 7);
 }
 
+class NullLog : public Log
+{
+public:
+       void do_log (string) {}
+};
+
 void
-do_positive_delay_line_test (int delay_length, int block_length)
+do_positive_delay_line_test (int delay_length, int data_length)
 {
-       DelayLine d (delay_length);
-       uint8_t data[block_length];
+       NullLog log;
+       
+       DelayLine d (&log, 6, delay_length);
+       shared_ptr<AudioBuffers> data (new AudioBuffers (6, data_length));
 
        int in = 0;
        int out = 0;
@@ -189,64 +197,70 @@ do_positive_delay_line_test (int delay_length, int block_length)
        int zeros = 0;
        
        for (int i = 0; i < 64; ++i) {
-               for (int j = 0; j < block_length; ++j) {
-                       data[j] = in;
-                       ++in;
+               for (int j = 0; j < data_length; ++j) {
+                       for (int c = 0; c < 6; ++c ) {
+                               data->data(c)[j] = in;
+                               ++in;
+                       }
                }
 
-               int const a = d.feed (data, block_length);
-               returned += a;
+               /* This only works because the delay line modifies the parameter */
+               d.process_audio (data);
+               returned += data->frames ();
 
-               for (int j = 0; j < a; ++j) {
+               for (int j = 0; j < data->frames(); ++j) {
                        if (zeros < delay_length) {
-                               BOOST_CHECK_EQUAL (data[j], 0);
+                               for (int c = 0; c < 6; ++c) {
+                                       BOOST_CHECK_EQUAL (data->data(c)[j], 0);
+                               }
                                ++zeros;
                        } else {
-                               BOOST_CHECK_EQUAL (data[j], out & 0xff);
-                               ++out;
+                               for (int c = 0; c < 6; ++c) {
+                                       BOOST_CHECK_EQUAL (data->data(c)[j], out);
+                                       ++out;
+                               }
                        }
                }
        }
 
-       BOOST_CHECK_EQUAL (returned, 64 * block_length);
+       BOOST_CHECK_EQUAL (returned, 64 * data_length);
 }
 
 void
-do_negative_delay_line_test (int delay_length, int block_length)
+do_negative_delay_line_test (int delay_length, int data_length)
 {
-       DelayLine d (delay_length);
-       uint8_t data[block_length];
+       NullLog log;
+
+       DelayLine d (&log, 6, delay_length);
+       shared_ptr<AudioBuffers> data (new AudioBuffers (6, data_length));
 
        int in = 0;
-       int out = -delay_length;
+       int out = -delay_length * 6;
        int returned = 0;
        
        for (int i = 0; i < 256; ++i) {
-               for (int j = 0; j < block_length; ++j) {
-                       data[j] = in;
-                       ++in;
+               data->set_frames (data_length);
+               for (int j = 0; j < data_length; ++j) {
+                       for (int c = 0; c < 6; ++c) {
+                               data->data(c)[j] = in;
+                               ++in;
+                       }
                }
 
-               int const a = d.feed (data, block_length);
-               returned += a;
+               /* This only works because the delay line modifies the parameter */
+               d.process_audio (data);
+               returned += data->frames ();
 
-               for (int j = 0; j < a; ++j) {
-                       BOOST_CHECK_EQUAL (data[j], out & 0xff);
-                       ++out;
+               for (int j = 0; j < data->frames(); ++j) {
+                       for (int c = 0; c < 6; ++c) {
+                               BOOST_CHECK_EQUAL (data->data(c)[j], out);
+                               ++out;
+                       }
                }
        }
 
-       uint8_t remainder[-delay_length];
-       d.get_remaining (remainder);
        returned += -delay_length;
-
-       for (int i = 0; i < -delay_length; ++i) {
-               BOOST_CHECK_EQUAL (remainder[i], 0);
-               ++out;
-       }
-
-       BOOST_CHECK_EQUAL (returned, 256 * block_length);
-       
+       BOOST_CHECK_EQUAL (returned, 256 * data_length);
 }
 
 BOOST_AUTO_TEST_CASE (delay_line_test)
@@ -276,7 +290,7 @@ BOOST_AUTO_TEST_CASE (paths_test)
 {
        shared_ptr<Film> f = new_test_film ("paths_test");
        f->set_directory ("build/test/a/b/c/d/e");
-       vector<int> thumbs;
+       vector<SourceFrame> thumbs;
        thumbs.push_back (42);
        f->set_thumbs (thumbs);
        BOOST_CHECK_EQUAL (f->thumb_file (0), "build/test/a/b/c/d/e/thumbs/00000042.png");
@@ -409,21 +423,21 @@ BOOST_AUTO_TEST_CASE (audio_sampling_rate_test)
        shared_ptr<Film> f = new_test_film ("audio_sampling_rate_test");
        f->set_frames_per_second (24);
 
-       f->set_audio_sample_rate (48000);
+       f->set_audio_stream (AudioStream ("a", 42, 48000, 0));
        BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 48000);
 
-       f->set_audio_sample_rate (44100);
+       f->set_audio_stream (AudioStream ("a", 42, 44100, 0));
        BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 48000);
 
-       f->set_audio_sample_rate (80000);
+       f->set_audio_stream (AudioStream ("a", 42, 80000, 0));
        BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 96000);
 
        f->set_frames_per_second (23.976);
-       f->set_audio_sample_rate (48000);
+       f->set_audio_stream (AudioStream ("a", 42, 48000, 0));
        BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 47952);
 
        f->set_frames_per_second (29.97);
-       f->set_audio_sample_rate (48000);
+       f->set_audio_stream (AudioStream ("a", 42, 48000, 0));
        BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 47952);
 }