#include <boost/filesystem.hpp>
#include <fstream>
#include <cmath>
+#include <iostream>
using std::list;
using std::cerr;
BOOST_CHECK_EQUAL (j->blocks.size(), 1);
sub::Block b = j->blocks.front ();
BOOST_CHECK_EQUAL (b.text, "This is a subtitle");
- BOOST_CHECK_EQUAL (b.font.get(), "Arial");
- BOOST_CHECK_EQUAL (b.font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (b.bold, false);
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK_EQUAL (b.underline, false);
BOOST_CHECK_EQUAL (j->blocks.size(), 1);
b = j->blocks.front ();
BOOST_CHECK_EQUAL (b.text, "and that's a line break");
- BOOST_CHECK_EQUAL (b.font.get(), "Arial");
- BOOST_CHECK_EQUAL (b.font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (b.bold, false);
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK_EQUAL (b.underline, false);
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "This is some ");
- BOOST_CHECK_EQUAL (k->font.get(), "Arial");
- BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
BOOST_CHECK_EQUAL (k->underline, false);
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "bold");
- BOOST_CHECK_EQUAL (k->font.get(), "Arial");
- BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (k->bold, true);
BOOST_CHECK_EQUAL (k->italic, false);
BOOST_CHECK_EQUAL (k->underline, false);
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, " and some ");
- BOOST_CHECK_EQUAL (k->font.get(), "Arial");
- BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
BOOST_CHECK_EQUAL (k->underline, false);
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "bold italic");
- BOOST_CHECK_EQUAL (k->font.get(), "Arial");
- BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (k->bold, true);
BOOST_CHECK_EQUAL (k->italic, true);
BOOST_CHECK_EQUAL (k->underline, false);
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, " and some ");
- BOOST_CHECK_EQUAL (k->font.get(), "Arial");
- BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
BOOST_CHECK_EQUAL (k->underline, false);
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, "underlined");
- BOOST_CHECK_EQUAL (k->font.get(), "Arial");
- BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
BOOST_CHECK_EQUAL (k->underline, true);
BOOST_CHECK (k != l.blocks.end ());
BOOST_CHECK_EQUAL (k->text, ".");
- BOOST_CHECK_EQUAL (k->font.get(), "Arial");
- BOOST_CHECK_EQUAL (k->font_size.points().get(), 48);
+ /* No font is specified by subrip, so none should be seen here */
+ BOOST_CHECK (!b.font);
+ BOOST_CHECK (!b.font_size.specified());
BOOST_CHECK_EQUAL (k->bold, false);
BOOST_CHECK_EQUAL (k->italic, false);
BOOST_CHECK_EQUAL (k->underline, false);
BOOST_CHECK_EQUAL (i->lines.size(), 1);
BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "Hello world.");
+ ++i;
+ BOOST_CHECK (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 4, 50, 123));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 4, 55, 23));
+ BOOST_CHECK_EQUAL (i->lines.size(), 2);
+ BOOST_CHECK_EQUAL (i->lines.front().blocks.front().text, "Some italics over");
+ BOOST_CHECK_EQUAL (i->lines.front().blocks.front().italic, true);
+ BOOST_CHECK_EQUAL (i->lines.back().blocks.front().text, "multiple lines");
+ BOOST_CHECK_EQUAL (i->lines.back().blocks.front().italic, true);
+
++i;
BOOST_CHECK (i == subs.end ());
}
{
sub::SubripReader r;
- r.convert_line ("Hello world", 0, sub::Time (), sub::Time ());
+ sub::RawSubtitle rs;
+ r.convert_line ("Hello world", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world");
r._subs.clear ();
- r.convert_line ("<b>Hello world</b>", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("<b>Hello world</b>", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world");
BOOST_CHECK_EQUAL (r._subs.front().bold, true);
r._subs.clear ();
- r.convert_line ("<i>Hello world</i>", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("<i>Hello world</i>", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world");
BOOST_CHECK_EQUAL (r._subs.front().italic, true);
r._subs.clear ();
- r.convert_line ("<u>Hello world</u>", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("<u>Hello world</u>", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world");
BOOST_CHECK_EQUAL (r._subs.front().underline, true);
r._subs.clear ();
- r.convert_line ("{b}Hello world{/b}", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("{b}Hello world{/b}", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world");
BOOST_CHECK_EQUAL (r._subs.front().bold, true);
r._subs.clear ();
- r.convert_line ("{i}Hello world{/i}", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("{i}Hello world{/i}", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world");
BOOST_CHECK_EQUAL (r._subs.front().italic, true);
r._subs.clear ();
- r.convert_line ("{u}Hello world{/u}", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("{u}Hello world{/u}", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "Hello world");
BOOST_CHECK_EQUAL (r._subs.front().underline, true);
r._subs.clear ();
- r.convert_line ("<b>This is <i>nesting</i> of subtitles</b>", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("<b>This is <i>nesting</i> of subtitles</b>", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 3);
list<sub::RawSubtitle>::iterator i = r._subs.begin ();
BOOST_CHECK_EQUAL (i->text, "This is ");
++i;
r._subs.clear ();
- r.convert_line ("<font color=\"#ff00ff\">simple color</font>", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("<font color=\"#ff00ff\">simple color</font>", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 1);
BOOST_CHECK_EQUAL (r._subs.front().text, "simple color");
BOOST_CHECK_EQUAL (r._subs.front().bold, false);
BOOST_CHECK_CLOSE (r._subs.front().colour.b, 1, 0.1);
r._subs.clear ();
- r.convert_line ("<font color=\"#ff0000\">some red text <b>in bold</b></font>", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("<font color=\"#ff0000\">some red text <b>in bold</b></font>", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 2);
i = r._subs.begin ();
BOOST_CHECK_EQUAL (i->text, "some red text ");
BOOST_CHECK (fabs (i->colour.b) < 0.01);
r._subs.clear ();
- r.convert_line ("<font color=\"#0000ff\">some blue text <b>in bold</b></font>", 0, sub::Time (), sub::Time ());
+ rs = sub::RawSubtitle();
+ r.convert_line ("<font color=\"#0000ff\">some blue text <b>in bold</b></font>", rs);
BOOST_CHECK_EQUAL (r._subs.size(), 2);
i = r._subs.begin ();
BOOST_CHECK_EQUAL (i->text, "some blue text ");
test ("sintel_en.srt");
test ("sintel_fr.srt");
test ("Fight.Club.1999.720p.BRRip.x264-x0r.srt");
+ test ("EU13.srt");
}