summaryrefslogtreecommitdiff
path: root/test/content_test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-02-21 20:28:59 +0100
committerCarl Hetherington <cth@carlh.net>2021-02-23 20:09:39 +0100
commit41262015eb2bb1fc3da8585883420975de381a65 (patch)
treef16a0bea110f57a820c7c45321775b3b7a9a4122 /test/content_test.cc
parentd756e14c0bb2c2264248b26d59c363b6bc33a7fc (diff)
Verify a whole bunch of DCPs made by unit tests.
Diffstat (limited to 'test/content_test.cc')
-rw-r--r--test/content_test.cc78
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 });
}