X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Ftest.cc;h=386aead2eca463f2b9671fcd112f6291acd5223e;hb=5702637ee38f0349fd0b7f17f10bda581e795a9d;hp=13eb1f17fec42802ac9ff7cc7cb7c5b625df759e;hpb=d58f9adc515ac0c0193a4998fed3605f4e2c6e11;p=dcpomatic.git diff --git a/test/test.cc b/test/test.cc index 13eb1f17f..386aead2e 100644 --- a/test/test.cc +++ b/test/test.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include "format.h" #include "film.h" #include "filter.h" @@ -57,16 +58,28 @@ setup_test_config () Config::instance()->set_num_local_encoding_threads (1); Config::instance()->set_servers (vector ()); Config::instance()->set_server_port (61920); + Config::instance()->set_default_dci_metadata (DCIMetadata ()); +} + +boost::filesystem::path +test_film_dir (string name) +{ + boost::filesystem::path p; + p /= "build"; + p /= "test"; + p /= name; + return p; } shared_ptr new_test_film (string name) { - string const d = String::compose ("build/test/%1", name); - if (boost::filesystem::exists (d)) { - boost::filesystem::remove_all (d); + boost::filesystem::path p = test_film_dir (name); + if (boost::filesystem::exists (p)) { + boost::filesystem::remove_all (p); } - return shared_ptr (new Film (d, false)); + + return shared_ptr (new Film (p.string(), false)); } @@ -143,6 +156,7 @@ BOOST_AUTO_TEST_CASE (film_metadata_test) BOOST_CHECK_THROW (new Film (test_film, true), OpenFileError); shared_ptr f (new Film (test_film, false)); + f->_dci_date = boost::gregorian::from_undelimited_string ("20130211"); BOOST_CHECK (f->format() == 0); BOOST_CHECK (f->dcp_content_type() == 0); BOOST_CHECK (f->filters ().empty()); @@ -385,26 +399,30 @@ do_remote_encode (shared_ptr frame, ServerDescription* descriptio BOOST_AUTO_TEST_CASE (client_server_test) { - shared_ptr image (new SimpleImage (PIX_FMT_RGB24, libdcp::Size (1998, 1080), false)); + shared_ptr image (new SimpleImage (PIX_FMT_RGB24, libdcp::Size (1998, 1080), true)); uint8_t* p = image->data()[0]; for (int y = 0; y < 1080; ++y) { + uint8_t* q = p; for (int x = 0; x < 1998; ++x) { - *p++ = x % 256; - *p++ = y % 256; - *p++ = (x + y) % 256; + *q++ = x % 256; + *q++ = y % 256; + *q++ = (x + y) % 256; } + p += image->stride()[0]; } - shared_ptr sub_image (new SimpleImage (PIX_FMT_RGBA, libdcp::Size (100, 200), false)); + shared_ptr sub_image (new SimpleImage (PIX_FMT_RGBA, libdcp::Size (100, 200), true)); p = sub_image->data()[0]; for (int y = 0; y < 200; ++y) { + uint8_t* q = p; for (int x = 0; x < 100; ++x) { - *p++ = y % 256; - *p++ = x % 256; - *p++ = (x + y) % 256; - *p++ = 1; + *q++ = y % 256; + *q++ = x % 256; + *q++ = (x + y) % 256; + *q++ = 1; } + p += sub_image->stride()[0]; } shared_ptr subtitle (new Subtitle (Position (50, 60), sub_image)); @@ -462,7 +480,8 @@ BOOST_AUTO_TEST_CASE (make_dcp_test) film->set_content ("../../../test/test.mp4"); film->set_format (Format::from_nickname ("Flat")); film->set_dcp_content_type (DCPContentType::from_pretty_name ("Test")); - film->make_dcp (true); + film->make_dcp (); + film->write_metadata (); while (JobManager::instance()->work_to_do ()) { dvdomatic_sleep (1); @@ -471,6 +490,19 @@ BOOST_AUTO_TEST_CASE (make_dcp_test) BOOST_CHECK_EQUAL (JobManager::instance()->errors(), false); } +/** Test Film::have_dcp(). Requires the output from make_dcp_test above */ +BOOST_AUTO_TEST_CASE (have_dcp_test) +{ + boost::filesystem::path p = test_film_dir ("make_dcp_test"); + Film f (p.string ()); + BOOST_CHECK (f.have_dcp()); + + p /= f.dcp_name(); + p /= "video.mxf"; + boost::filesystem::remove (p); + BOOST_CHECK (!f.have_dcp ()); +} + BOOST_AUTO_TEST_CASE (make_dcp_with_range_test) { shared_ptr film = new_test_film ("make_dcp_with_range_test"); @@ -480,7 +512,7 @@ BOOST_AUTO_TEST_CASE (make_dcp_with_range_test) film->set_format (Format::from_nickname ("Flat")); film->set_dcp_content_type (DCPContentType::from_pretty_name ("Test")); film->set_trim_end (42); - film->make_dcp (true); + film->make_dcp (); while (JobManager::instance()->work_to_do() && !JobManager::instance()->errors()) { dvdomatic_sleep (1); @@ -620,8 +652,8 @@ BOOST_AUTO_TEST_CASE (audio_sampling_rate_test) class TestJob : public Job { public: - TestJob (shared_ptr f, shared_ptr req) - : Job (f, req) + TestJob (shared_ptr f) + : Job (f) { } @@ -652,8 +684,8 @@ BOOST_AUTO_TEST_CASE (job_manager_test) { shared_ptr f; - /* Single job, no dependency */ - shared_ptr a (new TestJob (f, shared_ptr ())); + /* Single job */ + shared_ptr a (new TestJob (f)); JobManager::instance()->add (a); dvdomatic_sleep (1); @@ -661,37 +693,6 @@ BOOST_AUTO_TEST_CASE (job_manager_test) a->set_finished_ok (); dvdomatic_sleep (2); BOOST_CHECK_EQUAL (a->finished_ok(), true); - - /* Two jobs, dependency */ - a.reset (new TestJob (f, shared_ptr ())); - shared_ptr b (new TestJob (f, a)); - - JobManager::instance()->add (a); - JobManager::instance()->add (b); - dvdomatic_sleep (2); - BOOST_CHECK_EQUAL (a->running(), true); - BOOST_CHECK_EQUAL (b->running(), false); - a->set_finished_ok (); - dvdomatic_sleep (2); - BOOST_CHECK_EQUAL (a->finished_ok(), true); - BOOST_CHECK_EQUAL (b->running(), true); - b->set_finished_ok (); - dvdomatic_sleep (2); - BOOST_CHECK_EQUAL (b->finished_ok(), true); - - /* Two jobs, dependency, first fails */ - a.reset (new TestJob (f, shared_ptr ())); - b.reset (new TestJob (f, a)); - - JobManager::instance()->add (a); - JobManager::instance()->add (b); - dvdomatic_sleep (2); - BOOST_CHECK_EQUAL (a->running(), true); - BOOST_CHECK_EQUAL (b->running(), false); - a->set_finished_error (); - dvdomatic_sleep (2); - BOOST_CHECK_EQUAL (a->finished_in_error(), true); - BOOST_CHECK_EQUAL (b->running(), false); } BOOST_AUTO_TEST_CASE (compact_image_test)