Don't crash when failing to parse a KDM.
[dcpomatic.git] / test / test.cc
index c7a9e95bfd6f8d6a78eda143c4020f4d4bf458ce..b8d7070f8b960c6f89ee6bc4c30993f8dba662a0 100644 (file)
@@ -72,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<DCPContentType*> (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 ();
        }
@@ -112,7 +114,7 @@ new_test_film (string name)
                boost::filesystem::remove_all (p);
        }
 
-       shared_ptr<Film> film = shared_ptr<Film> (new Film (p.string()));
+       shared_ptr<Film> film = shared_ptr<Film> (new Film (p));
        film->write_metadata ();
        return film;
 }
@@ -174,8 +176,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);
@@ -184,7 +185,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;
                }
@@ -239,7 +240,10 @@ check_xml (xmlpp::Element* ref, xmlpp::Element* test, list<string> 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 ();
@@ -291,7 +295,7 @@ check_xml (boost::filesystem::path ref, boost::filesystem::path test, list<strin
        check_xml (ref_root, test_root, ignore);
 }
 
-void
+bool
 wait_for_jobs ()
 {
        JobManager* jm = JobManager::instance ();
@@ -322,7 +326,10 @@ wait_for_jobs ()
 
        if (jm->errors ()) {
                JobManager::drop ();
+               return true;
        }
+
+       return false;
 }
 
 void