diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-02-21 20:28:59 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-02-23 20:09:39 +0100 |
| commit | 41262015eb2bb1fc3da8585883420975de381a65 (patch) | |
| tree | f16a0bea110f57a820c7c45321775b3b7a9a4122 /test/content_test.cc | |
| parent | d756e14c0bb2c2264248b26d59c363b6bc33a7fc (diff) | |
Verify a whole bunch of DCPs made by unit tests.
Diffstat (limited to 'test/content_test.cc')
| -rw-r--r-- | test/content_test.cc | 78 |
1 files changed, 36 insertions, 42 deletions
diff --git a/test/content_test.cc b/test/content_test.cc index cf34251f5..ef3b710e7 100644 --- a/test/content_test.cc +++ b/test/content_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017-2018 Carl Hetherington <cth@carlh.net> + Copyright (C) 2017-2021 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -18,11 +18,13 @@ */ + /** @file test/content_test.cc * @brief Tests which expose problems with certain pieces of content. * @ingroup completedcp */ + #include "lib/audio_content.h" #include "lib/film.h" #include "lib/dcp_content_type.h" @@ -32,63 +34,58 @@ #include "test.h" #include <boost/test/unit_test.hpp> + using std::shared_ptr; using namespace dcpomatic; + /** There has been garbled audio with this piece of content */ BOOST_AUTO_TEST_CASE (content_test1) { - shared_ptr<Film> film = new_test_film ("content_test1"); + auto film = new_test_film ("content_test1"); film->set_dcp_content_type (DCPContentType::from_isdcf_name ("FTR")); film->set_name ("content_test1"); film->set_container (Ratio::from_id ("185")); - shared_ptr<Content> content = content_factory(TestPaths::private_data() / "demo_sound_bug.mkv").front (); + auto content = content_factory(TestPaths::private_data() / "demo_sound_bug.mkv").front (); film->examine_and_add_content (content); BOOST_REQUIRE (!wait_for_jobs ()); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs ()); + make_and_verify_dcp ( + film, + { dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE, dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE } + ); boost::filesystem::path check; - for ( - boost::filesystem::directory_iterator i = boost::filesystem::directory_iterator("build/test/content_test1/" + film->dcp_name()); - i != boost::filesystem::directory_iterator(); - ++i) { - - if (i->path().leaf().string().substr(0, 4) == "pcm_") { - check = *i; + for (auto i: boost::filesystem::directory_iterator("build/test/content_test1/" + film->dcp_name())) { + if (i.path().leaf().string().substr(0, 4) == "pcm_") { + check = i; } } check_mxf_audio_file (TestPaths::private_data() / "content_test1.mxf", check); } + /** Taking some 23.976fps content and trimming 0.5s (in content time) from the start * has failed in the past; ensure that this is fixed. */ BOOST_AUTO_TEST_CASE (content_test2) { - shared_ptr<Film> film = new_test_film2 ("content_test2"); - - shared_ptr<Content> content = content_factory("test/data/red_23976.mp4").front(); - film->examine_and_add_content (content); - BOOST_REQUIRE (!wait_for_jobs ()); + auto content = content_factory("test/data/red_23976.mp4").front(); + auto film = new_test_film2 ("content_test2", {content}); content->set_trim_start(ContentTime::from_seconds(0.5)); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs ()); + make_and_verify_dcp (film); } + /** Check that position and start trim of video content is forced to a frame boundary */ BOOST_AUTO_TEST_CASE (content_test3) { - shared_ptr<Film> film = new_test_film2 ("content_test3"); + auto content = content_factory("test/data/red_24.mp4").front(); + auto film = new_test_film2 ("content_test3", {content}); film->set_sequence (false); - shared_ptr<Content> content = content_factory("test/data/red_24.mp4").front(); - film->examine_and_add_content (content); - BOOST_REQUIRE (!wait_for_jobs ()); - /* Trim */ /* 12 frames */ @@ -128,9 +125,9 @@ BOOST_AUTO_TEST_CASE (content_test3) /** Content containing video will have its length rounded to the nearest video frame */ BOOST_AUTO_TEST_CASE (content_test4) { - shared_ptr<Film> film = new_test_film2 ("content_test4"); + auto film = new_test_film2 ("content_test4"); - shared_ptr<Content> video = content_factory("test/data/count300bd24.m2ts").front(); + auto video = content_factory("test/data/count300bd24.m2ts").front(); film->examine_and_add_content (video); BOOST_REQUIRE (!wait_for_jobs()); @@ -142,13 +139,11 @@ BOOST_AUTO_TEST_CASE (content_test4) /** Content containing no video will not have its length rounded to the nearest video frame */ BOOST_AUTO_TEST_CASE (content_test5) { - shared_ptr<Film> film = new_test_film2 ("content_test5"); - - shared_ptr<Content> audio = content_factory("test/data/sine_16_48_220_10.wav").front(); - film->examine_and_add_content (audio); - BOOST_REQUIRE (!wait_for_jobs()); + auto audio = content_factory("test/data/sine_16_48_220_10.wav").front(); + auto film = new_test_film2 ("content_test5", {audio}); audio->set_trim_end (dcpomatic::ContentTime(3000)); + BOOST_CHECK (audio->length_after_trim(film) == DCPTime(957000)); } @@ -158,11 +153,13 @@ BOOST_AUTO_TEST_CASE (content_test6) { Cleanup cl; - auto film = new_test_film2 ("content_test6", &cl); - film->examine_and_add_content (content_factory(TestPaths::private_data() / "fha.mkv").front()); - BOOST_REQUIRE (!wait_for_jobs()); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs()); + auto film = new_test_film2 ( + "content_test6", + { content_factory(TestPaths::private_data() / "fha.mkv").front() }, + &cl + ); + + make_and_verify_dcp (film); check_dcp (TestPaths::private_data() / "fha", film); cl.run (); @@ -172,11 +169,8 @@ BOOST_AUTO_TEST_CASE (content_test6) /** Reel length error when making the test for #1833 */ BOOST_AUTO_TEST_CASE (content_test7) { - shared_ptr<Film> film = new_test_film2 ("content_test7"); - shared_ptr<Content> content = content_factory(TestPaths::private_data() / "clapperboard.mp4").front(); - film->examine_and_add_content (content); - BOOST_REQUIRE (!wait_for_jobs()); + auto content = content_factory(TestPaths::private_data() / "clapperboard.mp4").front(); + auto film = new_test_film2 ("content_test7", {content}); content->audio->set_delay (-1000); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs()); + make_and_verify_dcp (film, { dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_2K }); } |
