2 Copyright (C) 2014 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 #include "dcp_reader.h"
22 #include <boost/test/unit_test.hpp>
28 using boost::shared_ptr;
30 /* Test reading of a DCP XML file */
31 BOOST_AUTO_TEST_CASE (dcp_reader_test1)
33 ifstream file ("test/data/test1.xml");
34 sub::DCPReader reader (file);
35 list<sub::Subtitle> subs = sub::collect (reader.subtitles ());
37 list<sub::Subtitle>::iterator i = subs.begin ();
38 BOOST_CHECK (i != subs.end ());
39 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 5, 198 * 4));
40 BOOST_CHECK_EQUAL (i->to.metric(), sub::MetricTime (0, 0, 7, 115 * 4));
41 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
42 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
45 list<sub::Line>::iterator j = i->lines.begin ();
46 BOOST_CHECK (j != i->lines.end ());
47 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
48 sub::Block b = j->blocks.front ();
49 BOOST_CHECK_EQUAL (b.font, "Arial");
50 BOOST_CHECK_EQUAL (b.italic, false);
51 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
52 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
53 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.15, 1);
54 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::BOTTOM);
55 BOOST_CHECK_EQUAL (b.text, "My jacket was Idi Amin's");
56 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
57 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
60 BOOST_CHECK (j == i->lines.end ());
64 BOOST_CHECK (i != subs.end ());
65 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 7, 177 * 4));
66 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 11, 31 * 4));
67 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
68 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
71 list<sub::Line>::iterator j = i->lines.begin ();
72 BOOST_CHECK (j != i->lines.end ());
73 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
74 sub::Block b = j->blocks.front ();
75 BOOST_CHECK_EQUAL (b.font, "Arial");
76 BOOST_CHECK_EQUAL (b.italic, true);
77 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
78 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
79 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.21, 1);
80 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::BOTTOM);
81 BOOST_CHECK_EQUAL (b.text, "My corset was H.M. The Queen's");
82 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
83 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
86 BOOST_CHECK (j != i->lines.end ());
87 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
88 b = j->blocks.front ();
89 BOOST_CHECK_EQUAL (b.font, "Arial");
90 BOOST_CHECK_EQUAL (b.italic, false);
91 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
92 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
93 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.15, 1);
94 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::BOTTOM);
95 BOOST_CHECK_EQUAL (b.text, "My large wonderbra");
96 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
97 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
100 BOOST_CHECK (j == i->lines.end ());
104 BOOST_CHECK (i != subs.end ());
105 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 11, 94 * 4));
106 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 13, 63 * 4));
107 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
108 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
111 list<sub::Line>::iterator j = i->lines.begin ();
112 BOOST_CHECK (j != i->lines.end ());
113 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
114 sub::Block b = j->blocks.front ();
115 BOOST_CHECK_EQUAL (b.font, "Arial");
116 BOOST_CHECK_EQUAL (b.italic, false);
117 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
118 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
119 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.15, 1);
120 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::BOTTOM);
121 BOOST_CHECK_EQUAL (b.text, "Once belonged to the Shah");
122 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
123 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
126 BOOST_CHECK (j == i->lines.end ());
130 BOOST_CHECK (i != subs.end ());
131 BOOST_CHECK_EQUAL (i->from.metric(), sub::MetricTime (0, 0, 13, 104 * 4));
132 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 15, 177 * 4));
133 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 4));
134 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 4));
137 list<sub::Line>::iterator j = i->lines.begin ();
138 BOOST_CHECK (j != i->lines.end ());
139 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
140 sub::Block b = j->blocks.front ();
141 BOOST_CHECK_EQUAL (b.font, "Arial");
142 BOOST_CHECK_EQUAL (b.italic, false);
143 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
144 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (39) / (72 * 11));
145 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.15, 1);
146 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::BOTTOM);
147 BOOST_CHECK_EQUAL (b.text, "And these are Roy Hattersley's jeans");
148 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
149 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
152 BOOST_CHECK (j == i->lines.end ());
156 /* And another one */
157 BOOST_AUTO_TEST_CASE (dcp_reader_test2)
159 ifstream file ("test/data/test2.xml");
160 sub::DCPReader reader (file);
161 list<sub::Subtitle> subs = collect (reader.subtitles ());
163 list<sub::Subtitle>::iterator i = subs.begin ();
164 BOOST_CHECK (i != subs.end ());
165 BOOST_CHECK_EQUAL (i->from.metric(), sub::MetricTime (0, 0, 41, 62 * 4));
166 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 43, 52 * 4));
167 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
168 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
171 list<sub::Line>::iterator j = i->lines.begin ();
172 BOOST_CHECK (j != i->lines.end ());
173 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
174 sub::Block b = j->blocks.front ();
175 BOOST_CHECK_EQUAL (b.font, "Arial");
176 BOOST_CHECK_EQUAL (b.italic, true);
177 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
178 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
179 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
180 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
181 BOOST_CHECK_EQUAL (b.text, "At afternoon tea with John Peel");
182 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
183 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
186 BOOST_CHECK (j != i->lines.end ());
187 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
188 b = j->blocks.front ();
189 BOOST_CHECK_EQUAL (b.font, "Arial");
190 BOOST_CHECK_EQUAL (b.italic, true);
191 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
192 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
193 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
194 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
195 BOOST_CHECK_EQUAL (b.text, "I enquired if his accent was real");
196 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
197 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
200 BOOST_CHECK (j == i->lines.end ());
204 BOOST_CHECK (i != subs.end ());
205 BOOST_CHECK_EQUAL (i->from.metric(), sub::MetricTime (0, 0, 50, 42 * 4));
206 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 52, 21 * 4));
207 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
208 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
211 list<sub::Line>::iterator j = i->lines.begin ();
212 BOOST_CHECK (j != i->lines.end ());
213 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
214 sub::Block b = j->blocks.front ();
215 BOOST_CHECK_EQUAL (b.font, "Arial");
216 BOOST_CHECK_EQUAL (b.italic, true);
217 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
218 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
219 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
220 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
221 BOOST_CHECK_EQUAL (b.text, "He said \"out of the house");
222 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
223 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
226 BOOST_CHECK (j != i->lines.end ());
227 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
228 b = j->blocks.front ();
229 BOOST_CHECK_EQUAL (b.font, "Arial");
230 BOOST_CHECK_EQUAL (b.italic, true);
231 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
232 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
233 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
234 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
235 BOOST_CHECK_EQUAL (b.text, "I'm incredibly scouse");
236 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
237 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
240 BOOST_CHECK (j == i->lines.end ());
244 BOOST_CHECK (i != subs.end ());
245 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 2, 208 * 4));
246 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 04, 10 * 4));
247 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
248 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
251 list<sub::Line>::iterator j = i->lines.begin ();
252 BOOST_CHECK (j != i->lines.end ());
253 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
254 sub::Block b = j->blocks.front ();
255 BOOST_CHECK_EQUAL (b.font, "Arial");
256 BOOST_CHECK_EQUAL (b.italic, true);
257 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
258 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
259 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
260 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
261 BOOST_CHECK_EQUAL (b.text, "At home it depends how I feel.\"");
262 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
263 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
266 BOOST_CHECK (j != i->lines.end ());
267 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
268 b = j->blocks.front ();
269 BOOST_CHECK_EQUAL (b.font, "Arial");
270 BOOST_CHECK_EQUAL (b.italic, true);
271 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
272 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
273 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 2, 208 * 4));
274 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 4, 10 * 4));
275 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
276 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
277 BOOST_CHECK_EQUAL (b.text, "I spent a long weekend in Brighton");
278 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
279 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
280 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
281 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
284 BOOST_CHECK (j == i->lines.end ());
288 BOOST_CHECK (i != subs.end ());
289 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 15, 42 * 4));
290 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 16, 42 * 4));
291 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
292 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
295 list<sub::Line>::iterator j = i->lines.begin ();
296 BOOST_CHECK (j != i->lines.end ());
297 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
298 sub::Block b = j->blocks.front ();
299 BOOST_CHECK_EQUAL (b.font, "Arial");
300 BOOST_CHECK_EQUAL (b.italic, true);
301 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
302 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
303 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
304 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
305 BOOST_CHECK_EQUAL (b.text, "With the legendary Miss Enid Blyton");
306 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
307 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
310 BOOST_CHECK (j != i->lines.end ());
311 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
312 b = j->blocks.front ();
313 BOOST_CHECK_EQUAL (b.font, "Arial");
314 BOOST_CHECK_EQUAL (b.italic, true);
315 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
316 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
317 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
318 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
319 BOOST_CHECK_EQUAL (b.text, "She said \"you be Noddy");
320 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
321 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
324 BOOST_CHECK (j == i->lines.end ());
328 BOOST_CHECK (i != subs.end ());
329 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 20, 219 * 4));
330 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 22, 73 * 4));
331 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
332 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
335 list<sub::Line>::iterator j = i->lines.begin ();
336 BOOST_CHECK (j != i->lines.end ());
337 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
338 sub::Block b = j->blocks.front ();
339 BOOST_CHECK_EQUAL (b.font, "Arial");
340 BOOST_CHECK_EQUAL (b.italic, true);
341 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
342 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
343 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
344 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
345 BOOST_CHECK_EQUAL (b.text, "and I'll show you my body\"");
346 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
347 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
350 BOOST_CHECK (j != i->lines.end ());
351 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
352 b = j->blocks.front ();
353 BOOST_CHECK_EQUAL (b.font, "Arial");
354 BOOST_CHECK_EQUAL (b.italic, true);
355 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
356 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
357 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
358 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
359 BOOST_CHECK_EQUAL (b.text, "But Big Ears kept turning the light on.");
360 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
361 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
364 BOOST_CHECK (j == i->lines.end ());
368 BOOST_CHECK (i != subs.end ());
369 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 27, 115 * 4));
370 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 28, 208 * 4));
371 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
372 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
375 list<sub::Line>::iterator j = i->lines.begin ();
376 BOOST_CHECK (j != i->lines.end ());
377 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
378 sub::Block b = j->blocks.front ();
379 BOOST_CHECK_EQUAL (b.font, "Arial");
380 BOOST_CHECK_EQUAL (b.italic, true);
381 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
382 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
383 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
384 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
385 BOOST_CHECK_EQUAL (b.text, "That curious creature the Sphinx");
386 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
387 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
390 BOOST_CHECK (j != i->lines.end ());
391 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
392 b = j->blocks.front ();
393 BOOST_CHECK_EQUAL (b.font, "Arial");
394 BOOST_CHECK_EQUAL (b.italic, true);
395 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
396 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
397 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
398 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
399 BOOST_CHECK_EQUAL (b.text, "Is smarter than anyone thinks");
400 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
401 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
404 BOOST_CHECK (j == i->lines.end ());
408 BOOST_CHECK (i != subs.end ());
409 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 42, 229 * 4));
410 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 45, 62 * 4));
411 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
412 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
415 list<sub::Line>::iterator j = i->lines.begin ();
416 BOOST_CHECK (j != i->lines.end ());
417 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
418 sub::Block b = j->blocks.front ();
419 BOOST_CHECK_EQUAL (b.font, "Arial");
420 BOOST_CHECK_EQUAL (b.italic, false);
421 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
422 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
423 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
424 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
425 BOOST_CHECK_EQUAL (b.text, "It sits there and smirks");
426 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
427 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
430 BOOST_CHECK (j != i->lines.end ());
431 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
432 b = j->blocks.front ();
433 BOOST_CHECK_EQUAL (b.font, "Arial");
434 BOOST_CHECK_EQUAL (b.italic, false);
435 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
436 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
437 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
438 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
439 BOOST_CHECK_EQUAL (b.text, "And you don't think it works");
440 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
441 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
444 BOOST_CHECK (j == i->lines.end ());
448 BOOST_CHECK (i != subs.end ());
449 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 45, 146 * 4));
450 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 47, 94 * 4));
451 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
452 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
455 list<sub::Line>::iterator j = i->lines.begin ();
456 BOOST_CHECK (j != i->lines.end ());
457 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
458 sub::Block b = j->blocks.front ();
459 BOOST_CHECK_EQUAL (b.font, "Arial");
460 BOOST_CHECK_EQUAL (b.italic, false);
461 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
462 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
463 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
464 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
465 BOOST_CHECK_EQUAL (b.text, "Then when you're not looking, it winks.");
466 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
467 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
470 BOOST_CHECK (j != i->lines.end ());
471 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
472 b = j->blocks.front ();
473 BOOST_CHECK_EQUAL (b.font, "Arial");
474 BOOST_CHECK_EQUAL (b.italic, false);
475 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
476 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
477 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
478 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
479 BOOST_CHECK_EQUAL (b.text, "When it snows you will find Sister Sledge");
480 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
481 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
484 BOOST_CHECK (j == i->lines.end ());
488 BOOST_CHECK (i != subs.end ());
489 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 47, 146 * 4));
490 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 48, 167 * 4));
491 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
492 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
495 list<sub::Line>::iterator j = i->lines.begin ();
496 BOOST_CHECK (j != i->lines.end ());
497 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
498 sub::Block b = j->blocks.front ();
499 BOOST_CHECK_EQUAL (b.font, "Arial");
500 BOOST_CHECK_EQUAL (b.italic, false);
501 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
502 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
503 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
504 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
505 BOOST_CHECK_EQUAL (b.text, "Out mooning, at night, on the ledge");
506 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
507 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
510 BOOST_CHECK (j != i->lines.end ());
511 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
512 b = j->blocks.front ();
513 BOOST_CHECK_EQUAL (b.font, "Arial");
514 BOOST_CHECK_EQUAL (b.italic, false);
515 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
516 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
517 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
518 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
519 BOOST_CHECK_EQUAL (b.text, "One storey down");
520 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
521 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
524 BOOST_CHECK (j == i->lines.end ());
528 BOOST_CHECK (i != subs.end ());
529 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 53, 21 * 4));
530 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 56, 10 * 4));
531 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
532 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
535 list<sub::Line>::iterator j = i->lines.begin ();
536 BOOST_CHECK (j != i->lines.end ());
537 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
538 sub::Block b = j->blocks.front ();
539 BOOST_CHECK_EQUAL (b.font, "Arial");
540 BOOST_CHECK_EQUAL (b.italic, false);
541 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
542 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
543 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
544 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
545 BOOST_CHECK_EQUAL (b.text, "Is the maestro, James Brown");
546 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
547 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
550 BOOST_CHECK (j != i->lines.end ());
551 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
552 b = j->blocks.front ();
553 BOOST_CHECK_EQUAL (b.font, "Arial");
554 BOOST_CHECK_EQUAL (b.italic, false);
555 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
556 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
557 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
558 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
559 BOOST_CHECK_EQUAL (b.text, "Displaying his meat and two veg.");
560 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
561 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
564 BOOST_CHECK (j == i->lines.end ());
568 BOOST_CHECK (i != subs.end ());
569 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 2, 5, 208 * 4));
570 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 2, 7, 31 * 4));
571 BOOST_CHECK_EQUAL (i->fade_up.get(), sub::MetricTime (0, 0, 0, 0));
572 BOOST_CHECK_EQUAL (i->fade_down.get(), sub::MetricTime (0, 0, 0, 0));
575 list<sub::Line>::iterator j = i->lines.begin ();
576 BOOST_CHECK (j != i->lines.end ());
577 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
578 sub::Block b = j->blocks.front ();
579 BOOST_CHECK_EQUAL (b.font, "Arial");
580 BOOST_CHECK_EQUAL (b.italic, true);
581 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
582 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
583 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.89, 1);
584 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
585 BOOST_CHECK_EQUAL (b.text, "HELLO");
586 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
587 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
590 BOOST_CHECK (j != i->lines.end ());
591 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
592 b = j->blocks.front ();
593 BOOST_CHECK_EQUAL (b.font, "Arial");
594 BOOST_CHECK_EQUAL (b.italic, true);
595 BOOST_CHECK (b.colour == sub::Colour (1, 1, 1));
596 BOOST_CHECK_EQUAL (b.font_size.proportional().get(), float (42) / (72 * 11));
597 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.95, 1);
598 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
599 BOOST_CHECK_EQUAL (b.text, "WORLD");
600 BOOST_CHECK_EQUAL (b.effect, sub::BORDER);
601 BOOST_CHECK (b.effect_colour.get() == sub::Colour (0, 0, 0));
604 BOOST_CHECK (j == i->lines.end ());