diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-01-03 23:27:37 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-04-20 20:06:46 +0200 |
| commit | fbf4e083ac834a94167d5d0e3d715206cb736a23 (patch) | |
| tree | 40c8b7d6e7615d615543feed9dbc2afa0ec098f9 /test | |
| parent | 52c03575531045c08de6e8769e8f4b00204b5ccc (diff) | |
Add a test for DCP::add() for KDMs.
Diffstat (limited to 'test')
| -rw-r--r-- | test/dcp_test.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/dcp_test.cc b/test/dcp_test.cc index 4e667364..f36aa41f 100644 --- a/test/dcp_test.cc +++ b/test/dcp_test.cc @@ -425,3 +425,63 @@ BOOST_AUTO_TEST_CASE (dcp_with_mixed_cpls) dcp.add(make_shared<dcp::CPL>("", dcp::ContentKind::FEATURE, dcp::Standard::SMPTE)); BOOST_REQUIRE_THROW (dcp.write_xml(), dcp::MiscError); } + + +BOOST_AUTO_TEST_CASE (dcp_add_kdm_test) +{ + /* Some CPLs, each with a reel */ + + shared_ptr<dcp::CPL> cpls[] = { + make_shared<dcp::CPL>("", dcp::ContentKind::FEATURE, dcp::Standard::SMPTE), + make_shared<dcp::CPL>("", dcp::ContentKind::FEATURE, dcp::Standard::SMPTE), + make_shared<dcp::CPL>("", dcp::ContentKind::FEATURE, dcp::Standard::SMPTE) + }; + + shared_ptr<dcp::Reel> reels[] = { + make_shared<dcp::Reel>(), + make_shared<dcp::Reel>(), + make_shared<dcp::Reel>() + }; + + for (auto i = 0; i < 3; ++i) { + cpls[i]->add(reels[i]); + } + + dcp::DCP dcp ("build/test/dcp_add_kdm_test"); + dcp.add(cpls[0]); + dcp.add(cpls[1]); + dcp.add(cpls[2]); + + /* Simple KDM with one key that should be given to cpls[0] */ + + auto kdm_1 = dcp::DecryptedKDM({}, {}, "", "", ""); + auto kdm_1_uuid = dcp::make_uuid(); + kdm_1.add_key (dcp::DecryptedKDMKey(string("MDIK"), kdm_1_uuid, dcp::Key(), cpls[0]->id(), dcp::Standard::SMPTE)); + dcp.add (kdm_1); + BOOST_REQUIRE (reels[0]->_kdms.size() == 1); + BOOST_CHECK (reels[0]->_kdms[0].keys().size() == 1); + BOOST_CHECK (reels[0]->_kdms[0].keys()[0].id() == kdm_1_uuid); + BOOST_CHECK (reels[1]->_kdms.size() == 0); + BOOST_CHECK (reels[2]->_kdms.size() == 0); + + /* KDM with two keys that should be given to cpls[1] and cpls[2] */ + + auto kdm_2 = dcp::DecryptedKDM({}, {}, "", "", ""); + auto kdm_2_uuid_1 = dcp::make_uuid(); + kdm_2.add_key (dcp::DecryptedKDMKey(string("MDIK"), kdm_2_uuid_1, dcp::Key(), cpls[1]->id(), dcp::Standard::SMPTE)); + auto kdm_2_uuid_2 = dcp::make_uuid(); + kdm_2.add_key (dcp::DecryptedKDMKey(string("MDIK"), kdm_2_uuid_2, dcp::Key(), cpls[2]->id(), dcp::Standard::SMPTE)); + dcp.add (kdm_2); + /* Unchanged from previous test */ + BOOST_CHECK (reels[0]->_kdms.size() == 1); + /* kdm_2 should have been added to both the other CPLs */ + BOOST_REQUIRE (reels[1]->_kdms.size() == 1); + BOOST_REQUIRE (reels[1]->_kdms[0].keys().size() == 2); + BOOST_CHECK (reels[1]->_kdms[0].keys()[0].id() == kdm_2_uuid_1); + BOOST_CHECK (reels[1]->_kdms[0].keys()[1].id() == kdm_2_uuid_2); + BOOST_REQUIRE (reels[2]->_kdms.size() == 1); + BOOST_REQUIRE (reels[2]->_kdms[0].keys().size() == 2); + BOOST_CHECK (reels[2]->_kdms[0].keys()[0].id() == kdm_2_uuid_1); + BOOST_CHECK (reels[2]->_kdms[0].keys()[1].id() == kdm_2_uuid_2); +} + |
