2 Copyright (C) 2012-2013 Carl Hetherington <cth@carlh.net>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 /* Load a subtitle asset from XML and check that it is read correctly */
21 BOOST_AUTO_TEST_CASE (subtitles1)
23 libdcp::SubtitleAsset subs ("test/data", "subs1.xml");
25 BOOST_CHECK_EQUAL (subs.language(), "French");
27 list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_at (libdcp::Time (0, 0, 6, 1));
28 BOOST_CHECK_EQUAL (s.size(), 1);
29 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
32 libdcp::Color (255, 255, 255),
34 libdcp::Time (0, 0, 5, 198),
35 libdcp::Time (0, 0, 7, 115),
38 "My jacket was Idi Amin's",
40 libdcp::Color (0, 0, 0),
41 libdcp::Time (0, 0, 0, 1),
42 libdcp::Time (0, 0, 0, 1)
45 s = subs.subtitles_at (libdcp::Time (0, 0, 7, 190));
46 BOOST_CHECK_EQUAL (s.size(), 2);
47 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
50 libdcp::Color (255, 255, 255),
52 libdcp::Time (0, 0, 7, 177),
53 libdcp::Time (0, 0, 11, 31),
56 "My corset was H.M. The Queen's",
58 libdcp::Color (0, 0, 0),
59 libdcp::Time (0, 0, 0, 1),
60 libdcp::Time (0, 0, 0, 1)
62 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
65 libdcp::Color (255, 255, 255),
67 libdcp::Time (0, 0, 7, 177),
68 libdcp::Time (0, 0, 11, 31),
73 libdcp::Color (0, 0, 0),
74 libdcp::Time (0, 0, 0, 1),
75 libdcp::Time (0, 0, 0, 1)
78 s = subs.subtitles_at (libdcp::Time (0, 0, 11, 95));
79 BOOST_CHECK_EQUAL (s.size(), 1);
80 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
83 libdcp::Color (255, 255, 255),
85 libdcp::Time (0, 0, 11, 94),
86 libdcp::Time (0, 0, 13, 63),
89 "Once belonged to the Shah",
91 libdcp::Color (0, 0, 0),
92 libdcp::Time (0, 0, 0, 1),
93 libdcp::Time (0, 0, 0, 1)
96 s = subs.subtitles_at (libdcp::Time (0, 0, 14, 42));
97 BOOST_CHECK_EQUAL (s.size(), 1);
98 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
101 libdcp::Color (255, 255, 255),
103 libdcp::Time (0, 0, 13, 104),
104 libdcp::Time (0, 0, 15, 177),
107 "And these are Roy Hattersley's jeans",
109 libdcp::Color (0, 0, 0),
110 libdcp::Time (0, 0, 0, 1),
111 libdcp::Time (0, 0, 0, 1)
115 /** And similarly for another one */
116 BOOST_AUTO_TEST_CASE (subtitles2)
118 libdcp::SubtitleAsset subs ("test/data", "subs2.xml");
120 list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_at (libdcp::Time (0, 0, 42, 100));
121 BOOST_CHECK_EQUAL (s.size(), 2);
122 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
125 libdcp::Color (255, 255, 255),
127 libdcp::Time (0, 0, 41, 62),
128 libdcp::Time (0, 0, 43, 52),
131 "At afternoon tea with John Peel",
133 libdcp::Color (0, 0, 0),
134 libdcp::Time (0, 0, 0, 0),
135 libdcp::Time (0, 0, 0, 0)
137 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
140 libdcp::Color (255, 255, 255),
142 libdcp::Time (0, 0, 41, 62),
143 libdcp::Time (0, 0, 43, 52),
146 "I enquired if his accent was real",
148 libdcp::Color (0, 0, 0),
149 libdcp::Time (0, 0, 0, 0),
150 libdcp::Time (0, 0, 0, 0)
153 s = subs.subtitles_at (libdcp::Time (0, 0, 50, 50));
154 BOOST_CHECK_EQUAL (s.size(), 2);
155 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
158 libdcp::Color (255, 255, 255),
160 libdcp::Time (0, 0, 50, 42),
161 libdcp::Time (0, 0, 52, 21),
164 "He said \"out of the house",
166 libdcp::Color (0, 0, 0),
167 libdcp::Time (0, 0, 0, 0),
168 libdcp::Time (0, 0, 0, 0)
170 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
173 libdcp::Color (255, 255, 255),
175 libdcp::Time (0, 0, 50, 42),
176 libdcp::Time (0, 0, 52, 21),
179 "I'm incredibly scouse",
181 libdcp::Color (0, 0, 0),
182 libdcp::Time (0, 0, 0, 0),
183 libdcp::Time (0, 0, 0, 0)
186 s = subs.subtitles_at (libdcp::Time (0, 1, 2, 300));
187 BOOST_CHECK_EQUAL (s.size(), 2);
188 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
191 libdcp::Color (255, 255, 255),
193 libdcp::Time (0, 1, 2, 208),
194 libdcp::Time (0, 1, 4, 10),
197 "At home it depends how I feel.\"",
199 libdcp::Color (0, 0, 0),
200 libdcp::Time (0, 0, 0, 0),
201 libdcp::Time (0, 0, 0, 0)
203 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
206 libdcp::Color (255, 255, 255),
208 libdcp::Time (0, 1, 2, 208),
209 libdcp::Time (0, 1, 4, 10),
212 "I spent a long weekend in Brighton",
214 libdcp::Color (0, 0, 0),
215 libdcp::Time (0, 0, 0, 0),
216 libdcp::Time (0, 0, 0, 0)
219 s = subs.subtitles_at (libdcp::Time (0, 1, 15, 50));
220 BOOST_CHECK_EQUAL (s.size(), 2);
221 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
224 libdcp::Color (255, 255, 255),
226 libdcp::Time (0, 1, 15, 42),
227 libdcp::Time (0, 1, 16, 42),
230 "With the legendary Miss Enid Blyton",
232 libdcp::Color (0, 0, 0),
233 libdcp::Time (0, 0, 0, 0),
234 libdcp::Time (0, 0, 0, 0)
236 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
239 libdcp::Color (255, 255, 255),
241 libdcp::Time (0, 1, 15, 42),
242 libdcp::Time (0, 1, 16, 42),
245 "She said \"you be Noddy",
247 libdcp::Color (0, 0, 0),
248 libdcp::Time (0, 0, 0, 0),
249 libdcp::Time (0, 0, 0, 0)
252 s = subs.subtitles_at (libdcp::Time (0, 1, 27, 200));
253 BOOST_CHECK_EQUAL (s.size(), 2);
254 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
257 libdcp::Color (255, 255, 255),
259 libdcp::Time (0, 1, 27, 115),
260 libdcp::Time (0, 1, 28, 208),
263 "That curious creature the Sphinx",
265 libdcp::Color (0, 0, 0),
266 libdcp::Time (0, 0, 0, 0),
267 libdcp::Time (0, 0, 0, 0)
269 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
272 libdcp::Color (255, 255, 255),
274 libdcp::Time (0, 1, 27, 115),
275 libdcp::Time (0, 1, 28, 208),
278 "Is smarter than anyone thinks",
280 libdcp::Color (0, 0, 0),
281 libdcp::Time (0, 0, 0, 0),
282 libdcp::Time (0, 0, 0, 0)
285 s = subs.subtitles_at (libdcp::Time (0, 1, 42, 300));
286 BOOST_CHECK_EQUAL (s.size(), 2);
287 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
290 libdcp::Color (255, 255, 255),
292 libdcp::Time (0, 1, 42, 229),
293 libdcp::Time (0, 1, 45, 62),
296 "It sits there and smirks",
298 libdcp::Color (0, 0, 0),
299 libdcp::Time (0, 0, 0, 0),
300 libdcp::Time (0, 0, 0, 0)
302 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
305 libdcp::Color (255, 255, 255),
307 libdcp::Time (0, 1, 42, 229),
308 libdcp::Time (0, 1, 45, 62),
311 "And you don't think it works",
313 libdcp::Color (0, 0, 0),
314 libdcp::Time (0, 0, 0, 0),
315 libdcp::Time (0, 0, 0, 0)
318 s = subs.subtitles_at (libdcp::Time (0, 1, 45, 200));
319 BOOST_CHECK_EQUAL (s.size(), 2);
320 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
323 libdcp::Color (255, 255, 255),
325 libdcp::Time (0, 1, 45, 146),
326 libdcp::Time (0, 1, 47, 94),
329 "Then when you're not looking, it winks.",
331 libdcp::Color (0, 0, 0),
332 libdcp::Time (0, 0, 0, 0),
333 libdcp::Time (0, 0, 0, 0)
335 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
338 libdcp::Color (255, 255, 255),
340 libdcp::Time (0, 1, 45, 146),
341 libdcp::Time (0, 1, 47, 94),
344 "When it snows you will find Sister Sledge",
346 libdcp::Color (0, 0, 0),
347 libdcp::Time (0, 0, 0, 0),
348 libdcp::Time (0, 0, 0, 0)
351 s = subs.subtitles_at (libdcp::Time (0, 1, 47, 249));
352 BOOST_CHECK_EQUAL (s.size(), 2);
353 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
356 libdcp::Color (255, 255, 255),
358 libdcp::Time (0, 1, 47, 146),
359 libdcp::Time (0, 1, 48, 167),
362 "Out mooning, at night, on the ledge",
364 libdcp::Color (0, 0, 0),
365 libdcp::Time (0, 0, 0, 0),
366 libdcp::Time (0, 0, 0, 0)
368 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
371 libdcp::Color (255, 255, 255),
373 libdcp::Time (0, 1, 47, 146),
374 libdcp::Time (0, 1, 48, 167),
379 libdcp::Color (0, 0, 0),
380 libdcp::Time (0, 0, 0, 0),
381 libdcp::Time (0, 0, 0, 0)
384 s = subs.subtitles_at (libdcp::Time (0, 2, 6, 210));
385 BOOST_CHECK_EQUAL (s.size(), 2);
386 BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle (
389 libdcp::Color (255, 255, 255),
391 libdcp::Time (0, 2, 5, 208),
392 libdcp::Time (0, 2, 7, 31),
397 libdcp::Color (0, 0, 0),
398 libdcp::Time (0, 0, 0, 0),
399 libdcp::Time (0, 0, 0, 0)
401 BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle (
404 libdcp::Color (255, 255, 255),
406 libdcp::Time (0, 2, 5, 208),
407 libdcp::Time (0, 2, 7, 31),
412 libdcp::Color (0, 0, 0),
413 libdcp::Time (0, 0, 0, 0),
414 libdcp::Time (0, 0, 0, 0)