diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-04-08 21:14:19 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-04-08 21:14:19 +0100 |
| commit | d9d117d8dd56322fed12f8e12c574cf08fe22500 (patch) | |
| tree | a10caad60c43a8adb58b56a694681306f1236919 | |
| parent | b785a1a76e0863fc98d0acc98a098d328929d493 (diff) | |
Fix previous and add unit test for Key::hex.
| -rw-r--r-- | src/key.cc | 5 | ||||
| -rw-r--r-- | src/key.h | 6 | ||||
| -rw-r--r-- | test/key_test.cc | 48 | ||||
| -rw-r--r-- | test/wscript | 1 |
4 files changed, 55 insertions, 5 deletions
@@ -90,6 +90,7 @@ Key::operator= (Key const & other) return *this; } + _length = other._length; memcpy (_value, other._value, _length); return *this; } @@ -102,9 +103,9 @@ Key::hex () const char* p = buffer; for (int i = 0; i < _length; ++i) { #ifdef LIBDCP_WINDOWS - __mingw_snprintf (p, 3, "%02hhx", buffer[i]); + __mingw_snprintf (p, 3, "%02hhx", _value[i]); #else - snprintf (p, 3, "%02hhx", buffer[i]); + snprintf (p, 3, "%02hhx", _value[i]); #endif p += 2; } @@ -51,7 +51,7 @@ class Key { public: /** Create a new, random key */ - Key (int length = ASDCP::KeyLen); + explicit Key (int length = ASDCP::KeyLen); /** Create a Key from a raw key value */ explicit Key (uint8_t const *, int length = ASDCP::KeyLen); @@ -60,10 +60,10 @@ public: explicit Key (std::string); Key (Key const &); - ~Key (); - Key& operator= (Key const &); + ~Key (); + /** @return Raw key value */ uint8_t const * value () const { return _value; diff --git a/test/key_test.cc b/test/key_test.cc new file mode 100644 index 00000000..d0e95f8e --- /dev/null +++ b/test/key_test.cc @@ -0,0 +1,48 @@ +/* + Copyright (C) 2019 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 "key.h" +#include <boost/test/unit_test.hpp> +#include <iostream> + +using std::string; + +BOOST_AUTO_TEST_CASE (key_hex_test) +{ + dcp::Key key (string("0123456789abcdef915a9157123ba218")); + BOOST_CHECK_EQUAL (key.hex(), "0123456789abcdef915a9157123ba218"); + key = dcp::Key (string("af1a1b061389ddac62be8a19bbc52dff")); + BOOST_CHECK_EQUAL (key.hex(), "af1a1b061389ddac62be8a19bbc52dff"); + key = dcp::Key (string("af1a1b061389ddac62be8a")); + BOOST_CHECK_EQUAL (key.hex(), "af1a1b061389ddac62be8a"); +} diff --git a/test/wscript b/test/wscript index d5412b4d..5bfe5bb8 100644 --- a/test/wscript +++ b/test/wscript @@ -83,6 +83,7 @@ def build(bld): make_digest_test.cc markers_test.cc kdm_test.cc + key_test.cc raw_convert_test.cc read_dcp_test.cc read_interop_subtitle_test.cc |
