X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fread_interop_subtitle_test.cc;h=f111b80bfe3ed2b505c425e564f27c4704e6eda0;hb=df56c3975454d935b8457d8a8bc1615388db305c;hp=3ec70296768ba7aa6e3505d0bf1d29daa33b9a37;hpb=a641fdc912a3f0749015decdf9e23ff15186ef78;p=libdcp.git diff --git a/test/read_interop_subtitle_test.cc b/test/read_interop_subtitle_test.cc index 3ec70296..f111b80b 100644 --- a/test/read_interop_subtitle_test.cc +++ b/test/read_interop_subtitle_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2015 Carl Hetherington + Copyright (C) 2012-2018 Carl Hetherington This file is part of libdcp. @@ -20,7 +20,9 @@ #include "interop_subtitle_asset.h" #include "interop_load_font_node.h" #include "subtitle_string.h" +#include "subtitle_image.h" #include +#include using std::list; using std::string; @@ -44,12 +46,14 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1) BOOST_CHECK_EQUAL (interop_lfn->id, "theFontId"); BOOST_CHECK_EQUAL (interop_lfn->uri, "arial.ttf"); - list s = subs.subtitles_during (dcp::Time (0, 0, 6, 1, 250), dcp::Time (0, 0, 6, 2, 250), false); + list > s = subs.subtitles_during (dcp::Time (0, 0, 6, 1, 250), dcp::Time (0, 0, 6, 2, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 1); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFontId"), false, false, + false, dcp::Colour (255, 255, 255), 39, 1.0, @@ -69,10 +73,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1) s = subs.subtitles_during (dcp::Time (0, 0, 7, 190, 250), dcp::Time (0, 0, 7, 191, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFontId"), true, false, + false, dcp::Colour (255, 255, 255), 39, 1.0, @@ -89,10 +95,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1) dcp::Time (0, 0, 0, 1, 250), dcp::Time (0, 0, 0, 1, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFontId"), false, false, + false, dcp::Colour (255, 255, 255), 39, 1.0, @@ -112,10 +120,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1) s = subs.subtitles_during (dcp::Time (0, 0, 11, 95, 250), dcp::Time (0, 0, 11, 96, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 1); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFontId"), false, false, + false, dcp::Colour (255, 255, 255), 39, 1.0, @@ -135,10 +145,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1) s = subs.subtitles_during (dcp::Time (0, 0, 14, 42, 250), dcp::Time (0, 0, 14, 43, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 1); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFontId"), false, true, + true, dcp::Colour (255, 255, 255), 39, 1.0, @@ -162,12 +174,14 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) { dcp::InteropSubtitleAsset subs ("test/data/subs2.xml"); - list s = subs.subtitles_during (dcp::Time (0, 0, 42, 100, 250), dcp::Time (0, 0, 42, 101, 250), false); + list > s = subs.subtitles_during (dcp::Time (0, 0, 42, 100, 250), dcp::Time (0, 0, 42, 101, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -184,10 +198,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -207,10 +223,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 0, 50, 50, 250), dcp::Time (0, 0, 50, 51, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -227,10 +245,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -250,10 +270,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 1, 2, 300, 250), dcp::Time (0, 1, 2, 301, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -270,10 +292,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -293,10 +317,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 1, 15, 50, 250), dcp::Time (0, 1, 15, 51, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -313,10 +339,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -336,10 +364,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 1, 27, 200, 250), dcp::Time (0, 1, 27, 201, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -356,10 +386,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -379,10 +411,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 1, 42, 300, 250), dcp::Time (0, 1, 42, 301, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), false, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -399,10 +433,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), false, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -422,10 +458,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 1, 45, 200, 250), dcp::Time (0, 1, 45, 201, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), false, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -442,10 +480,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), false, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -465,10 +505,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 1, 47, 249, 250), dcp::Time (0, 1, 47, 250, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), false, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -485,10 +527,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), false, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -508,10 +552,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) s = subs.subtitles_during (dcp::Time (0, 2, 6, 210, 250), dcp::Time (0, 2, 6, 211, 250), false); BOOST_REQUIRE_EQUAL (s.size(), 2); - BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.front())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.front()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -528,10 +574,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250), dcp::Time (0, 0, 0, 0, 250) )); - BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( + BOOST_REQUIRE (dynamic_pointer_cast(s.back())); + BOOST_CHECK_EQUAL (*dynamic_pointer_cast(s.back()), dcp::SubtitleString ( string ("theFont"), true, false, + false, dcp::Colour (255, 255, 255), 42, 1.0, @@ -549,3 +597,14 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2) dcp::Time (0, 0, 0, 0, 250) )); } + +/** And one with bitmap subtitles */ +BOOST_AUTO_TEST_CASE (read_interop_subtitle_test3) +{ + dcp::InteropSubtitleAsset subs ("test/data/subs3.xml"); + + BOOST_REQUIRE_EQUAL (subs.subtitles().size(), 1); + shared_ptr si = dynamic_pointer_cast(subs.subtitles().front()); + BOOST_REQUIRE (si); + BOOST_CHECK (si->png_image() == dcp::Data("test/data/sub.png")); +}