diff --git a/test/Jamfile b/test/Jamfile index 40c6328..7029458 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -81,6 +81,7 @@ run append_character_cx.cpp ; run append_floating_point_cx.cpp ; run append_vector_cx.cpp ; run append_string_cx.cpp ; +run append_array_cx.cpp ; # non-cryptographic diff --git a/test/append_array.cpp b/test/append_array.cpp index 9d56157..9f3a236 100644 --- a/test/append_array.cpp +++ b/test/append_array.cpp @@ -1,4 +1,4 @@ -// Copyright 2017, 2024 Peter Dimov. +// Copyright 2017, 2024 Peter Dimov // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt diff --git a/test/append_array_cx.cpp b/test/append_array_cx.cpp new file mode 100644 index 0000000..f799272 --- /dev/null +++ b/test/append_array_cx.cpp @@ -0,0 +1,45 @@ +// Copyright 2017, 2024 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +#if defined(BOOST_MSVC) && BOOST_MSVC < 1920 +# pragma warning(disable: 4307) // integral constant overflow +#endif + +template +BOOST_CXX14_CONSTEXPR typename Hash::result_type test( T const& v ) +{ + Hash h; + Flavor f{}; + + hash_append( h, f, v ); + + return h.result(); +} + +#define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) + +#if defined(BOOST_NO_CXX14_CONSTEXPR) || ( defined(BOOST_GCC) && BOOST_GCC < 60000 ) + +# define TEST_EQ(x1, x2) BOOST_TEST_EQ(x1, x2) + +#else + +# define TEST_EQ(x1, x2) BOOST_TEST_EQ(x1, x2); STATIC_ASSERT(x1 == x2) + +#endif + +int main() +{ + using namespace boost::hash2; + + TEST_EQ( (test({ 1, 2, 3, 4 })), 1041505217 ); + TEST_EQ( (test({ 1, 2, 3, 4 })), 3216558841 ); + + return boost::report_errors(); +}