2 Copyright (C) 2020 Carl Hetherington <cth@carlh.net>
4 This file is part of DCP-o-matic.
6 DCP-o-matic is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 DCP-o-matic is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
21 #include "lib/frame_interval_checker.h"
22 #include <boost/test/unit_test.hpp>
24 /** Test of 2D-ish frame timings */
25 BOOST_AUTO_TEST_CASE (frame_interval_checker_test1)
27 FrameIntervalChecker checker;
30 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
31 t += ContentTime(4012);
33 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
34 t += ContentTime(4000);
36 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
37 t += ContentTime(4000);
39 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
40 t += ContentTime(3776);
42 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
43 t += ContentTime(3779);
45 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
46 t += ContentTime(4010);
48 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
49 t += ContentTime(4085);
51 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
52 t += ContentTime(4085);
54 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
55 t += ContentTime(4012);
57 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
58 t += ContentTime(4000);
60 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
61 t += ContentTime(4000);
63 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
64 t += ContentTime(3776);
66 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
67 t += ContentTime(3779);
69 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
70 t += ContentTime(4010);
72 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
73 t += ContentTime(4085);
75 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
76 t += ContentTime(4085);
78 BOOST_CHECK (checker.guess() == FrameIntervalChecker::PROBABLY_NOT_3D);
81 /** Test of 3D-ish frame timings */
82 BOOST_AUTO_TEST_CASE (frame_interval_checker_test2)
84 FrameIntervalChecker checker;
87 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
90 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
91 t += ContentTime(4000);
93 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
96 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
97 t += ContentTime(3776);
99 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
100 t += ContentTime(50);
101 checker.feed (t, 24);
102 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
103 t += ContentTime(4010);
104 checker.feed (t, 24);
105 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
107 checker.feed (t, 24);
108 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
109 t += ContentTime(4011);
110 checker.feed (t, 24);
111 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
113 checker.feed (t, 24);
114 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
115 t += ContentTime(4000);
116 checker.feed (t, 24);
117 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
119 checker.feed (t, 24);
120 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
121 t += ContentTime(3776);
122 checker.feed (t, 24);
123 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
124 t += ContentTime(50);
125 checker.feed (t, 24);
126 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
127 t += ContentTime(4010);
128 checker.feed (t, 24);
129 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
131 checker.feed (t, 24);
132 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
133 t += ContentTime(4011);
134 checker.feed (t, 24);
135 BOOST_CHECK (checker.guess() == FrameIntervalChecker::PROBABLY_3D);