diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-01-29 21:47:38 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-03-24 00:29:31 +0100 |
| commit | 0322c4604bf79c11a99dcd929a6f74685a0a4e31 (patch) | |
| tree | c0adfa69e3f931a47c9096646f73ddb796fa42e3 /test | |
| parent | 178b13ae534bdb75bd6cacf90dc5ca9f72b6a26b (diff) | |
Add LoadVariableZ.
Diffstat (limited to 'test')
| -rw-r--r-- | test/load_variable_z_test.cc | 91 | ||||
| -rw-r--r-- | test/wscript | 1 |
2 files changed, 92 insertions, 0 deletions
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 <cth@carlh.net> + + 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 <http://www.gnu.org/licenses/>. + + 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 <libxml++/libxml++.h> +LIBDCP_ENABLE_WARNINGS +#include <boost/test/unit_test.hpp> + + +using std::string; + + +static +dcp::LoadVariableZ +create(string id, string content) +{ + cxml::Document doc("LoadVariableZ"); + doc.read_string(dcp::String::compose("<LoadVariableZ ID=\"%1\">%2</LoadVariableZ>", id, content)); + return dcp::LoadVariableZ(dynamic_cast<xmlpp::Element const*>(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("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<LoadVariableZ ID=\"foo\">%1</LoadVariableZ>\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), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<LoadVariableZ ID=\"bar\">-1.4 4.6:2 9.1:9</LoadVariableZ>\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), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<LoadVariableZ ID=\"baz\">-0.6:2 4.2:9 5.0</LoadVariableZ>\n"); +} diff --git a/test/wscript b/test/wscript index 86ccbca6..5e94b1f7 100644 --- a/test/wscript +++ b/test/wscript @@ -91,6 +91,7 @@ def build(bld): h_align_test.cc interop_load_font_test.cc interop_subtitle_test.cc + load_variable_z_test.cc local_time_test.cc long_filenames_test.cc make_digest_test.cc |
