summaryrefslogtreecommitdiff
path: root/test/util_test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-01-04 21:41:07 +0000
committerCarl Hetherington <cth@carlh.net>2017-01-04 21:41:07 +0000
commit736f9d8154080ea5837b31af623ef863eea1a7c5 (patch)
treeddb5c8118d57b9f55d507293b75e0d5fd9652811 /test/util_test.cc
parent11ac33e140f3aa9d6e992880a1e1b3a4ca649355 (diff)
Fix non-frame-aligned trims when using trim-to-playhead.
Reimplement Time::ceil and add a corresponding Time::floor with tests. ceil returns slightly different results to previously with non-integer frame rates. Then use floor to round the playhead position when trimming.
Diffstat (limited to 'test/util_test.cc')
-rw-r--r--test/util_test.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/test/util_test.cc b/test/util_test.cc
index c7bf9944d..334811cb7 100644
--- a/test/util_test.cc
+++ b/test/util_test.cc
@@ -65,7 +65,24 @@ BOOST_AUTO_TEST_CASE (dcptime_ceil_test)
BOOST_CHECK_EQUAL (DCPTime(43).ceil(DCPTime::HZ / 42).get(), 84);
/* Check that rounding up to non-integer frame rates works */
- BOOST_CHECK_EQUAL (DCPTime(45312).ceil(29.976).get(), 48045);
+ BOOST_CHECK_EQUAL (DCPTime(45312).ceil(29.976).get(), 48038);
+}
+
+/* Straightforward test of DCPTime::floor */
+BOOST_AUTO_TEST_CASE (dcptime_floor_test)
+{
+ BOOST_CHECK_EQUAL (DCPTime(0).floor(DCPTime::HZ / 2).get(), 0);
+ BOOST_CHECK_EQUAL (DCPTime(1).floor(DCPTime::HZ / 2).get(), 0);
+ BOOST_CHECK_EQUAL (DCPTime(2).floor(DCPTime::HZ / 2).get(), 2);
+ BOOST_CHECK_EQUAL (DCPTime(3).floor(DCPTime::HZ / 2).get(), 2);
+
+ BOOST_CHECK_EQUAL (DCPTime(0).floor(DCPTime::HZ / 42).get(), 0);
+ BOOST_CHECK_EQUAL (DCPTime(1).floor(DCPTime::HZ / 42).get(), 0);
+ BOOST_CHECK_EQUAL (DCPTime(42).floor(DCPTime::HZ / 42.0).get(), 42);
+ BOOST_CHECK_EQUAL (DCPTime(43).floor(DCPTime::HZ / 42.0).get(), 42);
+
+ /* Check that rounding down to non-integer frame rates works */
+ BOOST_CHECK_EQUAL (DCPTime(45312).floor(29.976).get(), 44836);
}
BOOST_AUTO_TEST_CASE (timecode_test)