diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-02-26 01:40:30 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-04-19 23:04:32 +0100 |
| commit | 58dce923b9d438a27ce1cd7e3125370f74d46e3a (patch) | |
| tree | 5a332a967aa3fb9bcb923f62b4832d8bb4d2bb17 /test/dcpomatic_time_test.cc | |
| parent | e7e06b4c9a6bf4459ff27a30cf347121c0e40e07 (diff) | |
Fix merging of audio in various circumstances.
Diffstat (limited to 'test/dcpomatic_time_test.cc')
| -rw-r--r-- | test/dcpomatic_time_test.cc | 141 |
1 files changed, 139 insertions, 2 deletions
diff --git a/test/dcpomatic_time_test.cc b/test/dcpomatic_time_test.cc index ae03d91c0..7489e7a24 100644 --- a/test/dcpomatic_time_test.cc +++ b/test/dcpomatic_time_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2015 Carl Hetherington <cth@carlh.net> + Copyright (C) 2015-2017 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -18,8 +18,11 @@ */ -#include <boost/test/unit_test.hpp> #include "lib/dcpomatic_time.h" +#include <boost/test/unit_test.hpp> +#include <list> + +using std::list; BOOST_AUTO_TEST_CASE (dcpomatic_time_test) { @@ -72,3 +75,137 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_period_overlaps_test) BOOST_CHECK (a.overlap(b)); BOOST_CHECK (a.overlap(b).get() == DCPTimePeriod(DCPTime(1), DCPTime(9))); } + +BOOST_AUTO_TEST_CASE (dcpomatic_time_period_subtract_test1) +{ + DCPTimePeriod A (DCPTime (0), DCPTime (106)); + list<DCPTimePeriod> B; + B.push_back (DCPTimePeriod (DCPTime (0), DCPTime (42))); + B.push_back (DCPTimePeriod (DCPTime (52), DCPTime (91))); + B.push_back (DCPTimePeriod (DCPTime (94), DCPTime (106))); + list<DCPTimePeriod> r = subtract (A, B); + list<DCPTimePeriod>::const_iterator i = r.begin (); + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (42)); + BOOST_CHECK (i->to == DCPTime (52)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (91)); + BOOST_CHECK (i->to == DCPTime (94)); + ++i; + BOOST_REQUIRE (i == r.end ()); +} + +BOOST_AUTO_TEST_CASE (dcpomatic_time_period_subtract_test2) +{ + DCPTimePeriod A (DCPTime (0), DCPTime (106)); + list<DCPTimePeriod> B; + B.push_back (DCPTimePeriod (DCPTime (14), DCPTime (42))); + B.push_back (DCPTimePeriod (DCPTime (52), DCPTime (91))); + B.push_back (DCPTimePeriod (DCPTime (94), DCPTime (106))); + list<DCPTimePeriod> r = subtract (A, B); + list<DCPTimePeriod>::const_iterator i = r.begin (); + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (0)); + BOOST_CHECK (i->to == DCPTime (14)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (42)); + BOOST_CHECK (i->to == DCPTime (52)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (91)); + BOOST_CHECK (i->to == DCPTime (94)); + ++i; + BOOST_REQUIRE (i == r.end ()); +} + +BOOST_AUTO_TEST_CASE (dcpomatic_time_period_subtract_test3) +{ + DCPTimePeriod A (DCPTime (0), DCPTime (106)); + list<DCPTimePeriod> B; + B.push_back (DCPTimePeriod (DCPTime (14), DCPTime (42))); + B.push_back (DCPTimePeriod (DCPTime (52), DCPTime (91))); + B.push_back (DCPTimePeriod (DCPTime (94), DCPTime (99))); + list<DCPTimePeriod> r = subtract (A, B); + list<DCPTimePeriod>::const_iterator i = r.begin (); + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (0)); + BOOST_CHECK (i->to == DCPTime (14)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (42)); + BOOST_CHECK (i->to == DCPTime (52)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (91)); + BOOST_CHECK (i->to == DCPTime (94)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (99)); + BOOST_CHECK (i->to == DCPTime (106)); + ++i; + BOOST_REQUIRE (i == r.end ()); +} + +BOOST_AUTO_TEST_CASE (dcpomatic_time_period_subtract_test4) +{ + DCPTimePeriod A (DCPTime (0), DCPTime (106)); + list<DCPTimePeriod> B; + list<DCPTimePeriod> r = subtract (A, B); + list<DCPTimePeriod>::const_iterator i = r.begin (); + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (0)); + BOOST_CHECK (i->to == DCPTime (106)); + ++i; + BOOST_REQUIRE (i == r.end ()); +} + +BOOST_AUTO_TEST_CASE (dcpomatic_time_period_subtract_test5) +{ + DCPTimePeriod A (DCPTime (0), DCPTime (106)); + list<DCPTimePeriod> B; + B.push_back (DCPTimePeriod (DCPTime (14), DCPTime (42))); + B.push_back (DCPTimePeriod (DCPTime (42), DCPTime (91))); + B.push_back (DCPTimePeriod (DCPTime (94), DCPTime (99))); + list<DCPTimePeriod> r = subtract (A, B); + list<DCPTimePeriod>::const_iterator i = r.begin (); + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (0)); + BOOST_CHECK (i->to == DCPTime (14)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from ==DCPTime (91)); + BOOST_CHECK (i->to == DCPTime (94)); + ++i; + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (99)); + BOOST_CHECK (i->to == DCPTime (106)); + ++i; + BOOST_REQUIRE (i == r.end ()); +} + +BOOST_AUTO_TEST_CASE (dcpomatic_time_period_subtract_test6) +{ + DCPTimePeriod A (DCPTime (0), DCPTime (106)); + list<DCPTimePeriod> B; + B.push_back (DCPTimePeriod (DCPTime (0), DCPTime (42))); + B.push_back (DCPTimePeriod (DCPTime (42), DCPTime (91))); + B.push_back (DCPTimePeriod (DCPTime (91), DCPTime (106))); + list<DCPTimePeriod> r = subtract (A, B); + BOOST_CHECK (r.empty()); +} + +BOOST_AUTO_TEST_CASE (dcpomatic_time_period_subtract_test7) +{ + DCPTimePeriod A (DCPTime (228), DCPTime (356)); + list<DCPTimePeriod> B; + B.push_back (DCPTimePeriod (DCPTime (34), DCPTime (162))); + list<DCPTimePeriod> r = subtract (A, B); + list<DCPTimePeriod>::const_iterator i = r.begin (); + BOOST_REQUIRE (i != r.end ()); + BOOST_CHECK (i->from == DCPTime (228)); + BOOST_CHECK (i->to == DCPTime (356)); + ++i; + BOOST_REQUIRE (i == r.end ()); +} |
