diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-01-08 00:43:10 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-04-15 10:59:34 +0200 |
| commit | e274f96b55a535698224c0331025c67d31aa8f27 (patch) | |
| tree | 7295c8f207b8c3a7be16760f0d01a7ac87963680 | |
| parent | 0d31c86d6dfad9f437f5613d41cace9cc5928474 (diff) | |
Add OK note when <ContentKind> is valid.
| -rw-r--r-- | src/verify.cc | 4 | ||||
| -rw-r--r-- | src/verify.h | 1 | ||||
| -rw-r--r-- | test/verify_test.cc | 113 |
3 files changed, 118 insertions, 0 deletions
diff --git a/src/verify.cc b/src/verify.cc index 17b751e6..e5959f23 100644 --- a/src/verify.cc +++ b/src/verify.cc @@ -1569,6 +1569,8 @@ verify_cpl(Context& context, shared_ptr<const CPL> cpl) auto iter = std::find_if(all.begin(), all.end(), [name](ContentKind const& k) { return !k.scope() && k.name() == name; }); if (iter == all.end()) { context.error(VerificationNote::Code::INVALID_CONTENT_KIND, cpl->content_kind().name()); + } else { + context.ok(VerificationNote::Code::VALID_CONTENT_KIND, cpl->content_kind().name()); } } @@ -2155,6 +2157,8 @@ dcp::note_to_string (VerificationNote note) return "There is an <Duration> node inside a <MainMarkers>."; case VerificationNote::Code::INVALID_CONTENT_KIND: return String::compose("<ContentKind> has an invalid value %1.", note.note().get()); + case VerificationNote::Code::VALID_CONTENT_KIND: + return String::compose("Valid <ContentKind> %1.", note.note().get()); case VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA: return String::compose("<MainPictureActiveaArea> has an invalid value: %1", note.note().get()); case VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA: diff --git a/src/verify.h b/src/verify.h index df515d19..071a3e0c 100644 --- a/src/verify.h +++ b/src/verify.h @@ -420,6 +420,7 @@ public: UNEXPECTED_DURATION, /** A <ContentKind> has been specified with either no scope or the SMPTE 429-7 scope, but which is not one of those allowed */ INVALID_CONTENT_KIND, + VALID_CONTENT_KIND, /** Either the width or height of a <MainPictureActiveArea> in a CPL is either not an even number, or bigger than the corresponding asset dimension. * note contains details of what is wrong * file contains the CPL filename diff --git a/test/verify_test.cc b/test/verify_test.cc index 12cc953b..baffebc6 100644 --- a/test/verify_test.cc +++ b/test/verify_test.cc @@ -478,6 +478,7 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_picture_sound_hash) string{"1998x1080"}, canonical(cpl->file().get()) ).set_cpl_id(dcp_test1_cpl_id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -516,6 +517,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_picture_sound_hashes) string{"1998x1080"}, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -617,6 +619,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_picture_frame_rate) canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -650,6 +653,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_asset) string{"1998x1080"}, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_ASSET, canonical(dir) / "video.mxf" } }); @@ -676,6 +680,7 @@ BOOST_AUTO_TEST_CASE (verify_empty_asset_path) canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::EMPTY_ASSET_PATH } }; @@ -705,6 +710,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_standard) canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_STANDARD }, dcp::VerificationNote( @@ -758,6 +764,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_id) canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), dcp::VerificationNote( @@ -792,6 +799,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_issue_date) canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl_path) @@ -829,6 +837,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_pkl_id) canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), dcp::VerificationNote( @@ -865,6 +874,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_asset_map_id) canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), dcp::VerificationNote( @@ -931,6 +941,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_standard) vector<dcp::VerificationNote> expected = { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"feature"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl), @@ -962,6 +973,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_duration) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"feature"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, @@ -1035,6 +1047,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_picture_frame_size_in_bytes) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl), }; @@ -1088,6 +1101,7 @@ BOOST_AUTO_TEST_CASE (verify_nearly_invalid_picture_frame_size_in_bytes) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), }; @@ -1136,6 +1150,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_picture_frame_size_in_bytes) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl), dcp::VerificationNote(dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id()) @@ -1159,6 +1174,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_interop_subtitles) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_FONT, string{"theFontId"} @@ -1183,6 +1199,7 @@ BOOST_AUTO_TEST_CASE(verify_catch_missing_font_file_with_interop_ccap) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_FONT, string{"theFontId"} @@ -1214,6 +1231,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_interop_subtitles) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, string("no declaration found for element 'Foo'"), path(), 5 @@ -1248,6 +1266,7 @@ BOOST_AUTO_TEST_CASE(verify_interop_subtitle_asset_with_no_subtitles) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_SUBTITLE, asset->id(), boost::filesystem::canonical(asset->file().get()) @@ -1276,6 +1295,7 @@ BOOST_AUTO_TEST_CASE(verify_interop_subtitle_asset_with_single_space_subtitle) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_FONT, string{"Arial"} @@ -1301,6 +1321,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_smpte_subtitles) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() @@ -1334,6 +1355,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_smpte_subtitles) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, string("no declaration found for element 'Foo'"), path(), 2 @@ -1377,6 +1399,7 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::EMPTY_TEXT @@ -1417,6 +1440,7 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles_with_child_nodes) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_FONT, string{"font0"} @@ -1442,6 +1466,7 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles_with_empty_child_nodes ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_SUBTITLE, asset->id(), boost::filesystem::canonical(asset->file().get()) ).set_cpl_id(cpl->id()), @@ -1482,6 +1507,7 @@ BOOST_AUTO_TEST_CASE (verify_external_asset) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::EXTERNAL_ASSET, picture->asset()->id() }, dcp::VerificationNote( @@ -1566,6 +1592,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_bad_tag) string{"1440x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl), dcp::VerificationNote( @@ -1644,6 +1671,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language1) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_LANGUAGE, string("badlang") @@ -1678,6 +1706,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language2) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_LANGUAGE, string("badlang") @@ -1738,6 +1767,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language3) string{"1440x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl), dcp::VerificationNote( @@ -1823,6 +1853,7 @@ check_picture_size_ok (int width, int height, int frame_rate, bool three_d) std::vector<dcp::VerificationNote> expected = { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -1850,6 +1881,7 @@ check_picture_size_bad_frame_size (int width, int height, int frame_rate, bool t std::vector<dcp::VerificationNote> expected = { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -1880,6 +1912,7 @@ check_picture_size_bad_2k_frame_rate (int width, int height, int frame_rate, boo std::vector<dcp::VerificationNote> expected = { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -1914,6 +1947,7 @@ check_picture_size_bad_4k_frame_rate (int width, int height, int frame_rate, boo std::vector<dcp::VerificationNote> expected = { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -1983,6 +2017,7 @@ BOOST_AUTO_TEST_CASE (verify_picture_size) std::vector<dcp::VerificationNote> expected = { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -2054,6 +2089,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_xml_size_in_bytes) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") @@ -2109,6 +2145,7 @@ verify_timed_text_asset_too_large (string name) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_TIMED_TEXT_SIZE_IN_BYTES, string("121698284"), canonical(dir / "subs.mxf") @@ -2191,6 +2228,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_language) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), @@ -2248,6 +2286,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_languages) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl), @@ -2306,6 +2345,7 @@ BOOST_AUTO_TEST_CASE (verify_multiple_closed_caption_languages_allowed) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl), @@ -2374,6 +2414,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_start_time) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -2434,6 +2475,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_start_time) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( dcp::VerificationNote::Type::OK, @@ -2544,6 +2586,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_first_text_time) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()), @@ -2568,6 +2611,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_first_text_time) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -2624,6 +2668,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_first_text_time_on_second_reel) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -2648,6 +2693,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_spacing) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_SPACING ).set_cpl_id(cpl->id()), @@ -2676,6 +2722,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_spacing) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -2695,6 +2742,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_duration) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_DURATION ).set_cpl_id(cpl->id()), @@ -2718,6 +2766,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_duration) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -2746,6 +2795,7 @@ BOOST_AUTO_TEST_CASE (verify_subtitle_overlapping_reel_boundary) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION , "72 96", boost::filesystem::canonical(asset->file().get()) ).set_cpl_id(cpl->id()), @@ -2782,6 +2832,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_count1) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_COUNT ).set_cpl_id(cpl->id()), @@ -2811,6 +2862,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_line_count1) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -2837,6 +2889,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_count2) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_COUNT ).set_cpl_id(cpl->id()), @@ -2867,6 +2920,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_line_count2) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -2890,6 +2944,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_length1) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::NEARLY_INVALID_SUBTITLE_LINE_LENGTH ).set_cpl_id(cpl->id()), @@ -2916,6 +2971,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_length2) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_LENGTH ).set_cpl_id(cpl->id()), @@ -2945,6 +3001,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count1) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_COUNT ).set_cpl_id(cpl->id()), @@ -2974,6 +3031,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count2) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -3000,6 +3058,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_line_count3) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_COUNT ).set_cpl_id(cpl->id()), @@ -3030,6 +3089,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count4) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -3054,6 +3114,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_length) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -3077,6 +3138,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_line_length) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_LENGTH ).set_cpl_id(cpl->id()), @@ -3105,6 +3167,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_valign1) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -3130,6 +3193,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_valign2) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CLOSED_CAPTION_VALIGN ).set_cpl_id(cpl->id()), @@ -3159,6 +3223,7 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering1) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -3185,6 +3250,7 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering2) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -3204,6 +3270,7 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering3) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INCORRECT_CLOSED_CAPTION_ORDERING ).set_cpl_id(cpl->id()), @@ -3227,6 +3294,7 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering4) ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) @@ -3262,6 +3330,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_sound_frame_rate) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl), @@ -3305,6 +3374,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_annotation_text) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), dcp::VerificationNote( @@ -3340,6 +3410,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_cpl_annotation_text) { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -3387,6 +3458,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_asset_duration) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), @@ -3469,6 +3541,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -3494,6 +3567,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -3515,6 +3589,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), @@ -3595,6 +3670,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl), @@ -3619,6 +3695,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl), @@ -3640,6 +3717,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl), @@ -3697,6 +3775,7 @@ verify_text_entry_point_check (path dir, dcp::VerificationNote::Code code, boost ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, code, subs->id() ).set_cpl_id(cpl->id()), @@ -3777,6 +3856,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_hash) cpl->file().get() ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), @@ -3824,8 +3904,10 @@ verify_markers_test ( cpl->file().get() ).set_cpl_id(cpl->id()) ); + test_notes.push_back(ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"feature"}, cpl)); test_notes.push_back(ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl)); test_notes.push_back(ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl)); + check_verify_result({dir}, {}, test_notes); } @@ -3936,6 +4018,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_metadata_version_number) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -3976,6 +4059,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata1) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), @@ -4016,6 +4100,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata2) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), @@ -4057,6 +4142,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata3) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, string("no declaration found for element 'meta:NameX'"), cpl->file().get(), 70 ).set_cpl_id(cpl->id()), @@ -4099,6 +4185,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata1) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), @@ -4139,6 +4226,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata2) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), @@ -4180,6 +4268,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata6) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, string("no declaration found for element 'meta:ValueX'"), cpl->file().get(), 74 ).set_cpl_id(cpl->id()), @@ -4223,6 +4312,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata7) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), @@ -4264,6 +4354,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata8) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, string("no declaration found for element 'meta:PropertyX'"), cpl->file().get(), 72 ).set_cpl_id(cpl->id()), @@ -4307,6 +4398,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata9) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, string("no declaration found for element 'meta:PropertyListX'"), cpl->file().get(), 71 ).set_cpl_id(cpl->id()), @@ -4348,6 +4440,7 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_cpl_with_encrypted_content) ok(dcp::VerificationNote::Code::ALL_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"feature"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl_path) @@ -4401,6 +4494,7 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_encrypted_content) ok(dcp::VerificationNote::Code::ALL_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"feature"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), dcp::VerificationNote( @@ -4457,6 +4551,7 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_unencrypted_content) string{"1998x1080"}, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), }); @@ -4535,6 +4630,7 @@ BOOST_AUTO_TEST_CASE (verify_partially_encrypted) ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -4643,6 +4739,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_resource_id) ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION , "240 0", boost::filesystem::canonical(subs_mxf) ).set_cpl_id(cpl->id()), @@ -4721,6 +4818,7 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_timed_text_id) ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION , "240 0", boost::filesystem::canonical(subs_mxf) ).set_cpl_id(cpl->id()), @@ -4757,6 +4855,7 @@ BOOST_AUTO_TEST_CASE (verify_threed_marked_as_twod) ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), dcp::VerificationNote( dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::THREED_ASSET_MARKED_AS_TWOD, boost::filesystem::canonical(find_file(path, "j2c")) @@ -4794,6 +4893,7 @@ BOOST_AUTO_TEST_CASE (verify_unexpected_things_in_main_markers) {}, { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), dcp::VerificationNote( @@ -4923,6 +5023,7 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_1) {}, { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), @@ -4966,6 +5067,7 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_2) {}, { ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), @@ -5015,6 +5117,7 @@ BOOST_AUTO_TEST_CASE(verify_duplicate_pkl_asset_ids) string{"1998x1080"}, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_PKL, pkl.id(), canonical(find_pkl(dir)) }, @@ -5052,6 +5155,7 @@ BOOST_AUTO_TEST_CASE(verify_duplicate_assetmap_asset_ids) string{"1998x1080"}, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), dcp::VerificationNote( @@ -5141,6 +5245,7 @@ BOOST_AUTO_TEST_CASE(verify_mismatched_sound_channel_counts) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl), @@ -5202,6 +5307,7 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_sound_configuration) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl), @@ -5278,6 +5384,7 @@ BOOST_AUTO_TEST_CASE(verify_invalid_tile_part_size) ).set_cpl_id(cpl->id()), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), dcp::VerificationNote( @@ -5331,6 +5438,7 @@ BOOST_AUTO_TEST_CASE(verify_too_many_subtitle_namespaces) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"feature"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl), @@ -5376,6 +5484,7 @@ BOOST_AUTO_TEST_CASE(verify_missing_load_font_for_font) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD }, dcp::VerificationNote(dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_LOAD_FONT_FOR_FONT).set_id("theFontId").set_cpl_id(cpl->id()) }); @@ -5435,6 +5544,7 @@ BOOST_AUTO_TEST_CASE(verify_missing_load_font) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), @@ -5474,6 +5584,7 @@ BOOST_AUTO_TEST_CASE(verify_spots_wrong_asset) string{"1998x1080"}, cpl->file().get() ).set_cpl_id(cpl->id()), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), dcp::VerificationNote(dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_ASSET_MAP_ID).set_id(asset_1).set_other_id(asset_2) }); @@ -5504,6 +5615,7 @@ BOOST_AUTO_TEST_CASE(verify_cpl_content_version_label_text_empty) ok(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl), ok(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl), ok(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl), @@ -5532,6 +5644,7 @@ BOOST_AUTO_TEST_CASE(verify_encrypted_smpte_dcp) { ok(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), ok(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), + ok(dcp::VerificationNote::Code::VALID_CONTENT_KIND, string{"trailer"}, cpl), ok(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl), ok(dcp::VerificationNote::Code::ALL_ENCRYPTED, cpl), dcp::VerificationNote( |
