X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Ftest.cc;h=7e0f5734035bcd54dc8c9c0ec721e3e9e66d6c4e;hb=eea4471bb8c681b9130d4c5049f386b240a3ac3a;hp=791154077f21585a3f3fa63980cde82fedb14a1d;hpb=6bdca5fdc67602249baf8cb0a9bebe818c067284;p=dcpomatic.git diff --git a/test/test.cc b/test/test.cc index 791154077..7e0f57340 100644 --- a/test/test.cc +++ b/test/test.cc @@ -1,19 +1,20 @@ /* - Copyright (C) 2012-2015 Carl Hetherington + Copyright (C) 2012-2017 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ @@ -71,16 +72,18 @@ struct TestConfig { dcpomatic_setup (); - Config::instance()->set_num_local_encoding_threads (1); + Config::instance()->set_master_encoding_threads (1); + Config::instance()->set_server_encoding_threads (1); 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)); Config::instance()->set_default_audio_delay (0); Config::instance()->set_default_j2k_bandwidth (100000000); + Config::instance()->set_default_interop (false); Config::instance()->set_log_types (LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR); - EncodeServerFinder::instance()->disable (); + EncodeServerFinder::instance()->stop (); signal_manager = new TestSignalManager (); } @@ -111,13 +114,13 @@ new_test_film (string name) boost::filesystem::remove_all (p); } - shared_ptr film = shared_ptr (new Film (p.string())); + shared_ptr film = shared_ptr (new Film (p)); film->write_metadata (); return film; } void -check_audio_file (boost::filesystem::path ref, boost::filesystem::path check) +check_wav_file (boost::filesystem::path ref, boost::filesystem::path check) { SF_INFO ref_info; ref_info.format = 0; @@ -159,6 +162,22 @@ check_audio_file (boost::filesystem::path ref, boost::filesystem::path check) } } +void +check_image (boost::filesystem::path ref, boost::filesystem::path check) +{ +#ifdef DCPOMATIC_IMAGE_MAGICK + using namespace MagickCore; +#else + using namespace MagickLib; +#endif + + Magick::Image ref_image; + ref_image.read (ref.string ()); + Magick::Image check_image; + check_image.read (check.string ()); + BOOST_CHECK_MESSAGE (ref_image.compare (check_image), ref << " differs from " << check); +} + void check_file (boost::filesystem::path ref, boost::filesystem::path check) { @@ -173,8 +192,7 @@ check_file (boost::filesystem::path ref, boost::filesystem::path check) 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(); + string error = "File " + check.string() + " differs from reference " + ref.string(); while (N) { uintmax_t this_time = min (uintmax_t (buffer_size), N); @@ -183,7 +201,7 @@ check_file (boost::filesystem::path ref, boost::filesystem::path check) r = fread (check_buffer, 1, this_time, check_file); BOOST_CHECK_EQUAL (r, this_time); - BOOST_CHECK_MESSAGE (memcmp (ref_buffer, check_buffer, this_time) == 0, error.str ()); + BOOST_CHECK_MESSAGE (memcmp (ref_buffer, check_buffer, this_time) == 0, error); if (memcmp (ref_buffer, check_buffer, this_time)) { break; } @@ -238,7 +256,10 @@ check_xml (xmlpp::Element* ref, xmlpp::Element* test, list ignore) xmlpp::Element::NodeList ref_children = ref->get_children (); xmlpp::Element::NodeList test_children = test->get_children (); - BOOST_CHECK_EQUAL (ref_children.size (), test_children.size ()); + BOOST_CHECK_MESSAGE ( + ref_children.size() == test_children.size(), + ref->get_name() << " has " << ref_children.size() << " or " << test_children.size() << " children" + ); xmlpp::Element::NodeList::iterator k = ref_children.begin (); xmlpp::Element::NodeList::iterator l = test_children.begin (); @@ -290,7 +311,7 @@ check_xml (boost::filesystem::path ref, boost::filesystem::path test, listerrors ()) { JobManager::drop (); + return true; } + + return false; } void -write_image (shared_ptr image, boost::filesystem::path file) +write_image (shared_ptr image, boost::filesystem::path file, string format) { #ifdef DCPOMATIC_IMAGE_MAGICK using namespace MagickCore; @@ -333,6 +357,6 @@ write_image (shared_ptr image, boost::filesystem::path file) using namespace MagickLib; #endif - Magick::Image m (image->size().width, image->size().height, "ARGB", CharPixel, (void *) image->data()[0]); + Magick::Image m (image->size().width, image->size().height, format.c_str(), CharPixel, (void *) image->data()[0]); m.write (file.string ()); }