summaryrefslogtreecommitdiff
path: root/test/test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-01-16 23:36:16 +0000
committerCarl Hetherington <cth@carlh.net>2013-01-16 23:36:16 +0000
commite9ee53e42d7f8bbcd2a454ee9de5f3e66ec06b03 (patch)
tree10aaec3604bf0a8770fea1ffd322d82714a31c51 /test/test.cc
parentc7292767fe4935da750423461a41224b3e0a8e37 (diff)
Add some tests and hopefully clarify the DCPFrameRate class.
Diffstat (limited to 'test/test.cc')
-rw-r--r--test/test.cc105
1 files changed, 105 insertions, 0 deletions
diff --git a/test/test.cc b/test/test.cc
index c393aac5e..45a80f024 100644
--- a/test/test.cc
+++ b/test/test.cc
@@ -429,6 +429,111 @@ BOOST_AUTO_TEST_CASE (make_dcp_with_range_test)
BOOST_CHECK_EQUAL (JobManager::instance()->errors(), false);
}
+/* Test the constructor of DCPFrameRate */
+BOOST_AUTO_TEST_CASE (dcp_frame_rate_test)
+{
+ /* Run some tests with a limited range of allowed rates */
+
+ std::list<int> afr;
+ afr.push_back (24);
+ afr.push_back (25);
+ afr.push_back (30);
+ Config::instance()->set_allowed_dcp_frame_rates (afr);
+
+ DCPFrameRate dfr = DCPFrameRate (60);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 30);
+ BOOST_CHECK_EQUAL (dfr.skip, true);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (50);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 25);
+ BOOST_CHECK_EQUAL (dfr.skip, true);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (48);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 24);
+ BOOST_CHECK_EQUAL (dfr.skip, true);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (30);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 30);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (29.97);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 30);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, true);
+
+ dfr = DCPFrameRate (25);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 25);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (24);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 24);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (14.5);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 30);
+ BOOST_CHECK_EQUAL (dfr.repeat, true);
+ BOOST_CHECK_EQUAL (dfr.change_speed, true);
+
+ dfr = DCPFrameRate (12.6);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 25);
+ BOOST_CHECK_EQUAL (dfr.repeat, true);
+ BOOST_CHECK_EQUAL (dfr.change_speed, true);
+
+ dfr = DCPFrameRate (12.4);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 25);
+ BOOST_CHECK_EQUAL (dfr.repeat, true);
+ BOOST_CHECK_EQUAL (dfr.change_speed, true);
+
+ dfr = DCPFrameRate (12);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 24);
+ BOOST_CHECK_EQUAL (dfr.repeat, true);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ /* Now add some more rates and see if it will use them
+ in preference to skip/repeat.
+ */
+
+ afr.push_back (48);
+ afr.push_back (50);
+ afr.push_back (60);
+ Config::instance()->set_allowed_dcp_frame_rates (afr);
+
+ dfr = DCPFrameRate (60);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 60);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (50);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 50);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+
+ dfr = DCPFrameRate (48);
+ BOOST_CHECK_EQUAL (dfr.frames_per_second, 48);
+ BOOST_CHECK_EQUAL (dfr.skip, false);
+ BOOST_CHECK_EQUAL (dfr.repeat, false);
+ BOOST_CHECK_EQUAL (dfr.change_speed, false);
+}
+
BOOST_AUTO_TEST_CASE (audio_sampling_rate_test)
{
shared_ptr<Film> f = new_test_film ("audio_sampling_rate_test");