From fc329637dd1e35e8cde6d82f3131050b578b07cf Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 8 Aug 2023 23:53:42 +0200 Subject: [PATCH] Add some tests. --- test/playlist_test.cc | 98 +++++++++++++++++++++++++++++++++++++++++++ test/wscript | 1 + 2 files changed, 99 insertions(+) create mode 100644 test/playlist_test.cc diff --git a/test/playlist_test.cc b/test/playlist_test.cc new file mode 100644 index 000000000..e2b9f3ff8 --- /dev/null +++ b/test/playlist_test.cc @@ -0,0 +1,98 @@ +/* + Copyright (C) 2023 Carl Hetherington + + 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 . + +*/ + + +#include "lib/content.h" +#include "lib/content_factory.h" +#include "lib/film.h" +#include "lib/playlist.h" +#include "test.h" +#include + + +using std::shared_ptr; +using std::vector; + + +static +shared_ptr +setup(vector>& content, vector& positions, vector& lengths) +{ + for (auto i = 0; i < 3; ++i) { + content.push_back(content_factory("test/data/flat_red.png")[0]); + } + + auto film = new_test_film2("playlist_move_later_test", content); + + for (auto i: content) { + positions.push_back(i->position()); + } + + for (auto i: content) { + lengths.push_back(i->length_after_trim(film)); + } + + return film; +} + + +BOOST_AUTO_TEST_CASE(playlist_move_later_test1) +{ + vector> content; + vector positions; + vector lengths; + auto film = setup(content, positions, lengths); + + film->move_content_later(content[1]); + + auto moved_content = film->content(); + BOOST_REQUIRE_EQUAL(moved_content.size(), 3U); + + BOOST_CHECK_EQUAL(moved_content[0], content[0]); + BOOST_CHECK_EQUAL(moved_content[1], content[2]); + BOOST_CHECK_EQUAL(moved_content[2], content[1]); + + BOOST_CHECK(content[0]->position() == positions[0]); + BOOST_CHECK(content[1]->position() == positions[1] + lengths[2]); + BOOST_CHECK(content[2]->position() == positions[1]); +} + + +BOOST_AUTO_TEST_CASE(playlist_move_later_test2) +{ + vector> content; + vector positions; + vector lengths; + auto film = setup(content, positions, lengths); + + film->move_content_later(content[0]); + + auto moved_content = film->content(); + BOOST_REQUIRE_EQUAL(moved_content.size(), 3U); + + BOOST_CHECK_EQUAL(moved_content[0], content[1]); + BOOST_CHECK_EQUAL(moved_content[1], content[0]); + BOOST_CHECK_EQUAL(moved_content[2], content[2]); + + BOOST_CHECK(content[0]->position() == positions[0] + lengths[1]); + BOOST_CHECK(content[1]->position() == positions[0]); + BOOST_CHECK(content[2]->position() == positions[2]); +} + diff --git a/test/wscript b/test/wscript index ccace40e7..12cc0506f 100644 --- a/test/wscript +++ b/test/wscript @@ -123,6 +123,7 @@ def build(bld): overlap_video_test.cc pixel_formats_test.cc player_test.cc + playlist_test.cc pulldown_detect_test.cc ratio_test.cc release_notes_test.cc -- 2.30.2