diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-07-02 20:58:56 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-07-02 20:58:56 +0100 |
| commit | ac08ad9d8e10aa1c8e13645ea83438376329d678 (patch) | |
| tree | 5445e3df6e213b6ee7e14a93a4c74e6e5817b6b3 | |
| parent | 2e64e69c8d7836d14e059c474bb6bd667e7bb52f (diff) | |
Some work on tests.
| -rw-r--r-- | test/dcp_test.cc | 71 | ||||
| -rw-r--r-- | test/error_test.cc | 33 | ||||
| -rw-r--r-- | test/tests.cc | 105 |
3 files changed, 134 insertions, 75 deletions
diff --git a/test/dcp_test.cc b/test/dcp_test.cc new file mode 100644 index 00000000..9699eeb2 --- /dev/null +++ b/test/dcp_test.cc @@ -0,0 +1,71 @@ +/* + Copyright (C) 2013 Carl Hetherington <cth@carlh.net> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +/* Test creation of a DCP from very simple inputs */ +BOOST_AUTO_TEST_CASE (dcp_test) +{ + Kumu::libdcp_test = true; + + /* Some known metadata */ + libdcp::XMLMetadata xml_meta; + xml_meta.issuer = "OpenDCP 0.0.25"; + xml_meta.creator = "OpenDCP 0.0.25"; + xml_meta.issue_date = "2012-07-17T04:45:18+00:00"; + libdcp::MXFMetadata mxf_meta; + mxf_meta.company_name = "OpenDCP"; + mxf_meta.product_name = "OpenDCP"; + mxf_meta.product_version = "0.0.25"; + + /* We're making build/test/foo */ + boost::filesystem::remove_all ("build/test/foo"); + boost::filesystem::create_directories ("build/test/foo"); + libdcp::DCP d ("build/test/foo"); + shared_ptr<libdcp::CPL> cpl (new libdcp::CPL ("build/test/foo", "A Test DCP", libdcp::FEATURE, 24, 24)); + + shared_ptr<libdcp::MonoPictureAsset> mp (new libdcp::MonoPictureAsset ( + j2c, + "build/test/foo", + "video.mxf", + &d.Progress, + 24, + 24, + false, + libdcp::Size (32, 32), + mxf_meta + )); + + shared_ptr<libdcp::SoundAsset> ms (new libdcp::SoundAsset ( + wav, + "build/test/foo", + "audio.mxf", + &(d.Progress), + 24, + 24, + 2, + false, + mxf_meta + )); + + cpl->add_reel (shared_ptr<libdcp::Reel> (new libdcp::Reel (mp, ms, shared_ptr<libdcp::SubtitleAsset> ()))); + d.add_cpl (cpl); + + d.write_xml (xml_meta); + + /* build/test/foo is checked against test/ref/DCP/foo by run-tests.sh */ +} diff --git a/test/error_test.cc b/test/error_test.cc new file mode 100644 index 00000000..a2a5716c --- /dev/null +++ b/test/error_test.cc @@ -0,0 +1,33 @@ +/* + Copyright (C) 2013 Carl Hetherington <cth@carlh.net> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +/* Check that an exception is thrown when trying to create MXFs from non-existant sources */ +BOOST_AUTO_TEST_CASE (error_test) +{ + /* Create an empty DCP */ + libdcp::DCP d ("build/test/fred"); + + /* Random filename that does not exist */ + vector<string> p; + p.push_back ("frobozz"); + + /* Trying to create video/audio MXFs using a non-existant file should throw an exception */ + BOOST_CHECK_THROW (new libdcp::MonoPictureAsset (p, "build/test/fred", "video.mxf", &d.Progress, 24, 24, false, libdcp::Size (32, 32)), libdcp::FileError); + BOOST_CHECK_THROW (new libdcp::SoundAsset (p, "build/test/fred", "audio.mxf", &d.Progress, 24, 24, false), libdcp::FileError); +} diff --git a/test/tests.cc b/test/tests.cc index 3bc1508c..328ab018 100644 --- a/test/tests.cc +++ b/test/tests.cc @@ -46,77 +46,32 @@ using std::vector; using std::list; using boost::shared_ptr; -string + +struct TestConfig +{ + TestConfig() + { + libdcp::init (); + } +}; + +BOOST_GLOBAL_FIXTURE (TestConfig); + + +static string j2c (int) { return "test/data/32x32_red_square.j2c"; } -string +static string wav (libdcp::Channel) { return "test/data/1s_24-bit_48k_silence.wav"; } - - -BOOST_AUTO_TEST_CASE (dcp_test) -{ - libdcp::init (); - - Kumu::libdcp_test = true; - - libdcp::XMLMetadata xml_meta; - xml_meta.issuer = "OpenDCP 0.0.25"; - xml_meta.creator = "OpenDCP 0.0.25"; - xml_meta.issue_date = "2012-07-17T04:45:18+00:00"; - libdcp::MXFMetadata mxf_meta; - mxf_meta.company_name = "OpenDCP"; - mxf_meta.product_name = "OpenDCP"; - mxf_meta.product_version = "0.0.25"; - boost::filesystem::remove_all ("build/test/foo"); - boost::filesystem::create_directories ("build/test/foo"); - libdcp::DCP d ("build/test/foo"); - shared_ptr<libdcp::CPL> cpl (new libdcp::CPL ("build/test/foo", "A Test DCP", libdcp::FEATURE, 24, 24)); - - shared_ptr<libdcp::MonoPictureAsset> mp (new libdcp::MonoPictureAsset ( - j2c, - "build/test/foo", - "video.mxf", - &d.Progress, - 24, - 24, - false, - libdcp::Size (32, 32), - mxf_meta - )); - - shared_ptr<libdcp::SoundAsset> ms (new libdcp::SoundAsset ( - wav, - "build/test/foo", - "audio.mxf", - &(d.Progress), - 24, - 24, - 2, - false, - mxf_meta - )); - - cpl->add_reel (shared_ptr<libdcp::Reel> (new libdcp::Reel (mp, ms, shared_ptr<libdcp::SubtitleAsset> ()))); - d.add_cpl (cpl); - - d.write_xml (xml_meta); -} - -BOOST_AUTO_TEST_CASE (error_test) -{ - libdcp::DCP d ("build/test/fred"); - vector<string> p; - p.push_back ("frobozz"); - BOOST_CHECK_THROW (new libdcp::MonoPictureAsset (p, "build/test/bar", "video.mxf", &d.Progress, 24, 24, false, libdcp::Size (32, 32)), libdcp::FileError); - BOOST_CHECK_THROW (new libdcp::SoundAsset (p, "build/test/bar", "audio.mxf", &d.Progress, 24, 24, false), libdcp::FileError); -} +#include "dcp_test.cc" +#include "error_test.cc" BOOST_AUTO_TEST_CASE (read_dcp) { @@ -609,12 +564,12 @@ BOOST_AUTO_TEST_CASE (encryption) boost::filesystem::remove_all ("build/test/bar"); boost::filesystem::create_directories ("build/test/bar"); - libdcp::DCP d ("build/test/bar"); + libdcp::DCP d ("build/test/DCP/bar"); libdcp::CertificateChain chain; - chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/ca.self-signed.pem"))); - chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/intermediate.signed.pem"))); - chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/leaf.signed.pem"))); + chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("build/test/data/ca.self-signed.pem"))); + chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("build/test/data/intermediate.signed.pem"))); + chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("build/test/data/leaf.signed.pem"))); shared_ptr<libdcp::Encryption> crypt ( new libdcp::Encryption ( @@ -667,13 +622,20 @@ BOOST_AUTO_TEST_CASE (encryption) kdm->write_to_file_formatted ("build/test/bar.kdm.xml", "UTF-8"); } +BOOST_AUTO_TEST_CASE (crypt_chain) +{ + boost::filesystem::remove_all ("build/test/crypt"); + boost::filesystem::create_directory ("build/test/crypt"); + libdcp::make_crypt_chain ("build/test/crypt"); +} + BOOST_AUTO_TEST_CASE (certificates) { libdcp::CertificateChain c; - c.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/ca.self-signed.pem"))); - c.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/intermediate.signed.pem"))); - c.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/leaf.signed.pem"))); + c.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/crypt/ca.self-signed.pem"))); + c.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/crypt/intermediate.signed.pem"))); + c.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate ("test/data/crypt/leaf.signed.pem"))); BOOST_CHECK_EQUAL ( c.root()->issuer(), @@ -693,13 +655,6 @@ BOOST_AUTO_TEST_CASE (certificates) ); } -BOOST_AUTO_TEST_CASE (crypt_chain) -{ - boost::filesystem::remove_all ("build/test/crypt"); - boost::filesystem::create_directory ("build/test/crypt"); - libdcp::make_crypt_chain ("build/test/crypt"); -} - BOOST_AUTO_TEST_CASE (recovery) { Kumu::libdcp_test = true; |
