Cleanup: use std::vector rather than a raw array.
[libdcp.git] / test / shared_subtitle_test.cc
index ae05642a091bd96e297e3fece714e5ab57a06603..7ac20e1071bf04f9e74b438db15b90e8a85f7769 100644 (file)
 #include <boost/test/unit_test.hpp>
 
 
-using std::string;
+using std::make_shared;
 using std::shared_ptr;
+using std::string;
 using std::vector;
-using std::make_shared;
 using boost::optional;
 
 
@@ -70,7 +70,7 @@ BOOST_AUTO_TEST_CASE (take_intersection_test)
        B._values["sheila"] = "baz";
 
        A.take_intersection (B);
-       BOOST_REQUIRE_EQUAL (A._values.size(), 1);
+       BOOST_REQUIRE_EQUAL (A._values.size(), 1U);
        BOOST_CHECK_EQUAL (A._values["foo"], "bar");
 
        A._values.clear ();
@@ -83,7 +83,7 @@ BOOST_AUTO_TEST_CASE (take_intersection_test)
        B._values["sheila"] = "baz";
 
        A.take_intersection (B);
-       BOOST_CHECK_EQUAL (A._values.size(), 0);
+       BOOST_CHECK_EQUAL (A._values.size(), 0U);
 }
 
 /** Test dcp::order::Font::take_difference */
@@ -98,7 +98,7 @@ BOOST_AUTO_TEST_CASE (take_difference_test)
        B._values["sheila"] = "baz";
 
        A.take_difference (B);
-       BOOST_REQUIRE_EQUAL (A._values.size(), 1);
+       BOOST_REQUIRE_EQUAL (A._values.size(), 1U);
        BOOST_CHECK_EQUAL (A._values["fred"], "jim");
 }
 
@@ -108,17 +108,17 @@ BOOST_AUTO_TEST_CASE (pull_fonts_test1)
        auto root = make_shared<dcp::order::Part>(shared_ptr<dcp::order::Part>());
        auto sub1 = make_shared<dcp::order::Subtitle>(root, dcp::Time(), dcp::Time(), dcp::Time(), dcp::Time());
        root->children.push_back (sub1);
-       auto text1 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR);
+       auto text1 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, 0, dcp::Direction::LTR, std::vector<dcp::Ruby>());
        sub1->children.push_back (text1);
        text1->font._values["font"] = "Inconsolata";
        text1->font._values["size"] = "42";
 
        dcp::SubtitleAsset::pull_fonts (root);
 
-       BOOST_REQUIRE_EQUAL (sub1->font._values.size(), 2);
+       BOOST_REQUIRE_EQUAL (sub1->font._values.size(), 2U);
        BOOST_CHECK_EQUAL (sub1->font._values["font"], "Inconsolata");
        BOOST_CHECK_EQUAL (sub1->font._values["size"], "42");
-       BOOST_CHECK_EQUAL (text1->font._values.size(), 0);
+       BOOST_CHECK_EQUAL (text1->font._values.size(), 0U);
 }
 
 /** Test dcp::order::Subtitle::pull_fonts */
@@ -127,22 +127,22 @@ BOOST_AUTO_TEST_CASE (pull_fonts_test2)
        auto root = make_shared<dcp::order::Part>(shared_ptr<dcp::order::Part> ());
        auto sub1 = make_shared<dcp::order::Subtitle>(root, dcp::Time(), dcp::Time(), dcp::Time(), dcp::Time());
        root->children.push_back (sub1);
-       auto text1 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR);
+       auto text1 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, 0, dcp::Direction::LTR, std::vector<dcp::Ruby>());
        sub1->children.push_back (text1);
        text1->font._values["font"] = "Inconsolata";
        text1->font._values["size"] = "42";
-       auto text2 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR);
+       auto text2 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, 0, dcp::Direction::LTR, std::vector<dcp::Ruby>());
        sub1->children.push_back (text2);
        text2->font._values["font"] = "Inconsolata";
        text2->font._values["size"] = "48";
 
        dcp::SubtitleAsset::pull_fonts (root);
 
-       BOOST_REQUIRE_EQUAL (sub1->font._values.size(), 1);
+       BOOST_REQUIRE_EQUAL (sub1->font._values.size(), 1U);
        BOOST_CHECK_EQUAL (sub1->font._values["font"], "Inconsolata");
-       BOOST_REQUIRE_EQUAL (text1->font._values.size(), 1);
+       BOOST_REQUIRE_EQUAL (text1->font._values.size(), 1U);
        BOOST_CHECK_EQUAL (text1->font._values["size"], "42");
-       BOOST_REQUIRE_EQUAL (text2->font._values.size(), 1);
+       BOOST_REQUIRE_EQUAL (text2->font._values.size(), 1U);
        BOOST_CHECK_EQUAL (text2->font._values["size"], "48");
 }
 
@@ -152,7 +152,7 @@ BOOST_AUTO_TEST_CASE (pull_fonts_test3)
        auto root = make_shared<dcp::order::Part>(shared_ptr<dcp::order::Part> ());
        auto sub1 = make_shared<dcp::order::Subtitle>(root, dcp::Time(), dcp::Time(), dcp::Time(), dcp::Time());
        root->children.push_back (sub1);
-       auto text1 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR);
+       auto text1 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, 0, dcp::Direction::LTR, std::vector<dcp::Ruby>());
        sub1->children.push_back (text1);
        dcp::order::Font font;
        font._values["font"] = "Inconsolata";
@@ -162,7 +162,7 @@ BOOST_AUTO_TEST_CASE (pull_fonts_test3)
 
        dcp::SubtitleAsset::pull_fonts (root);
 
-       BOOST_REQUIRE_EQUAL (sub1->font._values.size(), 2);
+       BOOST_REQUIRE_EQUAL (sub1->font._values.size(), 2U);
        BOOST_CHECK_EQUAL (sub1->font._values["font"], "Inconsolata");
        BOOST_CHECK_EQUAL (sub1->font._values["size"], "42");
 }
@@ -183,9 +183,9 @@ BOOST_AUTO_TEST_CASE (format_xml_test1)
        fred->add_child_text("Fred");
        fred->add_child("Text")->add_child_text("Jim");
        fred->add_child_text("Sheila");
-       BOOST_REQUIRE_EQUAL (dcp::SubtitleAsset::format_xml(doc, { {"", "fred"}, {"jim", "sheila"} }),
+       BOOST_REQUIRE_EQUAL (dcp::SubtitleAsset::format_xml(doc, make_pair(string{}, string{"fred"})),
 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<Foo xmlns=\"fred\" xmlns:jim=\"sheila\">\n"
+"<Foo xmlns=\"fred\">\n"
 "  <Empty/>\n"
 "  <Text>Hello world</Text>\n"
 "  <Font>\n"
@@ -217,3 +217,12 @@ BOOST_AUTO_TEST_CASE (format_xml_entities_test)
 "  <Bar>Don't panic &amp;amp; xml \"is\" 'great' &amp; &lt; &gt; —</Bar>\n"
 "</Foo>\n");
 }
+
+
+BOOST_AUTO_TEST_CASE(ruby_round_trip_test)
+{
+       dcp::InteropSubtitleAsset asset("test/data/ruby1.xml");
+       check_xml(dcp::file_to_string("test/data/ruby1.xml"), asset.xml_as_string(), {}, false);
+}
+
+