Rearrange subtitle font management.
[dcpomatic.git] / test / writer_test.cc
index 1dfc75bfc024c588c7eef1b2db86cde3db64c4d2..e0df0610e51e0c27020a9e122b1adf48cd2a4296 100644 (file)
@@ -36,6 +36,7 @@
 
 using std::make_shared;
 using std::shared_ptr;
+using std::vector;
 
 
 BOOST_AUTO_TEST_CASE (test_write_odd_amount_of_silence)
@@ -101,3 +102,62 @@ BOOST_AUTO_TEST_CASE (interrupt_writer)
        cl.run ();
 }
 
+
+BOOST_AUTO_TEST_CASE (writer_disambiguate_font_ids1)
+{
+       auto film = new_test_film2("writer_disambiguate_font_ids1", {});
+       Writer writer(film, {});
+
+       auto fonts = vector<shared_ptr<dcpomatic::Font>> {
+               make_shared<dcpomatic::Font>("a"),
+               make_shared<dcpomatic::Font>("b"),
+               make_shared<dcpomatic::Font>("c")
+       };
+
+       writer.write(fonts);
+
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[0]), "a");
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[1]), "b");
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[2]), "c");
+}
+
+
+BOOST_AUTO_TEST_CASE (writer_disambiguate_font_ids2)
+{
+       auto film = new_test_film2("writer_disambiguate_font_ids2", {});
+       Writer writer(film, {});
+
+       auto fonts = vector<shared_ptr<dcpomatic::Font>> {
+               make_shared<dcpomatic::Font>("a"),
+               make_shared<dcpomatic::Font>("a"),
+               make_shared<dcpomatic::Font>("a")
+       };
+
+       writer.write(fonts);
+
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[0]), "a");
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[1]), "a_0");
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[2]), "a_1");
+}
+
+
+BOOST_AUTO_TEST_CASE (writer_disambiguate_font_ids3)
+{
+       auto film = new_test_film2("writer_disambiguate_font_ids3", {});
+       Writer writer(film, {});
+
+       auto fonts = vector<shared_ptr<dcpomatic::Font>> {
+               make_shared<dcpomatic::Font>("a_2"),
+               make_shared<dcpomatic::Font>("a_1"),
+               make_shared<dcpomatic::Font>("a_1"),
+               make_shared<dcpomatic::Font>("b")
+       };
+
+       writer.write(fonts);
+
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[1]), "a_1");
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[0]), "a_2");
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[2]), "a_3");
+       BOOST_CHECK_EQUAL(writer._fonts.get(fonts[3]), "b");
+}
+