From 000276988f21e05191cca87d3a010506b477d274 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 28 Apr 2022 21:13:23 +0300 Subject: [PATCH] Add hash_string_test2 --- test/Jamfile.v2 | 1 + test/hash_string_test2.cpp | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 test/hash_string_test2.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index c46e8ff..a5175e1 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -86,3 +86,4 @@ explicit container_hash/hash_no_generic_float ; build-project ../examples ; run hash_reference_values.cpp ; +run hash_string_test2.cpp ; diff --git a/test/hash_string_test2.cpp b/test/hash_string_test2.cpp new file mode 100644 index 0000000..abca666 --- /dev/null +++ b/test/hash_string_test2.cpp @@ -0,0 +1,34 @@ +// Copyright 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include +#include +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) +#include +#endif + +// Test whether the hash values of a string and a +// string_view that refers to it match. This is +// important for unordered heterogeneous lookups. + +template std::size_t hv( T const& t ) +{ + return boost::hash()( t ); +} + +int main() +{ + std::string s( "Test." ); + + BOOST_TEST_EQ( hv( s ), hv( boost::string_view( s ) ) ); + +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) + BOOST_TEST_EQ( hv( s ), hv( std::string_view( s ) ) ); +#endif + + return boost::report_errors(); +}