Fill test disk partitions with random noise to expose more bugs.
[dcpomatic.git] / test / writer_test.cc
index 9a6541f58aa59e0e00c53da98d204bd52a367ccc..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)
@@ -95,8 +96,68 @@ BOOST_AUTO_TEST_CASE (interrupt_writer)
        dcpomatic_sleep_seconds (1);
 
        thread.interrupt ();
+       thread.join ();
 
        dcpomatic_sleep_seconds (1);
        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");
+}
+