Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.23,0:00:04.55,Default,,0,0,0,,Hello world
Dialogue: Marked=0,0:00:05.74,0:00:11.00,Default,,0,0,900,,This is vertically moved\nand has two lines.
+Dialogue: Marked=0,0:00:07.74,0:00:09.00,Default,,0,0,0,,Some {\i1}italics{\i} are here.
BOOST_AUTO_TEST_CASE (ssa_reader_line_test1)
{
sub::RawSubtitle base;
- list<sub::RawSubtitle> r = sub::SSAReader::parse_line (base, "This is a line with some {i1}italics{i0} and then\\nthere is a new line.");
+ list<sub::RawSubtitle> r = sub::SSAReader::parse_line (base, "This is a line with some {\\i1}italics{\\i0} and then\\nthere is a new line.");
list<sub::RawSubtitle>::const_iterator i = r.begin ();
BOOST_CHECK_EQUAL (i->text, "This is a line with some ");
BOOST_AUTO_TEST_CASE (ssa_reader_line_test2)
{
sub::RawSubtitle base;
- list<sub::RawSubtitle> r = sub::SSAReader::parse_line (base, "{i1}It's all just italics{i0}");
+ list<sub::RawSubtitle> r = sub::SSAReader::parse_line (base, "{\\i1}It's all just italics{\\i0}");
list<sub::RawSubtitle>::const_iterator i = r.begin ();
BOOST_CHECK_EQUAL (i->text, "It's all just italics");
list<sub::Subtitle>::iterator i = subs.begin ();
+ /* Hello world */
BOOST_REQUIRE (i != subs.end ());
BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 1, 230));
BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 4, 550));
BOOST_CHECK_EQUAL (b.underline, false);
++i;
+ /* This is vertically moved\nand has two lines. */
BOOST_REQUIRE (i != subs.end ());
BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 5, 740));
BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 11, 0));
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK_EQUAL (b.underline, false);
++j;
+
BOOST_CHECK (fabs (j->vertical_position.proportional.get() - (900.0 / 1080)) < 1e-5);
BOOST_CHECK (j->vertical_position.reference);
BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::BOTTOM_OF_SCREEN);
BOOST_CHECK_EQUAL (b.italic, false);
BOOST_CHECK_EQUAL (b.underline, false);
++j;
+ ++i;
+
+ /* Some {\i1}italics{\i} are here. */
+ BOOST_REQUIRE (i != subs.end ());
+ BOOST_CHECK_EQUAL (i->from, sub::Time::from_hms (0, 0, 7, 740));
+ BOOST_CHECK_EQUAL (i->to, sub::Time::from_hms (0, 0, 9, 0));
+ j = i->lines.begin();
+ BOOST_REQUIRE (j != i->lines.end ());
+ BOOST_CHECK (j->vertical_position.proportional);
+ BOOST_CHECK_EQUAL (j->vertical_position.proportional.get(), 0);
+ BOOST_CHECK (j->vertical_position.reference);
+ BOOST_CHECK_EQUAL (j->vertical_position.reference.get(), sub::BOTTOM_OF_SCREEN);
+ BOOST_REQUIRE_EQUAL (j->blocks.size(), 3);
+ list<sub::Block>::const_iterator bi = j->blocks.begin ();
+ BOOST_CHECK_EQUAL (bi->text, "Some ");
+ BOOST_CHECK_EQUAL (bi->font.get(), "Arial");
+ BOOST_CHECK_EQUAL (bi->font_size.points().get(), 20);
+ BOOST_CHECK_EQUAL (bi->bold, false);
+ BOOST_CHECK_EQUAL (bi->italic, false);
+ BOOST_CHECK_EQUAL (bi->underline, false);
+ ++bi;
+ BOOST_CHECK_EQUAL (bi->text, "italics");
+ BOOST_CHECK_EQUAL (bi->font.get(), "Arial");
+ BOOST_CHECK_EQUAL (bi->font_size.points().get(), 20);
+ BOOST_CHECK_EQUAL (bi->bold, false);
+ BOOST_CHECK_EQUAL (bi->italic, true);
+ BOOST_CHECK_EQUAL (bi->underline, false);
+ ++bi;
+ BOOST_CHECK_EQUAL (bi->text, " are here.");
+ BOOST_CHECK_EQUAL (bi->font.get(), "Arial");
+ BOOST_CHECK_EQUAL (bi->font_size.points().get(), 20);
+ BOOST_CHECK_EQUAL (bi->bold, false);
+ BOOST_CHECK_EQUAL (bi->italic, false);
+ BOOST_CHECK_EQUAL (bi->underline, false);
+ ++bi;
+ ++j;
BOOST_REQUIRE (j == i->lines.end());
++i;