diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-08-13 17:43:18 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-08-13 18:19:32 +0200 |
| commit | f3da0b18b9949913c8e2de725d12c71802713ed1 (patch) | |
| tree | c2f1a5e8f206a175863e920f316bc1d102665f0a /test | |
| parent | c9f7228cf9b0b48744676efb87edbec0bf561856 (diff) | |
Extract and fix closed text display logic (#2857).
This was buggy, but here it is extracted, fixed and gains a basic test.
Diffstat (limited to 'test')
| -rw-r--r-- | test/closed_text_display_test.cc | 77 | ||||
| -rw-r--r-- | test/wscript | 1 |
2 files changed, 78 insertions, 0 deletions
diff --git a/test/closed_text_display_test.cc b/test/closed_text_display_test.cc new file mode 100644 index 000000000..e3494471c --- /dev/null +++ b/test/closed_text_display_test.cc @@ -0,0 +1,77 @@ +/* + Copyright (C) 2024 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "lib/butler.h" +#include "lib/closed_text_display.h" +#include "lib/content_factory.h" +#include "lib/cross.h" +#include "lib/dcpomatic_time.h" +#include "lib/image.h" +#include "lib/film.h" +#include "lib/player.h" +#include "lib/text_content.h" +#include "test.h" +#include <boost/test/unit_test.hpp> +#include <memory> + + +BOOST_AUTO_TEST_CASE(closed_text_display_test1) +{ + auto text = content_factory("test/data/frames.srt"); + auto film = new_test_film("closed_text_display_test1", text); + + DCPTextTrack track("test", dcp::LanguageTag("de-DE")); + text[0]->text[0]->set_type(TextType::CLOSED_CAPTION); + text[0]->text[0]->set_dcp_track(track); + text[0]->text[0]->set_use(true); + + Player player(film, Image::Alignment::COMPACT); + auto butler = std::make_shared<Butler>( + film, player, AudioMapping(), 2, boost::bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::DISABLED + ); + + auto await_butler = [butler]() { + while (butler->video_frames_in_buffer() < 4) { + dcpomatic_sleep_seconds(1); + } + }; + + await_butler(); + + ClosedTextDisplay display; + display.set_butler(butler); + + display.update(dcpomatic::DCPTime::from_frames(2, 24), track); + BOOST_CHECK(display.current() == std::vector<std::string>{ "2" }); + + butler->seek({}, true); + await_butler(); + display.update(dcpomatic::DCPTime::from_frames(0, 24), track); + BOOST_CHECK(display.current() == std::vector<std::string>{ "0" }); + + display.clear(); + BOOST_CHECK(display.current().empty()); + + butler->seek(dcpomatic::DCPTime::from_frames(100, 24), true); + display.update(dcpomatic::DCPTime::from_frames(100, 24), track); + BOOST_CHECK(display.current().empty()); +} + diff --git a/test/wscript b/test/wscript index cd23badc0..a13b9fa89 100644 --- a/test/wscript +++ b/test/wscript @@ -63,6 +63,7 @@ def build(bld): cinema_sound_processor_test.cc client_server_test.cc closed_caption_test.cc + closed_text_display_test.cc collator_test.cc colour_conversion_test.cc config_test.cc |
