Missing library from test link list.
[dcpomatic.git] / test / frame_interval_checker_test.cc
1 /*
2     Copyright (C) 2020 Carl Hetherington <cth@carlh.net>
3
4     This file is part of DCP-o-matic.
5
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.
10
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.
15
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/>.
18
19 */
20
21 #include "lib/frame_interval_checker.h"
22 #include <boost/test/unit_test.hpp>
23
24 using namespace dcpomatic;
25
26 /** Test of 2D-ish frame timings */
27 BOOST_AUTO_TEST_CASE (frame_interval_checker_test1)
28 {
29         FrameIntervalChecker checker;
30         ContentTime t(3888);
31         checker.feed (t, 24);
32         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
33         t += ContentTime(4012);
34         checker.feed (t, 24);
35         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
36         t += ContentTime(4000);
37         checker.feed (t, 24);
38         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
39         t += ContentTime(4000);
40         checker.feed (t, 24);
41         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
42         t += ContentTime(3776);
43         checker.feed (t, 24);
44         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
45         t += ContentTime(3779);
46         checker.feed (t, 24);
47         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
48         t += ContentTime(4010);
49         checker.feed (t, 24);
50         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
51         t += ContentTime(4085);
52         checker.feed (t, 24);
53         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
54         t += ContentTime(4085);
55         checker.feed (t, 24);
56         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
57         t += ContentTime(4012);
58         checker.feed (t, 24);
59         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
60         t += ContentTime(4000);
61         checker.feed (t, 24);
62         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
63         t += ContentTime(4000);
64         checker.feed (t, 24);
65         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
66         t += ContentTime(3776);
67         checker.feed (t, 24);
68         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
69         t += ContentTime(3779);
70         checker.feed (t, 24);
71         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
72         t += ContentTime(4010);
73         checker.feed (t, 24);
74         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
75         t += ContentTime(4085);
76         checker.feed (t, 24);
77         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
78         t += ContentTime(4085);
79         checker.feed (t, 24);
80         BOOST_CHECK (checker.guess() == FrameIntervalChecker::PROBABLY_NOT_3D);
81 }
82
83 /** Test of 3D-ish frame timings */
84 BOOST_AUTO_TEST_CASE (frame_interval_checker_test2)
85 {
86         FrameIntervalChecker checker;
87         ContentTime t(3888);
88         checker.feed (t, 24);
89         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
90         t += ContentTime(0);
91         checker.feed (t, 24);
92         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
93         t += ContentTime(4000);
94         checker.feed (t, 24);
95         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
96         t += ContentTime(0);
97         checker.feed (t, 24);
98         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
99         t += ContentTime(3776);
100         checker.feed (t, 24);
101         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
102         t += ContentTime(50);
103         checker.feed (t, 24);
104         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
105         t += ContentTime(4010);
106         checker.feed (t, 24);
107         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
108         t += ContentTime(2);
109         checker.feed (t, 24);
110         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
111         t += ContentTime(4011);
112         checker.feed (t, 24);
113         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
114         t += ContentTime(0);
115         checker.feed (t, 24);
116         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
117         t += ContentTime(4000);
118         checker.feed (t, 24);
119         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
120         t += ContentTime(0);
121         checker.feed (t, 24);
122         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
123         t += ContentTime(3776);
124         checker.feed (t, 24);
125         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
126         t += ContentTime(50);
127         checker.feed (t, 24);
128         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
129         t += ContentTime(4010);
130         checker.feed (t, 24);
131         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
132         t += ContentTime(2);
133         checker.feed (t, 24);
134         BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
135         t += ContentTime(4011);
136         checker.feed (t, 24);
137         BOOST_CHECK (checker.guess() == FrameIntervalChecker::PROBABLY_3D);
138 }
139
140