- dvdomatic_setup ();
-
- string const test_film = "build/test/film";
-
- if (boost::filesystem::exists (test_film)) {
- boost::filesystem::remove_all (test_film);
- }
-
- BOOST_CHECK_THROW (new Film ("build/test/film", true), OpenFileError);
-
- Film f (test_film, false);
- BOOST_CHECK (f.format() == 0);
- BOOST_CHECK (f.dcp_content_type() == 0);
- BOOST_CHECK (f.filters ().empty());
-
- f.set_name ("fred");
- BOOST_CHECK_THROW (f.set_content ("jim"), OpenFileError);
- f.set_dcp_content_type (DCPContentType::from_pretty_name ("Short"));
- f.set_format (Format::from_nickname ("Flat"));
- f.set_left_crop (1);
- f.set_right_crop (2);
- f.set_top_crop (3);
- f.set_bottom_crop (4);
- vector<Filter const *> f_filters;
- f_filters.push_back (Filter::from_id ("pphb"));
- f_filters.push_back (Filter::from_id ("unsharp"));
- f.set_filters (f_filters);
- f.set_dcp_frames (42);
- f.set_dcp_ab (true);
- f.write_metadata ();
-
- stringstream s;
- s << "diff -u test/metadata.ref " << test_film << "/metadata";
- BOOST_CHECK_EQUAL (::system (s.str().c_str ()), 0);
-
- Film g (test_film, true);
-
- BOOST_CHECK_EQUAL (g.name(), "fred");
- BOOST_CHECK_EQUAL (g.dcp_content_type(), DCPContentType::from_pretty_name ("Short"));
- BOOST_CHECK_EQUAL (g.format(), Format::from_nickname ("Flat"));
- BOOST_CHECK_EQUAL (g.crop().left, 1);
- BOOST_CHECK_EQUAL (g.crop().right, 2);
- BOOST_CHECK_EQUAL (g.crop().top, 3);
- BOOST_CHECK_EQUAL (g.crop().bottom, 4);
- vector<Filter const *> g_filters = g.filters ();
- BOOST_CHECK_EQUAL (g_filters.size(), 2);
- BOOST_CHECK_EQUAL (g_filters.front(), Filter::from_id ("pphb"));
- BOOST_CHECK_EQUAL (g_filters.back(), Filter::from_id ("unsharp"));
- BOOST_CHECK_EQUAL (g.dcp_frames(), 42);
- BOOST_CHECK_EQUAL (g.dcp_ab(), true);
-
- g.write_metadata ();
- BOOST_CHECK_EQUAL (::system (s.str().c_str ()), 0);
-}
-
-BOOST_AUTO_TEST_CASE (format_test)
-{
- Format::setup_formats ();
-
- Format const * f = Format::from_nickname ("Flat");
- BOOST_CHECK (f);
- BOOST_CHECK_EQUAL (f->ratio_as_integer(0), 185);
-
- f = Format::from_nickname ("Scope");
- BOOST_CHECK (f);
- BOOST_CHECK_EQUAL (f->ratio_as_integer(0), 239);
-}
-
-BOOST_AUTO_TEST_CASE (util_test)
-{
- string t = "Hello this is a string \"with quotes\" and indeed without them";
- vector<string> b = split_at_spaces_considering_quotes (t);
- vector<string>::iterator i = b.begin ();
- BOOST_CHECK_EQUAL (*i++, "Hello");
- BOOST_CHECK_EQUAL (*i++, "this");
- BOOST_CHECK_EQUAL (*i++, "is");
- BOOST_CHECK_EQUAL (*i++, "a");
- BOOST_CHECK_EQUAL (*i++, "string");
- BOOST_CHECK_EQUAL (*i++, "with quotes");
- BOOST_CHECK_EQUAL (*i++, "and");
- BOOST_CHECK_EQUAL (*i++, "indeed");
- BOOST_CHECK_EQUAL (*i++, "without");
- BOOST_CHECK_EQUAL (*i++, "them");
-}
-
-BOOST_AUTO_TEST_CASE (dvd_test)
-{
- list<DVDTitle> const t = dvd_titles ("test/dvd");
- BOOST_CHECK_EQUAL (t.size(), 3);
- list<DVDTitle>::const_iterator i = t.begin ();
-
- BOOST_CHECK_EQUAL (i->number, 1);
- BOOST_CHECK_EQUAL (i->size, 0);
- ++i;
-
- BOOST_CHECK_EQUAL (i->number, 2);
- BOOST_CHECK_EQUAL (i->size, 14);
- ++i;
-
- BOOST_CHECK_EQUAL (i->number, 3);
- BOOST_CHECK_EQUAL (i->size, 7);
-}
-
-void
-do_positive_delay_line_test (int delay_length, int block_length)
-{
- DelayLine d (delay_length);
- uint8_t data[block_length];
-
- int in = 0;
- int out = 0;
- int returned = 0;
- int zeros = 0;
-
- for (int i = 0; i < 64; ++i) {
- for (int j = 0; j < block_length; ++j) {
- data[j] = in;
- ++in;
- }
-
- int const a = d.feed (data, block_length);
- returned += a;
-
- for (int j = 0; j < a; ++j) {
- if (zeros < delay_length) {
- BOOST_CHECK_EQUAL (data[j], 0);
- ++zeros;
- } else {
- BOOST_CHECK_EQUAL (data[j], out & 0xff);
- ++out;
- }
- }
- }
-
- BOOST_CHECK_EQUAL (returned, 64 * block_length);
-}
-
-void
-do_negative_delay_line_test (int delay_length, int block_length)
-{
- DelayLine d (delay_length);
- uint8_t data[block_length];
-
- int in = 0;
- int out = -delay_length;
- int returned = 0;
-
- for (int i = 0; i < 256; ++i) {
- for (int j = 0; j < block_length; ++j) {
- data[j] = in;
- ++in;
- }
-
- int const a = d.feed (data, block_length);
- returned += a;
-
- for (int j = 0; j < a; ++j) {
- BOOST_CHECK_EQUAL (data[j], out & 0xff);
- ++out;
- }
- }
-
- uint8_t remainder[-delay_length];
- d.get_remaining (remainder);
- returned += -delay_length;
-
- for (int i = 0; i < -delay_length; ++i) {
- BOOST_CHECK_EQUAL (remainder[i], 0);
- ++out;
- }
-
- BOOST_CHECK_EQUAL (returned, 256 * block_length);
-
-}
-
-BOOST_AUTO_TEST_CASE (delay_line_test)
-{
- do_positive_delay_line_test (64, 128);
- do_positive_delay_line_test (128, 64);
- do_positive_delay_line_test (3, 512);
- do_positive_delay_line_test (512, 3);
-
- do_positive_delay_line_test (0, 64);
-
- do_negative_delay_line_test (-64, 128);
- do_negative_delay_line_test (-128, 64);
- do_negative_delay_line_test (-3, 512);
- do_negative_delay_line_test (-512, 3);
-}
-
-BOOST_AUTO_TEST_CASE (md5_digest_test)
-{
- string const t = md5_digest ("test/md5.test");
- BOOST_CHECK_EQUAL (t, "15058685ba99decdc4398c7634796eb0");
-
- BOOST_CHECK_THROW (md5_digest ("foobar"), OpenFileError);
-}
-
-BOOST_AUTO_TEST_CASE (paths_test)
-{
- FilmState s;
- s.directory = "build/test/a/b/c/d/e";
- s.thumbs.push_back (42);
- BOOST_CHECK_EQUAL (s.thumb_file (0), "build/test/a/b/c/d/e/thumbs/00000042.tiff");
-
- s.content = "/foo/bar/baz";
- BOOST_CHECK_EQUAL (s.content_path(), "/foo/bar/baz");
- s.content = "foo/bar/baz";
- BOOST_CHECK_EQUAL (s.content_path(), "build/test/a/b/c/d/e/foo/bar/baz");
-}
-
-void
-do_remote_encode (shared_ptr<DCPVideoFrame> frame, ServerDescription* description, shared_ptr<EncodedData> locally_encoded)
-{
- shared_ptr<EncodedData> remotely_encoded;
- BOOST_CHECK_NO_THROW (remotely_encoded = frame->encode_remotely (description));
- BOOST_CHECK (remotely_encoded);
-
- BOOST_CHECK_EQUAL (locally_encoded->size(), remotely_encoded->size());
- BOOST_CHECK (memcmp (locally_encoded->data(), remotely_encoded->data(), locally_encoded->size()) == 0);
-}