diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-04-06 23:56:56 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-12-15 17:15:37 +0100 |
| commit | ab6167ec04aff10df5f0e424f86d1f58517b28f1 (patch) | |
| tree | 3ea6b4bfe7a7e5d0bd7c7c673855849746686bb8 | |
| parent | a6b01e5061633285a0110c589bdb0c09b6af3636 (diff) | |
Reduce verbosity in verify_test.cc.
| -rw-r--r-- | test/verify_test.cc | 3121 |
1 files changed, 1720 insertions, 1401 deletions
diff --git a/test/verify_test.cc b/test/verify_test.cc index 4205d67b..ab54d24f 100644 --- a/test/verify_test.cc +++ b/test/verify_test.cc @@ -510,26 +510,26 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_picture_sound_hash) BOOST_REQUIRE (fwrite (&x, sizeof(x), 1, mod) == 1); fclose (mod); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, - canonical(cpl->file().get()) - ).set_cpl_id(dcp_test1_cpl_id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INCORRECT_PICTURE_HASH, canonical(video_path) + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(dcp_test1_cpl_id()).set_size_in_pixels({1998, 1080}), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::INCORRECT_PICTURE_HASH, canonical(video_path) ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(video_calc.old_hash()).set_calculated_hash(video_calc.new_hash()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INCORRECT_SOUND_HASH, canonical(audio_path) + VN( + VC::INCORRECT_SOUND_HASH, canonical(audio_path) ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(audio_calc.old_hash()).set_calculated_hash(audio_calc.new_hash()).set_reel_index(0) }); } @@ -550,30 +550,31 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_picture_sound_hashes) } using VN = dcp::VerificationNote; + using VC = VN::Code; check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - VN(VN::Code::NONE_ENCRYPTED).set_cpl_id(cpl->id()), - VN(VN::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(dir / dcp_test1_cpl()) + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()), cpl).set_size_in_pixels({1998, 1080}), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISMATCHED_CPL_HASHES, canonical(dir / dcp_test1_cpl()) ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash("x" + calc.old_hash()).set_calculated_hash(calc.old_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_PICTURE_HASHES, canonical(dir / "video.mxf") + VN( + VC::MISMATCHED_PICTURE_HASHES, canonical(dir / "video.mxf") ).set_cpl_id(dcp_test1_cpl_id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_SOUND_HASHES, canonical(dir / "audio.mxf") + VN( + VC::MISMATCHED_SOUND_HASHES, canonical(dir / "audio.mxf") ).set_cpl_id(dcp_test1_cpl_id()).set_reel_index(0), - VN(VN::Code::INVALID_XML, path(canonical(dir / dcp_test1_pkl()))).set_line(28).set_error("value 'x3M7YTgvFKXXMEGLkIbV4miC90FE=' is invalid Base64-encoded binary"), - VN(VN::Code::INVALID_XML, path(canonical(dir / dcp_test1_pkl()))).set_line(12).set_error("value 'xskI+5b/9LA/y6h0mcyxysJYanxI=' is invalid Base64-encoded binary"), - VN(VN::Code::INVALID_XML, path(canonical(dir / dcp_test1_pkl()))).set_line(20).set_error("value 'xvsVjRV9vhTBPUWfE/TT1o2vdQsI=' is invalid Base64-encoded binary") + VN(VC::INVALID_XML, path(canonical(dir / dcp_test1_pkl()))).set_line(28).set_error("value 'x3M7YTgvFKXXMEGLkIbV4miC90FE=' is invalid Base64-encoded binary"), + VN(VC::INVALID_XML, path(canonical(dir / dcp_test1_pkl()))).set_line(12).set_error("value 'xskI+5b/9LA/y6h0mcyxysJYanxI=' is invalid Base64-encoded binary"), + VN(VC::INVALID_XML, path(canonical(dir / dcp_test1_pkl()))).set_line(20).set_error("value 'xvsVjRV9vhTBPUWfE/TT1o2vdQsI=' is invalid Base64-encoded binary") }); } @@ -591,25 +592,29 @@ BOOST_AUTO_TEST_CASE (verify_failed_read_content_kind) auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir)); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, - canonical(cpl->file().get()) - ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(dir / dcp_test1_cpl()) + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, + canonical(cpl->file().get()), + cpl + ).set_size_in_pixels({1998, 1080}), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISMATCHED_CPL_HASHES, canonical(dir / dcp_test1_cpl()) ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_CONTENT_KIND + VN( + VC::INVALID_CONTENT_KIND ).set_cpl_id(dcp_test1_cpl_id()).set_content_kind("xtrailer") }); } @@ -649,25 +654,28 @@ BOOST_AUTO_TEST_CASE (verify_invalid_picture_frame_rate) auto const cpl_path = find_cpl(dir); auto cpl = std::make_shared<dcp::CPL>(cpl_path); + using VC = dcp::VerificationNote::Code; + std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, - canonical(cpl->file().get()) - ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_calculated_hash("7n7GQ2TbxQbmHYuAR8ml7XDOep8=").set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI="), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE - ).set_frame_rate(dcp::Fraction(99, 1)).set_cpl_id(cpl->id()).set_reel_index(0) + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::NONE_ENCRYPTED, cpl), + note( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, + canonical(cpl->file().get()), + cpl + ).set_size_in_pixels({1998, 1080}), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note( + VC::MISMATCHED_CPL_HASHES, canonical(cpl_path), cpl + ).set_calculated_hash("7n7GQ2TbxQbmHYuAR8ml7XDOep8=").set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI="), + note( + VC::INVALID_PICTURE_FRAME_RATE, cpl + ).set_frame_rate(dcp::Fraction(99, 1)).set_reel_index(0) }; check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected); @@ -681,21 +689,24 @@ BOOST_AUTO_TEST_CASE (verify_missing_asset) auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir)); + using VN = dcp::VerificationNote; + using VC = dcp::VerificationNote::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - { dcp::VerificationNote::Code::MISSING_ASSET, canonical(dir) / "video.mxf" } + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + { VC::MISSING_ASSET, canonical(dir) / "video.mxf" } }); } @@ -710,18 +721,21 @@ BOOST_AUTO_TEST_CASE (verify_empty_asset_path) auto const cpl_path = find_cpl(dir); auto cpl = std::make_shared<dcp::CPL>(cpl_path); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - { dcp::VerificationNote::Code::EMPTY_ASSET_PATH } + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + { VC::EMPTY_ASSET_PATH } }; check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected); @@ -738,42 +752,37 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_standard) auto const cpl_path = find_cpl(dir); auto cpl = std::make_shared<dcp::CPL>(cpl_path); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - { dcp::VerificationNote::Code::MISMATCHED_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_line(42).set_error("invalid character encountered"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_line(53).set_error("no declaration found for element 'Id'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_line(54).set_error("no declaration found for element 'EditRate'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_line(55).set_error("no declaration found for element 'IntrinsicDuration'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_line(149).set_error( + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + { VC::MISMATCHED_STANDARD }, + note(VC::INVALID_XML, canonical(cpl_path), cpl).set_line(42).set_error("invalid character encountered"), + note(VC::INVALID_XML, canonical(cpl_path), cpl).set_line(53).set_error("no declaration found for element 'Id'"), + note(VC::INVALID_XML, canonical(cpl_path), cpl).set_line(54).set_error("no declaration found for element 'EditRate'"), + note(VC::INVALID_XML, canonical(cpl_path), cpl).set_line(55).set_error("no declaration found for element 'IntrinsicDuration'"), + note( + VC::INVALID_XML, canonical(cpl_path), cpl + ).set_line(149).set_error( "element 'Id' is not allowed for content model '(Id,AnnotationText?,EditRate,IntrinsicDuration," "EntryPoint?,Duration?,FullContentTitleText,ReleaseTerritory?,VersionNumber?,Chain?,Distributor?," "Facility?,AlternateContentVersionList?,Luminance?,MainSoundConfiguration,MainSoundSampleRate," "MainPictureStoredArea,MainPictureActiveArea,MainSubtitleLanguageList?,ExtensionMetadataList?,)'" ), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI=").set_calculated_hash("FZ9E7L/pOuJ6aZfbiaANTv8BFOo=") + note( + VC::MISMATCHED_CPL_HASHES, canonical(cpl_path), cpl + ).set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI=").set_calculated_hash("FZ9E7L/pOuJ6aZfbiaANTv8BFOo=") }; check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected); @@ -791,22 +800,26 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_id) auto const cpl_path = find_cpl(dir); auto cpl = std::make_shared<dcp::CPL>(cpl_path); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, - canonical(cpl->file().get()) - ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_line(3).set_error( + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::NONE_ENCRYPTED, cpl), + note( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, + canonical(cpl->file().get()), + cpl + ).set_size_in_pixels({1998, 1080}), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_CPL_HASHES, cpl), + note( + VC::INVALID_XML, canonical(cpl_path), cpl + ).set_line(3).set_error( "value 'urn:uuid:6affb8ee-0020-4dff-a53c-17652f6358a' does not match regular expression " "facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'" ) @@ -826,24 +839,28 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_issue_date) auto const cpl_path = find_cpl(dir); auto cpl = std::make_shared<dcp::CPL>(cpl_path); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, - canonical(cpl->file().get()) - ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI=").set_calculated_hash("sz3BeIugJ567q3HMnA62JeRw4TE="), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl_path) - ).set_cpl_id(cpl->id()).set_line(5).set_error("invalid character encountered") + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::NONE_ENCRYPTED, cpl), + note( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, + canonical(cpl->file().get()), + cpl + ).set_size_in_pixels({1998, 1080}), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note( + VC::MISMATCHED_CPL_HASHES, canonical(cpl_path), cpl + ).set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI=").set_calculated_hash("sz3BeIugJ567q3HMnA62JeRw4TE="), + note( + VC::INVALID_XML, canonical(cpl_path), cpl + ).set_line(5).set_error("invalid character encountered") }; check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected); @@ -861,21 +878,24 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_pkl_id) auto const cpl_path = find_cpl(dir); auto cpl = std::make_shared<dcp::CPL>(cpl_path); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(pkl_path) + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::INVALID_XML, canonical(pkl_path) ).set_line(3).set_error( "value 'urn:uuid:x199d58b-5ef8-4d49-b270-07e590ccb280' does not match regular " "expression facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'" @@ -888,6 +908,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_pkl_id) BOOST_AUTO_TEST_CASE (verify_invalid_xml_asset_map_id) { + using VN = dcp::VerificationNote; + auto const suffix = "invalid_xml_asset_map_id"; replace("invalid_xml_asset_map_id", &asset_map, "<Id>urn:uuid:" + dcp_test1_asset_map_id.substr(0, 3), "<Id>urn:uuid:x" + dcp_test1_asset_map_id.substr(1, 2)); @@ -897,21 +919,24 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_asset_map_id) auto const asset_map_path = find_asset_map(dir); auto cpl = std::make_shared<dcp::CPL>(cpl_path); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(asset_map_path) + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::INVALID_XML, canonical(asset_map_path) ).set_line(3).set_error( "value 'urn:uuid:x17b3de4-6dda-408d-b19b-6711354b0bc3' does not match regular " "expression facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'" @@ -971,15 +996,18 @@ BOOST_AUTO_TEST_CASE (verify_invalid_standard) ++st; BOOST_REQUIRE (st == stages.end()); - vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl).set_reel_index(0) + using VN = dcp::VerificationNote; + using VC = VN::Code; + + vector<VN> expected = { + note(VC::NONE_ENCRYPTED, cpl), + { VC::INVALID_STANDARD }, + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl).set_reel_index(0) }; for (int j = 0; j < 24; ++j) { @@ -1003,27 +1031,30 @@ BOOST_AUTO_TEST_CASE (verify_invalid_duration) BOOST_REQUIRE(dcp.cpls().size() == 1); auto cpl = dcp.cpls()[0]; - vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl).set_reel_index(0), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_DURATION + using VN = dcp::VerificationNote; + using VC = VN::Code; + + vector<VN> expected = { + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl).set_reel_index(0), + { VC::INVALID_STANDARD }, + VN( + VC::INVALID_DURATION ).set_asset_id("d7576dcb-a361-4139-96b8-267f5f8d7f91").set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_INTRINSIC_DURATION + VN( + VC::INVALID_INTRINSIC_DURATION ).set_asset_id("d7576dcb-a361-4139-96b8-267f5f8d7f91").set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_DURATION + VN( + VC::INVALID_DURATION ).set_asset_id("a2a87f5d-b749-4a7e-8d0c-9d48a4abf626").set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_INTRINSIC_DURATION + VN( + VC::INVALID_INTRINSIC_DURATION ).set_asset_id("a2a87f5d-b749-4a7e-8d0c-9d48a4abf626").set_cpl_id(cpl->id()).set_reel_index(0), - note(dcp::VerificationNote::Code::EMPTY_CONTENT_VERSION_LABEL_TEXT, cpl->file().get(), cpl) + note(VC::EMPTY_CONTENT_VERSION_LABEL_TEXT, cpl->file().get(), cpl) }; for (int i = 0; i < 23; ++i) { @@ -1073,35 +1104,38 @@ BOOST_AUTO_TEST_CASE (verify_invalid_picture_frame_size_in_bytes) prepare_directory (dir); auto cpl = dcp_from_frame (oversized_frame, dir); - vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), + using VN = dcp::VerificationNote; + using VC = VN::Code; + + vector<VN> expected = { + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), }; for (auto i = 0; i < 24; ++i) { expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_JPEG2000_CODESTREAM + VN( + VC::INVALID_JPEG2000_CODESTREAM ).set_frame(i).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0).set_error("missing marker start byte") ); } for (auto i = 0; i < 24; ++i) { expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(dir / "pic.mxf") + VN( + VC::INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(dir / "pic.mxf") ).set_frame(i).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0) ); } expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) ); @@ -1127,35 +1161,38 @@ BOOST_AUTO_TEST_CASE (verify_nearly_invalid_picture_frame_size_in_bytes) prepare_directory (dir); auto cpl = dcp_from_frame (oversized_frame, dir); - vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + using VN = dcp::VerificationNote; + using VC = VN::Code; + + vector<VN> expected = { + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), }; for (auto i = 0; i < 24; ++i) { expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_JPEG2000_CODESTREAM + VN( + VC::INVALID_JPEG2000_CODESTREAM ).set_frame(i).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0).set_error("missing marker start byte") ); } for (auto i = 0; i < 24; ++i) { expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::NEARLY_INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(dir / "pic.mxf") + VN( + VC::NEARLY_INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(dir / "pic.mxf") ).set_frame(i).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0) ); } expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) ); @@ -1174,19 +1211,21 @@ BOOST_AUTO_TEST_CASE (verify_valid_picture_frame_size_in_bytes) prepare_directory (dir); auto cpl = dcp_from_frame (frame, dir); + using VC = dcp::VerificationNote::Code; + check_verify_result( { dir }, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -1200,18 +1239,21 @@ BOOST_AUTO_TEST_CASE (verify_valid_interop_subtitles) auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 16 * 24, 0); auto cpl = write_dcp_with_single_asset(dir, reel_asset, dcp::Standard::INTEROP); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FONT + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + { VC::INVALID_STANDARD }, + VN( + VC::MISSING_FONT ).set_cpl_id(cpl->id()).set_reel_index(0).set_load_font_id("theFontId") }); } @@ -1226,18 +1268,21 @@ BOOST_AUTO_TEST_CASE(verify_catch_missing_font_file_with_interop_ccap) auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::CLOSED_CAPTION, asset, dcp::Fraction(24, 1), 16 * 24, 0); auto cpl = write_dcp_with_single_asset(dir, reel_asset, dcp::Standard::INTEROP); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FONT + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + { VC::INVALID_STANDARD }, + VN( + VC::MISSING_FONT ).set_cpl_id(cpl->id()).set_reel_index(0).set_load_font_id("theFontId") }); } @@ -1259,25 +1304,28 @@ BOOST_AUTO_TEST_CASE (verify_invalid_interop_subtitles) e.replace ("</ReelNumber>", "</ReelNumber><Foo></Foo>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, path() + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + { VC::INVALID_STANDARD }, + VN( + VC::INVALID_XML, path() ).set_cpl_id(cpl->id()).set_reel_index(0).set_line(5).set_error("no declaration found for element 'Foo'"), - dcp::VerificationNote(dcp::VerificationNote::Code::INVALID_XML, path() + VN(VC::INVALID_XML, path() ).set_cpl_id(cpl->id()).set_reel_index(0).set_line(29).set_error( "element 'Foo' is not allowed for content model '(SubtitleID,MovieTitle,ReelNumber,Language,LoadFont*,Font*,Subtitle*)'" ), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FONT + VN( + VC::MISSING_FONT ).set_cpl_id(cpl->id()).set_reel_index(0).set_load_font_id("theFontId") }); } @@ -1292,21 +1340,24 @@ BOOST_AUTO_TEST_CASE(verify_interop_subtitle_asset_with_no_subtitles) auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 16 * 24, 0); auto cpl = write_dcp_with_single_asset(dir, reel_asset, dcp::Standard::INTEROP); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE, boost::filesystem::canonical(asset->file().get()) + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + { VC::INVALID_STANDARD }, + VN( + VC::MISSING_SUBTITLE, boost::filesystem::canonical(asset->file().get()) ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FONT + VN( + VC::MISSING_FONT ).set_cpl_id(cpl->id()).set_reel_index(0).set_load_font_id("theFontId") }); @@ -1322,18 +1373,21 @@ BOOST_AUTO_TEST_CASE(verify_interop_subtitle_asset_with_single_space_subtitle) auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 16 * 24, 0); auto cpl = write_dcp_with_single_asset(dir, reel_asset, dcp::Standard::INTEROP); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FONT + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + { VC::INVALID_STANDARD }, + VN( + VC::MISSING_FONT ).set_cpl_id(cpl->id()).set_reel_index(0).set_load_font_id("Arial") }); @@ -1349,24 +1403,27 @@ BOOST_AUTO_TEST_CASE (verify_valid_smpte_subtitles) auto reel_asset = make_shared<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 6046, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE + VN( + VC::INVALID_SUBTITLE_ISSUE_DATE ).set_cpl_id(cpl->id()).set_reel_index(0).set_issue_date("2021-04-14T13:19:14.000+02:00"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT + VN( + VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT ).set_asset_id(asset->id()).set_cpl_id(cpl->id()).set_reel_index(0), }); } @@ -1384,35 +1441,38 @@ BOOST_AUTO_TEST_CASE (verify_invalid_smpte_subtitles) auto reel_asset = make_shared<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 6046, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, path() + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN( + VC::INVALID_XML, path() ).set_cpl_id(cpl->id()).set_reel_index(0).set_line(2).set_error("no declaration found for element 'Foo'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, path() + VN( + VC::INVALID_XML, path() ).set_cpl_id(cpl->id()).set_reel_index(0).set_line(2).set_error( "element 'Foo' is not allowed for content model '(Id,ContentTitleText,AnnotationText?,IssueDate,ReelNumber?,Language?,EditRate,TimeCodeRate,StartTime?,DisplayType?,LoadFont*,SubtitleList)'" ), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") + VN( + VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE + VN( + VC::INVALID_SUBTITLE_ISSUE_DATE ).set_cpl_id(cpl->id()).set_reel_index(0).set_issue_date("2020-05-09T00:29:21.000+02:00"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT + VN( + VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT ).set_asset_id(asset->id()).set_cpl_id(cpl->id()).set_reel_index(0) }); } @@ -1427,33 +1487,36 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles) auto reel_asset = make_shared<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 192, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - dcp::VerificationNote( - dcp::VerificationNote::Code::EMPTY_TEXT + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN( + VC::EMPTY_TEXT ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + VN( + VC::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf") + VN( + VC::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE + VN( + VC::INVALID_SUBTITLE_ISSUE_DATE ).set_cpl_id(cpl->id()).set_reel_index(0).set_issue_date("2021-08-09T18:34:46.000+02:00"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT + VN( + VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT ).set_asset_id(asset->id()).set_cpl_id(cpl->id()).set_reel_index(0) }); } @@ -1469,18 +1532,21 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles_with_child_nodes) auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 192, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset, dcp::Standard::INTEROP); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FONT + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + { VC::INVALID_STANDARD }, + VN( + VC::MISSING_FONT ).set_cpl_id(cpl->id()).set_reel_index(0).set_load_font_id("font0") }); } @@ -1496,24 +1562,27 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles_with_empty_child_nodes auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 192, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset, dcp::Standard::INTEROP); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE, boost::filesystem::canonical(asset->file().get()) + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISSING_SUBTITLE, boost::filesystem::canonical(asset->file().get()) ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote( - dcp::VerificationNote::Code::EMPTY_TEXT + { VC::INVALID_STANDARD }, + VN( + VC::EMPTY_TEXT ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FONT + VN( + VC::MISSING_FONT ).set_cpl_id(cpl->id()).set_reel_index(0).set_load_font_id("font0") }); } @@ -1539,20 +1608,21 @@ BOOST_AUTO_TEST_CASE (verify_external_asset) auto cpl = write_dcp_with_single_asset (vf_dir, picture); using VN = dcp::VerificationNote; + using VC = VN::Code; check_verify_result ( { vf_dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - VN(VN::Code::EXTERNAL_ASSET).set_asset_id(picture->asset()->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN(VC::EXTERNAL_ASSET).set_asset_id(picture->asset()->id()), + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -1620,29 +1690,32 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_bad_tag) e.replace ("MainSound", "MainSoundX"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1440, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl->file().get()) + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl).set_reel_index(0), + VN( + VC::INVALID_XML, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_line(50).set_error("no declaration found for element 'meta:MainSoundXConfiguration'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl->file().get()) + VN( + VC::INVALID_XML, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_line(51).set_error("no declaration found for element 'meta:MainSoundXSampleRate'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, canonical(cpl->file().get()) + VN( + VC::INVALID_XML, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_line(71).set_error( "element 'meta:MainSoundXConfiguration' is not allowed for content model " "'(Id,AnnotationText?,EditRate,IntrinsicDuration,EntryPoint?,Duration?," @@ -1651,8 +1724,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_bad_tag) "MainSoundSampleRate,MainPictureStoredArea,MainPictureActiveArea,MainSubtitleLanguageList?," "ExtensionMetadataList?,)'" ), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl->file().get()) + VN( + VC::MISMATCHED_CPL_HASHES, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()) }); } @@ -1684,12 +1757,13 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_missing_tag) } using VN = dcp::VerificationNote; + using VC = VN::Code; check_verify_result ( { dir }, {}, { - VN(VN::Code::FAILED_READ).set_error("missing XML tag Width in MainPictureStoredArea") + VN(VC::FAILED_READ).set_error("missing XML tag Width in MainPictureStoredArea") }); } @@ -1706,24 +1780,27 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language1) reel_asset->_language = "badlang"; auto cpl = write_dcp_with_single_asset (dir, reel_asset); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_reel_index(0).set_language("badlang"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_reel_index(0).set_language("wrong-andbad"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -1742,24 +1819,27 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language2) reel_asset->_language = "badlang"; auto cpl = write_dcp_with_single_asset (dir, reel_asset); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_reel_index(0).set_language("badlang"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_reel_index(0).set_language("wrong-andbad"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -1797,33 +1877,36 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language3) dcp->set_annotation_text("hello"); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1440, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_language("this-is-wrong"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_language("andso-is-this"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_language("fred-jim"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_LANGUAGE + VN( + VC::INVALID_LANGUAGE ).set_cpl_id(cpl->id()).set_reel_index(0).set_language("frobozz") }); } @@ -1894,19 +1977,22 @@ check_picture_size_ok (int width, int height, int frame_rate, bool three_d) boost::filesystem::path dir; std::tie(notes, cpl, dir) = check_picture_size(width, height, frame_rate, three_d); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({width, height}), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0) + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0) }; check_verify_result(notes, expected); } @@ -1921,21 +2007,24 @@ check_picture_size_bad_frame_size (int width, int height, int frame_rate, bool t boost::filesystem::path dir; std::tie(notes, cpl, dir) = check_picture_size(width, height, frame_rate, three_d); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({width, height}), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_JPEG2000_PICTURE_SIZE_IN_PIXELS, canonical(dir / "video.mxf") + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::INVALID_JPEG2000_PICTURE_SIZE_IN_PIXELS, canonical(dir / "video.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0).set_size_in_pixels(dcp::Size(width, height)) }; check_verify_result(notes, expected); @@ -1980,18 +2069,21 @@ check_picture_size_bad_4k_frame_rate (int width, int height, int frame_rate, boo boost::filesystem::path dir; std::tie(notes, cpl, dir) = check_picture_size(width, height, frame_rate, three_d); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get(), cpl).set_size_in_pixels({width, height}), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_4K, canonical(dir / "video.mxf") + using VN = dcp::VerificationNote; + using VC = VN::Code; + + std::vector<VN> expected = { + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get(), cpl).set_size_in_pixels({width, height}), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::INVALID_PICTURE_FRAME_RATE_FOR_4K, canonical(dir / "video.mxf") ).set_frame_rate(dcp::Fraction(frame_rate, 1)).set_cpl_id(cpl->id()).set_reel_index(0) }; @@ -2040,26 +2132,29 @@ BOOST_AUTO_TEST_CASE (verify_picture_size) check_picture_size_bad_4k_frame_rate (3996, 2160, 25, false); check_picture_size_bad_4k_frame_rate (3996, 2160, 48, false); + using VN = dcp::VerificationNote; + using VC = VN::Code; + /* No 4K 3D */ - vector<dcp::VerificationNote> notes; + vector<VN> notes; shared_ptr<dcp::CPL> cpl; boost::filesystem::path dir; std::tie(notes, cpl, dir) = check_picture_size(3996, 2160, 24, true); - std::vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + std::vector<VN> expected = { + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({3996, 2160}), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - { dcp::VerificationNote::Code::INVALID_PICTURE_ASSET_RESOLUTION_FOR_3D }, + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + { VC::INVALID_PICTURE_ASSET_RESOLUTION_FOR_3D }, }; } @@ -2112,26 +2207,28 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_xml_size_in_bytes) auto reel_asset = make_shared<dcp::ReelSMPTETextAsset>(dcp::TextType::CLOSED_CAPTION, asset, dcp::Fraction(24, 1), 49148, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset); + using VC = dcp::VerificationNote::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), note( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf"), cpl + VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf"), cpl ).set_reel_index(0), note( - dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_XML_SIZE_IN_BYTES, + VC::INVALID_CLOSED_CAPTION_XML_SIZE_IN_BYTES, canonical(dir / "subs.mxf"), cpl ).set_reel_index(0).set_size_in_bytes(419371), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2164,31 +2261,34 @@ verify_timed_text_asset_too_large (string name) auto reel_asset = make_shared<T>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 240, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_TIMED_TEXT_SIZE_IN_BYTES, canonical(dir / "subs.mxf") + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN( + VC::INVALID_TIMED_TEXT_SIZE_IN_BYTES, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0).set_size_in_bytes(121698284), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_TIMED_TEXT_FONT_SIZE_IN_BYTES, + VN( + VC::INVALID_TIMED_TEXT_FONT_SIZE_IN_BYTES, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0).set_size_in_bytes(121634816), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") + VN( + VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + VN( + VC::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -2240,27 +2340,30 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_language) cpl->reels()[0]->add(reel_subs); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf") + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + VN( + VC::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()) }); } @@ -2295,32 +2398,35 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_languages) dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { path }, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(1), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(1), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf") + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(1), + VN( + VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf") + VN( + VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf") ).set_cpl_id(cpl->id()).set_reel_index(1), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_SUBTITLE_LANGUAGES + VN( + VC::MISMATCHED_SUBTITLE_LANGUAGES ).set_cpl_id(cpl->id()).set_reel_index(1) }); } @@ -2355,29 +2461,32 @@ BOOST_AUTO_TEST_CASE (verify_multiple_closed_caption_languages_allowed) dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { path }, {}, { - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(1), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf") + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(1), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(1), + VN( + VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf") + VN( + VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf") ).set_cpl_id(cpl->id()).set_reel_index(1), }); } @@ -2422,27 +2531,30 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_start_time) cpl->reels()[0]->add(reel_subs); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + VN( + VC::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()) }); } @@ -2488,26 +2600,29 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_start_time) cpl->reels().front()->add(reel_subs); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::INVALID_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl) + note(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl) }); } @@ -2596,18 +2711,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_first_text_time) auto const dir = path("build/test/verify_invalid_subtitle_first_text_time"); /* Just too early */ auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, dir, {{ 4 * 24 - 1, 5 * 24 }}); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl), }); } @@ -2618,17 +2736,20 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_first_text_time) auto const dir = path("build/test/verify_valid_subtitle_first_text_time"); /* Just late enough */ auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, dir, {{ 4 * 24, 5 * 24 }}); + + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2674,17 +2795,19 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_first_text_time_on_second_reel) dcp->set_annotation_text("hello"); dcp->write_xml(); + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2699,18 +2822,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_spacing) { 4 * 24, 5 * 24 }, { 5 * 24 + 1, 6 * 24 }, }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_SPACING, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_SUBTITLE_SPACING, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2726,17 +2852,19 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_spacing) { 5 * 24 + 16, 8 * 24 }, }); + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2767,18 +2895,21 @@ BOOST_AUTO_TEST_CASE(verify_invalid_subtitle_duration_bv21) { auto const dir = path("build/test/verify_invalid_subtitle_duration_bv21"); auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, dir, {{ 4 * 24, 4 * 24 + 1 }}); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_DURATION, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_SUBTITLE_DURATION, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2788,18 +2919,21 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_duration) auto const dir = path("build/test/verify_valid_subtitle_duration"); auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, dir, {{ 4 * 24, 4 * 24 + 17 }}); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -2818,27 +2952,31 @@ BOOST_AUTO_TEST_CASE (verify_subtitle_overlapping_reel_boundary) auto reel_asset = make_shared<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 3 * 24, 0); auto cpl = write_dcp_with_single_asset (dir, reel_asset); + + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(asset->file().get()) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(asset->file().get()) ).set_cpl_id(cpl->id()).set_reel_index(0).set_reel_duration(72).set_asset_duration(96), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + VN( + VC::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::SUBTITLE_OVERLAPS_REEL_BOUNDARY + VN( + VC::SUBTITLE_OVERLAPS_REEL_BOUNDARY ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); @@ -2857,18 +2995,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_count1) { 96, 200, 0.2, dcp::VAlign::CENTER, "four" }, { 96, 200, 0.3, dcp::VAlign::CENTER, "lines" } }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_COUNT, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_SUBTITLE_LINE_COUNT, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2885,17 +3026,19 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_line_count1) { 96, 200, 0.2, dcp::VAlign::CENTER, "four" }, }); + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2912,18 +3055,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_count2) { 150, 180, 0.2, dcp::VAlign::CENTER, "four" }, { 150, 180, 0.3, dcp::VAlign::CENTER, "lines" } }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_COUNT, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_SUBTITLE_LINE_COUNT, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2941,18 +3087,22 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_line_count2) { 190, 250, 0.3, dcp::VAlign::CENTER, "lines" } }); + + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -2967,18 +3117,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_length1) { { 96, 300, 0.0, dcp::VAlign::CENTER, "012345678901234567890123456789012345678901234567890123" } }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::NEARLY_INVALID_SUBTITLE_LINE_LENGTH, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::NEARLY_INVALID_SUBTITLE_LINE_LENGTH, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -2992,18 +3145,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_length2) { { 96, 300, 0.0, dcp::VAlign::CENTER, "012345678901234567890123456789012345678901234567890123456789012345678901234567890" } }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_LENGTH, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_SUBTITLE_LINE_LENGTH, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3020,18 +3176,21 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count1) { 96, 200, 0.2, dcp::VAlign::CENTER, "four" }, { 96, 200, 0.3, dcp::VAlign::CENTER, "lines" } }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_COUNT, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_CLOSED_CAPTION_LINE_COUNT, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3048,17 +3207,19 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count2) { 96, 200, 0.2, dcp::VAlign::CENTER, "four" }, }); + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3075,21 +3236,25 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_line_count3) { 150, 180, 0.2, dcp::VAlign::CENTER, "four" }, { 150, 180, 0.3, dcp::VAlign::CENTER, "lines" } }); + + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_COUNT + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::INVALID_CLOSED_CAPTION_LINE_COUNT ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -3108,18 +3273,21 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count4) { 190, 250, 0.3, dcp::VAlign::CENTER, "lines" } }); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -3135,18 +3303,21 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_length) { 96, 300, 0.0, dcp::VAlign::CENTER, "01234567890123456789012345678901" } }); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -3161,18 +3332,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_line_length) { { 96, 300, 0.0, dcp::VAlign::CENTER, "0123456789012345678901234567890123" } }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_LENGTH, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INVALID_CLOSED_CAPTION_LINE_LENGTH, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3188,17 +3362,20 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_valign1) { 96, 300, 0.1, dcp::VAlign::TOP, "is" }, { 96, 300, 0.2, dcp::VAlign::TOP, "fine" }, }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3214,18 +3391,21 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_valign2) { 96, 300, 0.1, dcp::VAlign::TOP, "is" }, { 96, 300, 0.2, dcp::VAlign::CENTER, "not fine" }, }); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISMATCHED_CLOSED_CAPTION_VALIGN, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISMATCHED_CLOSED_CAPTION_VALIGN, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3242,17 +3422,19 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering1) { 96, 300, 0.2, dcp::VAlign::TOP, "fine" }, }); + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3269,17 +3451,19 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering2) { 96, 300, 0.0, dcp::VAlign::BOTTOM, "also fine" }, }); + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3288,18 +3472,21 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering3) { auto const dir = path ("build/test/verify_incorrect_closed_caption_ordering3"); auto cpl = dcp_with_text_from_file<dcp::ReelSMPTETextAsset>(dcp::TextType::CLOSED_CAPTION, dir, "test/data/verify_incorrect_closed_caption_ordering3.xml"); + + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::INCORRECT_CLOSED_CAPTION_ORDERING, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::INCORRECT_CLOSED_CAPTION_ORDERING, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3309,17 +3496,19 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering4) auto const dir = path ("build/test/verify_incorrect_closed_caption_ordering4"); auto cpl = dcp_with_text_from_file<dcp::ReelSMPTETextAsset>(dcp::TextType::CLOSED_CAPTION, dir, "test/data/verify_incorrect_closed_caption_ordering4.xml"); + using VC = dcp::VerificationNote::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3345,23 +3534,26 @@ BOOST_AUTO_TEST_CASE (verify_invalid_sound_frame_rate) dcp->set_annotation_text("hello"); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SOUND_FRAME_RATE, canonical(dir / "audiofoo.mxf") + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0), + VN( + VC::INVALID_SOUND_FRAME_RATE, canonical(dir / "audiofoo.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0).set_frame_rate(dcp::Fraction(96000, 1)), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -3385,25 +3577,28 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_annotation_text) e.replace("<AnnotationText>A Test DCP</AnnotationText>", ""); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_ANNOTATION_TEXT, canonical(cpl->file().get()) + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + VN( + VC::MISSING_CPL_ANNOTATION_TEXT, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl->file().get()) + VN( + VC::MISMATCHED_CPL_HASHES, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()) }); } @@ -3426,25 +3621,28 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_cpl_annotation_text) e.replace("<AnnotationText>A Test DCP</AnnotationText>", "<AnnotationText>A Test DCP 1</AnnotationText>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_ANNOTATION_TEXT, canonical(cpl->file().get()) + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISMATCHED_CPL_ANNOTATION_TEXT, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl->file().get()) + VN( + VC::MISMATCHED_CPL_HASHES, canonical(cpl->file().get()) ).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()).set_cpl_id(cpl->id()) }); } @@ -3472,23 +3670,26 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_asset_duration) dcp->set_annotation_text("A Test DCP"); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_ASSET_DURATION + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISMATCHED_ASSET_DURATION ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, canonical(cpl->file().get()) + VN( + VC::MISSING_CPL_METADATA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()) }); } @@ -3553,6 +3754,8 @@ verify_subtitles_must_be_in_all_reels_check (path dir, bool add_to_reel1, bool a BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels) { + using VC = dcp::VerificationNote::Code; + { path dir ("build/test/missing_main_subtitle_from_some_reels"); auto cpl = verify_subtitles_must_be_in_all_reels_check (dir, true, false); @@ -3560,18 +3763,18 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels) { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MISSING_MAIN_SUBTITLE_FROM_SOME_REELS, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MISSING_MAIN_SUBTITLE_FROM_SOME_REELS, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3583,17 +3786,17 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels) {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3604,17 +3807,17 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels) {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } } @@ -3677,6 +3880,8 @@ verify_closed_captions_must_be_in_all_reels_check (path dir, int caps_in_reel1, BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts) { + using VC = dcp::VerificationNote::Code; + { path dir ("build/test/mismatched_closed_caption_asset_counts"); auto cpl = verify_closed_captions_must_be_in_all_reels_check (dir, 3, 4); @@ -3684,18 +3889,18 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts) {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MISMATCHED_CLOSED_CAPTION_ASSET_COUNTS, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MISMATCHED_CLOSED_CAPTION_ASSET_COUNTS, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3706,17 +3911,17 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts) {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } @@ -3727,17 +3932,17 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts) {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } } @@ -3777,30 +3982,34 @@ verify_text_entry_point_check(dcp::TextType type, path dir, dcp::VerificationNot dcp->set_annotation_text("A Test DCP"); dcp->write_xml(); + using VC = dcp::VerificationNote::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), note(code, cpl).set_reel_index(0).set_asset_id(subs->id()), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get(), cpl) + note(VC::MISSING_CPL_METADATA, cpl->file().get(), cpl) }); } BOOST_AUTO_TEST_CASE (verify_text_entry_point) { + using VC = dcp::VerificationNote::Code; + verify_text_entry_point_check<dcp::ReelSMPTETextAsset>( dcp::TextType::OPEN_SUBTITLE, "build/test/verify_subtitle_entry_point_must_be_present", - dcp::VerificationNote::Code::MISSING_SUBTITLE_ENTRY_POINT, + VC::MISSING_SUBTITLE_ENTRY_POINT, [](shared_ptr<dcp::ReelSMPTETextAsset> asset) { asset->unset_entry_point (); } @@ -3809,7 +4018,7 @@ BOOST_AUTO_TEST_CASE (verify_text_entry_point) verify_text_entry_point_check<dcp::ReelSMPTETextAsset>( dcp::TextType::OPEN_SUBTITLE, "build/test/verify_subtitle_entry_point_must_be_zero", - dcp::VerificationNote::Code::INCORRECT_SUBTITLE_ENTRY_POINT, + VC::INCORRECT_SUBTITLE_ENTRY_POINT, [](shared_ptr<dcp::ReelSMPTETextAsset> asset) { asset->set_entry_point (4); } @@ -3818,7 +4027,7 @@ BOOST_AUTO_TEST_CASE (verify_text_entry_point) verify_text_entry_point_check<dcp::ReelSMPTETextAsset>( dcp::TextType::CLOSED_CAPTION, "build/test/verify_closed_caption_entry_point_must_be_present", - dcp::VerificationNote::Code::MISSING_CLOSED_CAPTION_ENTRY_POINT, + VC::MISSING_CLOSED_CAPTION_ENTRY_POINT, [](shared_ptr<dcp::ReelSMPTETextAsset> asset) { asset->unset_entry_point (); } @@ -3827,7 +4036,7 @@ BOOST_AUTO_TEST_CASE (verify_text_entry_point) verify_text_entry_point_check<dcp::ReelSMPTETextAsset>( dcp::TextType::CLOSED_CAPTION, "build/test/verify_closed_caption_entry_point_must_be_zero", - dcp::VerificationNote::Code::INCORRECT_CLOSED_CAPTION_ENTRY_POINT, + VC::INCORRECT_CLOSED_CAPTION_ENTRY_POINT, [](shared_ptr<dcp::ReelSMPTETextAsset> asset) { asset->set_entry_point (9); } @@ -3857,26 +4066,29 @@ BOOST_AUTO_TEST_CASE (verify_missing_hash) e.delete_first_line_containing("<Hash>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_HASH + VN( + VC::MISSING_HASH ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset_id) }); } @@ -3904,20 +4116,23 @@ verify_markers_test ( note.set_cpl_id(cpl->id()); } - test_notes.push_back(note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0)); - test_notes.push_back(note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl)); - test_notes.push_back(note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl)); - test_notes.push_back(note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl)); + using VN = dcp::VerificationNote; + using VC = VN::Code; + + test_notes.push_back(note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0)); + test_notes.push_back(note(VC::MATCHING_CPL_HASHES, cpl)); + test_notes.push_back(note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl)); + test_notes.push_back(note(VC::NONE_ENCRYPTED, cpl)); test_notes.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}) ); - test_notes.push_back(note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer")); - test_notes.push_back(note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text)); - test_notes.push_back(note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP")); - test_notes.push_back(note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0)); + test_notes.push_back(note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer")); + test_notes.push_back(note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text)); + test_notes.push_back(note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP")); + test_notes.push_back(note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0)); check_verify_result({dir}, {}, test_notes); } @@ -3926,6 +4141,7 @@ verify_markers_test ( BOOST_AUTO_TEST_CASE (verify_markers) { using VN = dcp::VerificationNote; + using VC = VN::Code; verify_markers_test ( "build/test/verify_markers_all_correct", @@ -3946,7 +4162,7 @@ BOOST_AUTO_TEST_CASE (verify_markers) { dcp::Marker::LFOC, dcp::Time(23, 24, 24) } }, { - { dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE } + { VC::MISSING_FFEC_IN_FEATURE } }); verify_markers_test ( @@ -3957,7 +4173,7 @@ BOOST_AUTO_TEST_CASE (verify_markers) { dcp::Marker::LFOC, dcp::Time(23, 24, 24) } }, { - { dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE } + { VC::MISSING_FFMC_IN_FEATURE } }); verify_markers_test ( @@ -3968,7 +4184,7 @@ BOOST_AUTO_TEST_CASE (verify_markers) { dcp::Marker::LFOC, dcp::Time(23, 24, 24) } }, { - { dcp::VerificationNote::Code::MISSING_FFOC} + { VC::MISSING_FFOC} }); verify_markers_test ( @@ -3979,7 +4195,7 @@ BOOST_AUTO_TEST_CASE (verify_markers) { dcp::Marker::FFOC, dcp::Time(1, 24, 24) } }, { - { dcp::VerificationNote::Code::MISSING_LFOC } + { VC::MISSING_LFOC } }); verify_markers_test ( @@ -3991,7 +4207,7 @@ BOOST_AUTO_TEST_CASE (verify_markers) { dcp::Marker::LFOC, dcp::Time(23, 24, 24) } }, { - VN(VN::Code::INCORRECT_FFOC).set_marker_position(3) + VN(VC::INCORRECT_FFOC).set_marker_position(3) }); verify_markers_test ( @@ -4003,7 +4219,7 @@ BOOST_AUTO_TEST_CASE (verify_markers) { dcp::Marker::LFOC, dcp::Time(18, 24, 24) } }, { - VN(VN::Code::INCORRECT_LFOC).set_marker_position(18) + VN(VC::INCORRECT_LFOC).set_marker_position(18) }); } @@ -4017,24 +4233,27 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_metadata_version_number) cpl->unset_version_number(); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA_VERSION_NUMBER, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISSING_CPL_METADATA_VERSION_NUMBER, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -4056,26 +4275,29 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata1) e.delete_lines ("<meta:ExtensionMetadataList>", "</meta:ExtensionMetadataList>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_EXTENSION_METADATA, cpl->file().get() + VN( + VC::MISSING_EXTENSION_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -4096,26 +4318,29 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata2) e.delete_lines ("<meta:ExtensionMetadata scope=\"http://isdcf.com/ns/cplmd/app\">", "</meta:ExtensionMetadata>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_EXTENSION_METADATA, cpl->file().get() + VN( + VC::MISSING_EXTENSION_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -4137,29 +4362,32 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata3) e.replace ("n</meta:Name>", "n</meta:NameX>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(70).set_error("no declaration found for element 'meta:NameX'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(77).set_error("element 'meta:NameX' is not allowed for content model '(Name,PropertyList?,)'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), }); } @@ -4180,26 +4408,29 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata1) e.replace ("Application", "Fred"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_EXTENSION_METADATA, cpl->file().get() + VN( + VC::INVALID_EXTENSION_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()).set_error("<Name> should be 'Application'") }); } @@ -4220,26 +4451,29 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata2) e.replace ("DCP Constraints Profile", "Fred"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_EXTENSION_METADATA, cpl->file().get() + VN( + VC::INVALID_EXTENSION_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found") }); } @@ -4261,32 +4495,35 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata6) e.replace ("</meta:Value>", "</meta:ValueX>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(74).set_error("no declaration found for element 'meta:ValueX'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(75).set_error("element 'meta:ValueX' is not allowed for content model '(Name,Value)'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_EXTENSION_METADATA, cpl->file().get() + VN( + VC::INVALID_EXTENSION_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found") }); } @@ -4307,26 +4544,29 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata7) e.replace ("SMPTE-RDD-52:2020-Bv2.1", "Fred"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_EXTENSION_METADATA, cpl->file().get() + VN( + VC::INVALID_EXTENSION_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found") }); } @@ -4348,32 +4588,35 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata8) e.replace ("</meta:Property>", "</meta:PropertyX>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(72).set_error("no declaration found for element 'meta:PropertyX'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(76).set_error("element 'meta:PropertyX' is not allowed for content model '(Property+)'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_EXTENSION_METADATA, cpl->file().get() + VN( + VC::INVALID_EXTENSION_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found") }); } @@ -4395,29 +4638,32 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata9) e.replace ("</meta:PropertyList>", "</meta:PropertyListX>"); } + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(71).set_error("no declaration found for element 'meta:PropertyListX'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_XML, cpl->file().get() + VN( + VC::INVALID_XML, cpl->file().get() ).set_cpl_id(cpl->id()).set_line(77).set_error("element 'meta:PropertyListX' is not allowed for content model '(Name,PropertyList?,)'"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, cpl->file().get() + VN( + VC::MISMATCHED_CPL_HASHES, cpl->file().get() ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), }); } @@ -4444,39 +4690,42 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_cpl_with_encrypted_content) auto cpl = std::make_shared<dcp::CPL>(cpl_path); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::ALL_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(cpl_path) + note(VC::ALL_ENCRYPTED, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISMATCHED_CPL_HASHES, canonical(cpl_path) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, canonical(pkl) + VN( + VC::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, canonical(pkl) ).set_cpl_id(cpl->id()).set_pkl_id(encryption_test_pkl_id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE + VN( + VC::MISSING_FFEC_IN_FEATURE ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE + VN( + VC::MISSING_FFMC_IN_FEATURE ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FFOC + VN( + VC::MISSING_FFOC ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_LFOC + VN( + VC::MISSING_LFOC ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, canonical(cpl_path) + VN( + VC::MISSING_CPL_METADATA, canonical(cpl_path) ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::UNSIGNED_CPL_WITH_ENCRYPTED_CONTENT, canonical(cpl_path) + VN( + VC::UNSIGNED_CPL_WITH_ENCRYPTED_CONTENT, canonical(cpl_path) ).set_cpl_id(cpl->id()) }); } @@ -4499,37 +4748,40 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_encrypted_content) auto cpl = std::make_shared<dcp::CPL>(cpl_path); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::ALL_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, canonical(pkl) + note(VC::ALL_ENCRYPTED, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, canonical(pkl) ).set_cpl_id(cpl->id()).set_pkl_id(encryption_test_pkl_id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE + VN( + VC::MISSING_FFEC_IN_FEATURE ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE + VN( + VC::MISSING_FFMC_IN_FEATURE ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FFOC + VN( + VC::MISSING_FFOC ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_LFOC + VN( + VC::MISSING_LFOC ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, canonical(cpl_path) + VN( + VC::MISSING_CPL_METADATA, canonical(cpl_path) ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::UNSIGNED_PKL_WITH_ENCRYPTED_CONTENT, canonical(pkl) + VN( + VC::UNSIGNED_PKL_WITH_ENCRYPTED_CONTENT, canonical(pkl) ).set_pkl_id(encryption_test_pkl_id()) }); } @@ -4550,22 +4802,25 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_unencrypted_content) auto cpl = make_shared<dcp::CPL>(find_cpl(dir)); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir}, {}, { - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0) + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0) }); } @@ -4629,23 +4884,26 @@ BOOST_AUTO_TEST_CASE (verify_partially_encrypted) d.set_annotation_text("A Test DCP"); d.write_xml(signer); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1440, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::PARTIALLY_ENCRYPTED + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::PARTIALLY_ENCRYPTED ).set_cpl_id(cpl->id()) }); } @@ -4742,27 +5000,30 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_resource_id) auto cpl = write_dcp_with_single_asset (dir, subs_reel); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(subs_mxf) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(subs_mxf) ).set_cpl_id(cpl->id()).set_reel_index(0).set_reel_duration(240).set_asset_duration(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_RESOURCE_ID + VN( + VC::MISMATCHED_TIMED_TEXT_RESOURCE_ID ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + VN( + VC::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()) }); } @@ -4822,30 +5083,33 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_timed_text_id) auto cpl = write_dcp_with_single_asset (dir, subs_reel); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(subs_mxf) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(subs_mxf) ).set_cpl_id(cpl->id()).set_reel_index(0).set_reel_duration(240).set_asset_duration(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INCORRECT_TIMED_TEXT_ASSET_ID + VN( + VC::INCORRECT_TIMED_TEXT_ASSET_ID ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + VN( + VC::INVALID_SUBTITLE_FIRST_TEXT_TIME ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->file().get() + VN( + VC::MISSING_CPL_METADATA, cpl->file().get() ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE + VN( + VC::INVALID_SUBTITLE_ISSUE_DATE ).set_cpl_id(cpl->id()).set_reel_index(0).set_issue_date("2018-10-02T12:25:14+02:00") }); } @@ -4859,20 +5123,23 @@ BOOST_AUTO_TEST_CASE (verify_threed_marked_as_twod) auto cpl = std::make_shared<dcp::CPL>(find_prefix(path, "CPL_")); BOOST_REQUIRE(cpl); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { path }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - dcp::VerificationNote( - dcp::VerificationNote::Code::THREED_ASSET_MARKED_AS_TWOD, boost::filesystem::canonical(find_file(path, "j2c")) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl).set_reel_index(0), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + VN( + VC::THREED_ASSET_MARKED_AS_TWOD, boost::filesystem::canonical(find_file(path, "j2c")) ), - { dcp::VerificationNote::Code::INVALID_STANDARD } + { VC::INVALID_STANDARD } }); } @@ -4897,29 +5164,32 @@ BOOST_AUTO_TEST_CASE (verify_unexpected_things_in_main_markers) auto cpl = make_shared<dcp::CPL>(find_cpl(dir)); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::UNEXPECTED_ENTRY_POINT + VN( + VC::UNEXPECTED_ENTRY_POINT ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::UNEXPECTED_DURATION + VN( + VC::UNEXPECTED_DURATION ).set_cpl_id(cpl->id()).set_reel_index(0), }); } @@ -4941,25 +5211,28 @@ BOOST_AUTO_TEST_CASE(verify_invalid_content_kind) auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir)); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_CONTENT_KIND + VN( + VC::INVALID_CONTENT_KIND ).set_cpl_id(cpl->id()).set_content_kind("trip"), }); @@ -4982,22 +5255,25 @@ BOOST_AUTO_TEST_CASE(verify_valid_content_kind) auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir)); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) + VN( + VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), }); } @@ -5025,25 +5301,28 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_1) auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir)); auto const picture_id = cpl->reels()[0]->main_picture()->asset_ref().id(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) + VN( + VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_error("width 1997 is not a multiple of 2"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) + VN( + VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_asset_id(picture_id).set_reel_index(0).set_error("height 4080 is bigger than the asset height 1080") }); } @@ -5071,28 +5350,31 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_2) auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir)); auto const picture_id = cpl->reels()[0]->main_picture()->asset_ref().id(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN( + VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) + VN( + VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_error("height 5125 is not a multiple of 2"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) + VN( + VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_asset_id(picture_id).set_reel_index(0).set_error("width 9900 is bigger than the asset width 1998"), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) + VN( + VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir)) ).set_cpl_id(cpl->id()).set_asset_id(picture_id).set_reel_index(0).set_error("height 5125 is bigger than the asset height 1080") }); } @@ -5116,22 +5398,23 @@ BOOST_AUTO_TEST_CASE(verify_duplicate_pkl_asset_ids) auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir)); using VN = dcp::VerificationNote; + using VC = VN::Code; check_verify_result( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - VN(VN::Code::DUPLICATE_ASSET_ID_IN_PKL, canonical(find_pkl(dir))).set_pkl_id(pkl.id()) + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::NONE_ENCRYPTED, cpl), + VN(VC::DUPLICATE_ASSET_ID_IN_PKL, canonical(find_pkl(dir))).set_pkl_id(pkl.id()) }); } @@ -5154,25 +5437,28 @@ BOOST_AUTO_TEST_CASE(verify_duplicate_assetmap_asset_ids) dcp::AssetMap asset_map(find_asset_map(dir)); auto cpl = make_shared<dcp::CPL>(find_cpl(dir)); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get()) ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_ASSETMAP, canonical(find_asset_map(dir)) + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::DUPLICATE_ASSET_ID_IN_ASSETMAP, canonical(find_asset_map(dir)) ).set_asset_map_id(asset_map.id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::EXTERNAL_ASSET + VN( + VC::EXTERNAL_ASSET ).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54") }); } @@ -5242,26 +5528,29 @@ BOOST_AUTO_TEST_CASE(verify_mismatched_sound_channel_counts) dcp->set_annotation_text("hello"); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { path }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video2.mxf"), cpl).set_reel_index(1), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_SOUND_CHANNEL_COUNTS, canonical(find_file(path, "audio2")) + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(0), + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video2.mxf"), cpl).set_reel_index(1), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video2.mxf"), cpl).set_reel_index(1), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISMATCHED_SOUND_CHANNEL_COUNTS, canonical(find_file(path, "audio2")) ).set_cpl_id(cpl->id()).set_reel_index(1), }); } @@ -5309,24 +5598,27 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_sound_configuration) dcp->set_annotation_text("hello"); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { path }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(0), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_MAIN_SOUND_CONFIGURATION, + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::INVALID_MAIN_SOUND_CONFIGURATION, canonical(find_cpl(path)) ).set_cpl_id(cpl->id()).set_error("MainSoundConfiguration has 6 channels but sound assets have 2") }); @@ -5383,30 +5675,33 @@ BOOST_AUTO_TEST_CASE(verify_invalid_tile_part_size) dcp->set_annotation_text("A Test DCP"); dcp->write_xml(); - vector<dcp::VerificationNote> expected = { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + using VN = dcp::VerificationNote; + using VC = VN::Code; + + vector<VN> expected = { + note(VC::NONE_ENCRYPTED, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(path / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_FFOC + note(VC::CORRECT_PICTURE_HASH, canonical(path / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::MISSING_FFOC ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_LFOC + VN( + VC::MISSING_LFOC ).set_cpl_id(cpl->id()) }; for (auto frame = 0; frame < 24; frame++) { expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(path / "video.mxf") + VN( + VC::INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(path / "video.mxf") ).set_frame(frame).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0) ); } @@ -5420,8 +5715,8 @@ BOOST_AUTO_TEST_CASE(verify_invalid_tile_part_size) for (auto frame = 0; frame < 24; frame++) { for (auto component = 0; component < 3; component++) { expected.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_PART_SIZE + VN( + VC::INVALID_JPEG2000_TILE_PART_SIZE ).set_frame(frame).set_frame_rate(dcp::Fraction(24, 1)).set_component(component).set_size(component_sizes[component]).set_cpl_id(cpl->id()).set_reel_index(0) ); } @@ -5439,28 +5734,31 @@ BOOST_AUTO_TEST_CASE(verify_too_many_subtitle_namespaces) BOOST_REQUIRE(!dcp.cpls().empty()); auto cpl = dcp.cpls()[0]; + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE, cpl), - note(dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE, cpl), - note(dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, canonical(find_file(dir, "sub_"))).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, canonical(find_file(dir, "cpl_")) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl).set_reel_index(0), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::MISSING_FFEC_IN_FEATURE, cpl), + note(VC::MISSING_FFMC_IN_FEATURE, cpl), + note(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME, cpl), + VN( + VC::MISSING_SUBTITLE_LANGUAGE, canonical(find_file(dir, "sub_"))).set_cpl_id(cpl->id()).set_reel_index(0), + VN( + VC::MISSING_CPL_METADATA, canonical(find_file(dir, "cpl_")) ).set_cpl_id(cpl->id()), - dcp::VerificationNote( - dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT + VN( + VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT ).set_asset_id("315de731-1173-484c-9a35-bdacf5a9d99d").set_cpl_id(cpl->id()).set_reel_index(0), }); } @@ -5479,17 +5777,20 @@ BOOST_AUTO_TEST_CASE(verify_missing_load_font_for_font) auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 16 * 24, 0); auto cpl = write_dcp_with_single_asset(dir, reel_asset, dcp::Standard::INTEROP); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( {dir}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - { dcp::VerificationNote::Code::INVALID_STANDARD }, - dcp::VerificationNote(dcp::VerificationNote::Code::MISSING_LOAD_FONT_FOR_FONT).set_load_font_id("theFontId").set_cpl_id(cpl->id()) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + { VC::INVALID_STANDARD }, + VN(dcp::VerificationNote::Code::MISSING_LOAD_FONT_FOR_FONT).set_load_font_id("theFontId").set_cpl_id(cpl->id()) }); } @@ -5534,23 +5835,26 @@ BOOST_AUTO_TEST_CASE(verify_missing_load_font) cpl->reels()[0]->add(reel_subs); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result ( { dir }, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote(dcp::VerificationNote::Code::MISSING_LOAD_FONT).set_asset_id(reel_subs->id()).set_cpl_id(cpl->id()).set_reel_index(0) + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN(dcp::VerificationNote::Code::MISSING_LOAD_FONT).set_asset_id(reel_subs->id()).set_cpl_id(cpl->id()).set_reel_index(0) }); } @@ -5573,22 +5877,25 @@ BOOST_AUTO_TEST_CASE(verify_spots_wrong_asset) boost::filesystem::remove(dir / "1" / "video.mxf"); boost::filesystem::copy_file(dir / "2" / "video.mxf", dir / "1" / "video.mxf"); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir / "1"}, {}, { - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISMATCHED_ASSET_MAP_ID + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + VN( + VC::MISMATCHED_ASSET_MAP_ID ).set_mismatched_asset_id_from_asset_map(asset_1).set_mismatched_asset_id_from_file(asset_2) }); } @@ -5605,22 +5912,25 @@ BOOST_AUTO_TEST_CASE(verify_cpl_content_version_label_text_empty) cpl->set_content_version(dcp::ContentVersion("")); dcp->write_xml(); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( {dir}, {}, { - dcp::VerificationNote( - dcp::VerificationNote::Code::VALID_MAIN_PICTURE_ACTIVE_AREA, + VN( + VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get() ).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote(dcp::VerificationNote::Code::EMPTY_CONTENT_VERSION_LABEL_TEXT, cpl->file().get()).set_cpl_id(cpl->id()) + note(VC::NONE_ENCRYPTED, cpl), + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("A Test DCP"), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0), + VN(VC::EMPTY_CONTENT_VERSION_LABEL_TEXT, cpl->file().get()).set_cpl_id(cpl->id()) }); } @@ -5639,18 +5949,21 @@ BOOST_AUTO_TEST_CASE(verify_encrypted_smpte_dcp) path const pkl_file = find_file(dir, "pkl_"); path const cpl_file = find_file(dir, "cpl_"); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { dir }, { kdm }, { - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - note(dcp::VerificationNote::Code::ALL_ENCRYPTED, cpl), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, canonical(cpl_file) + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + note(VC::ALL_ENCRYPTED, cpl), + VN( + VC::MISSING_CPL_METADATA, canonical(cpl_file) ).set_cpl_id(cpl->id()) }); } @@ -5667,27 +5980,30 @@ BOOST_AUTO_TEST_CASE(verify_encrypted_smpte_dcp_without_kdm) path const pkl_file = find_file(dir, "pkl_"); path const cpl_file = find_file(dir, "cpl_"); + using VN = dcp::VerificationNote; + using VC = VN::Code; + check_verify_result( { dir }, {}, { - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::ALL_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::ALL_ENCRYPTED, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("hello"), + VN( + VC::MISSED_CHECK_OF_ENCRYPTED ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED + VN( + VC::MISSED_CHECK_OF_ENCRYPTED ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED + VN( + VC::MISSED_CHECK_OF_ENCRYPTED ).set_cpl_id(cpl->id()).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_CPL_METADATA, canonical(cpl_file) + VN( + VC::MISSING_CPL_METADATA, canonical(cpl_file) ).set_cpl_id(cpl->id()), }); } @@ -5699,33 +6015,36 @@ BOOST_AUTO_TEST_CASE(verify_invalid_sound_bit_depth) auto cpl = make_shared<dcp::CPL>(find_prefix(dir, "CPL_")); - vector<dcp::VerificationNote> notes = { - note(dcp::VerificationNote::Code::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), - note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl), - note(dcp::VerificationNote::Code::VALID_CONTENT_KIND, cpl).set_content_kind("Advertisement"), - note(dcp::VerificationNote::Code::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), - note(dcp::VerificationNote::Code::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("204794_Kitex_Scoobee_Day_Bags_30_Sec_Malayalam_220524_RADQR"), - note(dcp::VerificationNote::Code::NONE_ENCRYPTED, cpl), - note(dcp::VerificationNote::Code::CORRECT_PICTURE_HASH, canonical(dir / "Video.mxf"), cpl).set_reel_index(0), - note(dcp::VerificationNote::Code::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "Video.mxf"), cpl).set_reel_index(0), - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_SOUND_BIT_DEPTH, canonical(dir / "Audio.mxf") + using VN = dcp::VerificationNote; + using VC = VN::Code; + + vector<VN> notes = { + note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl), + note(VC::MATCHING_CPL_HASHES, cpl), + note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("Advertisement"), + note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text), + note(VC::VALID_CPL_ANNOTATION_TEXT, cpl).set_cpl_annotation_text("204794_Kitex_Scoobee_Day_Bags_30_Sec_Malayalam_220524_RADQR"), + note(VC::NONE_ENCRYPTED, cpl), + note(VC::CORRECT_PICTURE_HASH, canonical(dir / "Video.mxf"), cpl).set_reel_index(0), + note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "Video.mxf"), cpl).set_reel_index(0), + VN( + VC::INVALID_SOUND_BIT_DEPTH, canonical(dir / "Audio.mxf") ).set_cpl_id(cpl->id()).set_reel_index(0).set_bit_depth(16), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_HASH + VN( + VC::MISSING_HASH ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("fd4796c2-9c84-454c-91f4-13ad127cea8a"), - dcp::VerificationNote( - dcp::VerificationNote::Code::MISSING_HASH + VN( + VC::MISSING_HASH ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("9d5e8bc4-676b-4306-a86d-03f70c73b457"), - note(dcp::VerificationNote::Code::MISSING_CPL_METADATA, canonical(cpl->file().get()), cpl), - note(dcp::VerificationNote::Code::MISSING_FFOC, cpl), - note(dcp::VerificationNote::Code::MISSING_LFOC, cpl) + note(VC::MISSING_CPL_METADATA, canonical(cpl->file().get()), cpl), + note(VC::MISSING_FFOC, cpl), + note(VC::MISSING_LFOC, cpl) }; for (auto i = 0; i < 792; ++i) { notes.push_back( - dcp::VerificationNote( - dcp::VerificationNote::Code::INVALID_JPEG2000_GUARD_BITS_FOR_2K + VN( + VC::INVALID_JPEG2000_GUARD_BITS_FOR_2K ).set_cpl_id(cpl->id()).set_reel_index(0).set_guard_bits(2) ); } |
