summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-01-29 21:47:38 +0100
committerCarl Hetherington <cth@carlh.net>2025-03-24 00:29:31 +0100
commit0322c4604bf79c11a99dcd929a6f74685a0a4e31 (patch)
treec0adfa69e3f931a47c9096646f73ddb796fa42e3 /test
parent178b13ae534bdb75bd6cacf90dc5ca9f72b6a26b (diff)
Add LoadVariableZ.
Diffstat (limited to 'test')
-rw-r--r--test/load_variable_z_test.cc91
-rw-r--r--test/wscript1
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