diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-05-16 21:37:53 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-05-16 21:39:25 +0200 |
| commit | eaee1cd5601a93037bc2fb0956b99b12fe1f90e6 (patch) | |
| tree | 7c3a056b48088063c4bf6cdad593886ec84ee41e /test/dcpomatic_time_test.cc | |
| parent | 08d79750db92d0ab381fbf657307c7c21fe8110a (diff) | |
Add overlap() for lists of time periods.
Diffstat (limited to 'test/dcpomatic_time_test.cc')
| -rw-r--r-- | test/dcpomatic_time_test.cc | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/test/dcpomatic_time_test.cc b/test/dcpomatic_time_test.cc index 21739d185..80e0a9893 100644 --- a/test/dcpomatic_time_test.cc +++ b/test/dcpomatic_time_test.cc @@ -27,6 +27,7 @@ #include "lib/dcpomatic_time.h" #include "lib/dcpomatic_time_coalesce.h" +#include "lib/dcpomatic_time_overlap.h" #include <boost/test/unit_test.hpp> #include <iostream> #include <list> @@ -427,3 +428,109 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_floor_test) /* Check that rounding down to non-integer frame rates works */ BOOST_CHECK_EQUAL (DCPTime(45312).floor(29.976).get(), 44836); } + + +BOOST_AUTO_TEST_CASE (dcpomatic_time_overlap_test1) +{ + list<DCPTimePeriod> A = { + { DCPTime(0), DCPTime(5) } + }; + + BOOST_CHECK (overlap(A, std::list<DCPTimePeriod>()).empty()); + BOOST_CHECK (overlap(std::list<DCPTimePeriod>(), A).empty()); +} + + +BOOST_AUTO_TEST_CASE (dcpomatic_time_overlap_test2) +{ + list<DCPTimePeriod> A = { + { DCPTime(0), DCPTime(5) } + }; + + list<DCPTimePeriod> B = { + { DCPTime(6), DCPTime(10) } + }; + + BOOST_CHECK (overlap(A, B).empty()); + BOOST_CHECK (overlap(B, A).empty()); +} + + +BOOST_AUTO_TEST_CASE (dcpomatic_time_overlap_test3) +{ + list<DCPTimePeriod> A = { + { DCPTime(0), DCPTime(5) } + }; + + list<DCPTimePeriod> B = { + { DCPTime(2), DCPTime(3) } + }; + + std::list<DCPTimePeriod> correct = { + { DCPTime(2), DCPTime(3) } + }; + + BOOST_CHECK (overlap(A, B) == correct); + BOOST_CHECK (overlap(B, A) == correct); +} + + +BOOST_AUTO_TEST_CASE (dcpomatic_time_overlap_test4) +{ + list<DCPTimePeriod> A = { + { DCPTime(0), DCPTime(5) } + }; + + list<DCPTimePeriod> B = { + { DCPTime(0), DCPTime(5) } + }; + + std::list<DCPTimePeriod> correct = { + { DCPTime(0), DCPTime(5) } + }; + + BOOST_CHECK (overlap(A, B) == correct); + BOOST_CHECK (overlap(B, A) == correct); +} + + +BOOST_AUTO_TEST_CASE (dcpomatic_time_overlap_test5) +{ + list<DCPTimePeriod> A = { + { DCPTime(0), DCPTime(5) }, + { DCPTime(7), DCPTime(12) } + }; + + list<DCPTimePeriod> B = { + { DCPTime(0), DCPTime(15) } + }; + + std::list<DCPTimePeriod> correct = { + { DCPTime(0), DCPTime(5) }, + { DCPTime(7), DCPTime(12) } + }; + + BOOST_CHECK (overlap(A, B) == correct); + BOOST_CHECK (overlap(B, A) == correct); +} + + +BOOST_AUTO_TEST_CASE (dcpomatic_time_overlap_test6) +{ + list<DCPTimePeriod> A = { + { DCPTime(0), DCPTime(5) }, + { DCPTime(7), DCPTime(12) } + }; + + list<DCPTimePeriod> B = { + { DCPTime(3), DCPTime(10) } + }; + + std::list<DCPTimePeriod> correct = { + { DCPTime(3), DCPTime(5) }, + { DCPTime(7), DCPTime(10) } + }; + + BOOST_CHECK (overlap(A, B) == correct); + BOOST_CHECK (overlap(B, A) == correct); +} |
