From 0322c4604bf79c11a99dcd929a6f74685a0a4e31 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 29 Jan 2025 21:47:38 +0100 Subject: Add LoadVariableZ. --- test/load_variable_z_test.cc | 91 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 test/load_variable_z_test.cc (limited to 'test/load_variable_z_test.cc') diff --git a/test/load_variable_z_test.cc b/test/load_variable_z_test.cc new file mode 100644 index 00000000..8448480f --- /dev/null +++ b/test/load_variable_z_test.cc @@ -0,0 +1,91 @@ +/* + Copyright (C) 2025 Carl Hetherington + + This file is part of libdcp. + + libdcp 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. + + libdcp 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 libdcp. If not, see . + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. +*/ + + +#include "load_variable_z.h" +#include "warnings.h" +#include "compose.hpp" +LIBDCP_DISABLE_WARNINGS +#include +LIBDCP_ENABLE_WARNINGS +#include + + +using std::string; + + +static +dcp::LoadVariableZ +create(string id, string content) +{ + cxml::Document doc("LoadVariableZ"); + doc.read_string(dcp::String::compose("%2", id, content)); + return dcp::LoadVariableZ(dynamic_cast(doc.node())); + +} + + +static +string +xml(dcp::LoadVariableZ z) +{ + xmlpp::Document doc; + z.as_xml(doc.create_root_node("LoadVariableZ")); + return doc.write_to_string(); +} + + +BOOST_AUTO_TEST_CASE(variable_z_test) +{ + for (auto bad: { "", "-4.2 hello", "1:2:3", "-6.4:0", "-6.2:" }) { + dcp::LoadVariableZ test = create("foo", bad); + BOOST_CHECK_MESSAGE(!test.valid(), bad); + BOOST_CHECK_EQUAL(xml(test), dcp::String::compose("\n%1\n", bad)); + } + + dcp::LoadVariableZ good = create("bar", " -1.4 4.6:2 \t 9.1:9\n"); + BOOST_CHECK(good.valid()); + BOOST_CHECK_EQUAL(good.positions().size(), 3U); + BOOST_CHECK_CLOSE(good.positions()[0].position, -1.4, 0.1); + BOOST_CHECK_EQUAL(good.positions()[0].duration, 1); + BOOST_CHECK_CLOSE(good.positions()[1].position, 4.6, 0.1); + BOOST_CHECK_EQUAL(good.positions()[1].duration, 2); + BOOST_CHECK_CLOSE(good.positions()[2].position, 9.1, 0.1); + BOOST_CHECK_EQUAL(good.positions()[2].duration, 9); + BOOST_CHECK_EQUAL(xml(good), "\n-1.4 4.6:2 9.1:9\n"); + + dcp::LoadVariableZ made("baz"); + BOOST_CHECK(!made.valid()); + made.set_positions({{-0.6, 2}, {4.2, 9}, {5, 1}}); + BOOST_CHECK_EQUAL(xml(made), "\n-0.6:2 4.2:9 5.0\n"); +} -- cgit v1.2.3