diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-01-04 21:41:07 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-01-04 21:41:07 +0000 |
| commit | 736f9d8154080ea5837b31af623ef863eea1a7c5 (patch) | |
| tree | ddb5c8118d57b9f55d507293b75e0d5fd9652811 /test/util_test.cc | |
| parent | 11ac33e140f3aa9d6e992880a1e1b3a4ca649355 (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.cc | 19 |
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) |
