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 "subrip_reader.h"
23 #include <boost/test/unit_test.hpp>
30 /* Test reading of a Subrip file */
31 BOOST_AUTO_TEST_CASE (subrip_reader_test)
33 FILE* f = fopen ("test/data/test.srt", "r");
34 sub::SubripReader reader (f);
36 list<sub::Subtitle> subs = sub::collect (reader.subtitles ());
38 list<sub::Subtitle>::iterator i = subs.begin ();
43 BOOST_CHECK (i != subs.end ());
44 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 0, 41, 90));
45 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 0, 42, 210));
47 list<sub::Line>::iterator j = i->lines.begin ();
48 BOOST_CHECK (j != i->lines.end ());
49 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
50 sub::Block b = j->blocks.front ();
51 BOOST_CHECK_EQUAL (b.text, "This is a subtitle");
52 BOOST_CHECK_EQUAL (b.font, "Arial");
53 BOOST_CHECK_EQUAL (b.font_size.points().get(), 48);
54 BOOST_CHECK_EQUAL (b.bold, false);
55 BOOST_CHECK_EQUAL (b.italic, false);
56 BOOST_CHECK_EQUAL (b.underline, false);
57 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.7, 1);
58 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
61 BOOST_CHECK (j != i->lines.end ());
62 BOOST_CHECK_EQUAL (j->blocks.size(), 1);
63 b = j->blocks.front ();
64 BOOST_CHECK_EQUAL (b.text, "and that's a line break");
65 BOOST_CHECK_EQUAL (b.font, "Arial");
66 BOOST_CHECK_EQUAL (b.font_size.points().get(), 48);
67 BOOST_CHECK_EQUAL (b.bold, false);
68 BOOST_CHECK_EQUAL (b.italic, false);
69 BOOST_CHECK_EQUAL (b.underline, false);
70 BOOST_CHECK_CLOSE (j->vertical_position.proportional.get(), 0.8, 1);
71 BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::TOP);
77 BOOST_CHECK (i != subs.end ());
78 BOOST_CHECK_EQUAL (i->from.metric().get(), sub::MetricTime (0, 1, 1, 10));
79 BOOST_CHECK_EQUAL (i->to.metric().get(), sub::MetricTime (0, 1, 2, 100));
81 BOOST_CHECK_EQUAL (i->lines.size(), 1);
82 sub::Line l = i->lines.front ();
83 BOOST_CHECK_EQUAL (l.blocks.size(), 7);
84 BOOST_CHECK_CLOSE (l.vertical_position.proportional.get(), 0.7, 1);
86 list<sub::Block>::iterator k = l.blocks.begin ();
88 BOOST_CHECK (k != l.blocks.end ());
89 BOOST_CHECK_EQUAL (k->text, "This is some ");
90 BOOST_CHECK_EQUAL (k->font, "Arial");
91 BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
92 BOOST_CHECK_EQUAL (k->bold, false);
93 BOOST_CHECK_EQUAL (k->italic, false);
94 BOOST_CHECK_EQUAL (k->underline, false);
97 BOOST_CHECK (k != l.blocks.end ());
98 BOOST_CHECK_EQUAL (k->text, "bold");
99 BOOST_CHECK_EQUAL (k->font, "Arial");
100 BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
101 BOOST_CHECK_EQUAL (k->bold, true);
102 BOOST_CHECK_EQUAL (k->italic, false);
103 BOOST_CHECK_EQUAL (k->underline, false);
106 BOOST_CHECK (k != l.blocks.end ());
107 BOOST_CHECK_EQUAL (k->text, " and some ");
108 BOOST_CHECK_EQUAL (k->font, "Arial");
109 BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
110 BOOST_CHECK_EQUAL (k->bold, false);
111 BOOST_CHECK_EQUAL (k->italic, false);
112 BOOST_CHECK_EQUAL (k->underline, false);
115 BOOST_CHECK (k != l.blocks.end ());
116 BOOST_CHECK_EQUAL (k->text, "bold italic");
117 BOOST_CHECK_EQUAL (k->font, "Arial");
118 BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
119 BOOST_CHECK_EQUAL (k->bold, true);
120 BOOST_CHECK_EQUAL (k->italic, true);
121 BOOST_CHECK_EQUAL (k->underline, false);
124 BOOST_CHECK (k != l.blocks.end ());
125 BOOST_CHECK_EQUAL (k->text, " and some ");
126 BOOST_CHECK_EQUAL (k->font, "Arial");
127 BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
128 BOOST_CHECK_EQUAL (k->bold, false);
129 BOOST_CHECK_EQUAL (k->italic, false);
130 BOOST_CHECK_EQUAL (k->underline, false);
133 BOOST_CHECK (k != l.blocks.end ());
134 BOOST_CHECK_EQUAL (k->text, "underlined");
135 BOOST_CHECK_EQUAL (k->font, "Arial");
136 BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
137 BOOST_CHECK_EQUAL (k->bold, false);
138 BOOST_CHECK_EQUAL (k->italic, false);
139 BOOST_CHECK_EQUAL (k->underline, true);
142 BOOST_CHECK (k != l.blocks.end ());
143 BOOST_CHECK_EQUAL (k->text, ".");
144 BOOST_CHECK_EQUAL (k->font, "Arial");
145 BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
146 BOOST_CHECK_EQUAL (k->bold, false);
147 BOOST_CHECK_EQUAL (k->italic, false);
148 BOOST_CHECK_EQUAL (k->underline, false);
151 BOOST_CHECK (k == l.blocks.end ());