X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Ftest.cc;h=b70e2354e9fd7a13304fd62f5393f9359b371eed;hb=0df83d7ba261cdbb5be62db34dae7b972e05ddd9;hp=0de7ace62d737641dcb7c93b612daa94b50e121f;hpb=6f0a590bc3266f21ba577116219bd019e891d480;p=dcpomatic.git diff --git a/test/test.cc b/test/test.cc index 0de7ace62..b70e2354e 100644 --- a/test/test.cc +++ b/test/test.cc @@ -21,12 +21,6 @@ * @brief Overall test stuff and useful methods for tests. */ -#include -#include -#include -#include -#include -#include #include "lib/config.h" #include "lib/util.h" #include "lib/signal_manager.h" @@ -36,9 +30,16 @@ #include "lib/cross.h" #include "lib/server_finder.h" #include "lib/image.h" +#include "lib/ratio.h" +#include +#include +#include +#include #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MODULE dcpomatic_test #include +#include +#include using std::string; using std::vector; @@ -46,6 +47,7 @@ using std::min; using std::cout; using std::cerr; using std::list; +using std::abs; using boost::shared_ptr; using boost::scoped_array; @@ -68,7 +70,7 @@ struct TestConfig dcpomatic_setup (); Config::instance()->set_num_local_encoding_threads (1); - Config::instance()->set_server_port_base (61920); + Config::instance()->set_server_port_base (61921); Config::instance()->set_default_isdcf_metadata (ISDCFMetadata ()); Config::instance()->set_default_container (Ratio::from_id ("185")); Config::instance()->set_default_dcp_content_type (static_cast (0)); @@ -105,10 +107,10 @@ new_test_film (string name) if (boost::filesystem::exists (p)) { boost::filesystem::remove_all (p); } - - shared_ptr f = shared_ptr (new Film (p.string())); - f->write_metadata (); - return f; + + shared_ptr film = shared_ptr (new Film (p.string())); + film->write_metadata (); + return film; } void @@ -118,7 +120,7 @@ check_audio_file (boost::filesystem::path ref, boost::filesystem::path check) ref_info.format = 0; SNDFILE* ref_file = sf_open (ref.string().c_str(), SFM_READ, &ref_info); BOOST_CHECK (ref_file); - + SF_INFO check_info; check_info.format = 0; SNDFILE* check_file = sf_open (check.string().c_str(), SFM_READ, &check_info); @@ -133,7 +135,7 @@ check_audio_file (boost::filesystem::path ref, boost::filesystem::path check) sf_count_t const buffer_size = 65536 * ref_info.channels; scoped_array ref_buffer (new int32_t[buffer_size]); scoped_array check_buffer (new int32_t[buffer_size]); - + sf_count_t N = ref_info.frames; while (N) { sf_count_t this_time = min (buffer_size, N); @@ -143,7 +145,10 @@ check_audio_file (boost::filesystem::path ref, boost::filesystem::path check) BOOST_CHECK_EQUAL (r, this_time); for (sf_count_t i = 0; i < this_time; ++i) { - BOOST_CHECK (fabs (ref_buffer[i] - check_buffer[i]) <= 65536); + BOOST_REQUIRE_MESSAGE ( + abs (ref_buffer[i] - check_buffer[i]) <= 65536, + ref << " differs from " << check << " at " << (ref_info.frames - N + i) << " of " << ref_info.frames + ); } N -= this_time; @@ -159,14 +164,14 @@ check_file (boost::filesystem::path ref, boost::filesystem::path check) BOOST_CHECK (ref_file); FILE* check_file = fopen_boost (check, "rb"); BOOST_CHECK (check_file); - + int const buffer_size = 65536; uint8_t* ref_buffer = new uint8_t[buffer_size]; uint8_t* check_buffer = new uint8_t[buffer_size]; SafeStringStream error; error << "File " << check.string() << " differs from reference " << ref.string(); - + while (N) { uintmax_t this_time = min (uintmax_t (buffer_size), N); size_t r = fread (ref_buffer, 1, this_time, ref_file); @@ -178,7 +183,7 @@ check_file (boost::filesystem::path ref, boost::filesystem::path check) if (memcmp (ref_buffer, check_buffer, this_time)) { break; } - + N -= this_time; } @@ -210,9 +215,10 @@ check_dcp (boost::filesystem::path ref, boost::filesystem::path check) options.max_std_dev_pixel_error = 5; options.max_audio_sample_error = 255; options.cpl_annotation_texts_can_differ = true; - options.mxf_filenames_can_differ = true; + options.reel_annotation_texts_can_differ = true; options.reel_hashes_can_differ = true; - + options.issue_dates_can_differ = true; + BOOST_CHECK (ref_dcp.equals (check_dcp, options, boost::bind (note, _1, _2))); } @@ -286,7 +292,11 @@ wait_for_jobs () JobManager* jm = JobManager::instance (); while (jm->work_to_do ()) { signal_manager->ui_idle (); + dcpomatic_sleep (1); } + + cout << "Waiting for jobs: all finished; errors=" << jm->errors() << ".\n"; + if (jm->errors ()) { int N = 0; for (list >::iterator i = jm->_jobs.begin(); i != jm->_jobs.end(); ++i) { @@ -307,8 +317,12 @@ wait_for_jobs () signal_manager->ui_idle (); - /* Discard all jobs so we lose any we just reported an error in */ - JobManager::drop (); + if (jm->errors ()) { + cout << "Dropping JobManager\n"; + JobManager::drop (); + } else { + cout << "Not dropping JobManager\n"; + } } void @@ -318,7 +332,7 @@ write_image (shared_ptr image, boost::filesystem::path file) using namespace MagickCore; #else using namespace MagickLib; -#endif +#endif Magick::Image m (image->size().width, image->size().height, "ARGB", CharPixel, (void *) image->data()[0]); m.write (file.string ());