From 1fb41a72efd1736a8b91933c06b120611fc17f6c Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 15 Sep 2022 16:48:18 +0300 Subject: [PATCH] Add hash_multiset_test --- test/Jamfile.v2 | 2 ++ test/hash_multiset_test.cpp | 46 +++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 test/hash_multiset_test.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index fe5e175..551cffb 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -86,3 +86,5 @@ run hash_vector_test2.cpp ; run hash_string_test3.cpp ; run hash_string_test4.cpp ; + +run hash_multiset_test.cpp ; diff --git a/test/hash_multiset_test.cpp b/test/hash_multiset_test.cpp new file mode 100644 index 0000000..c9c9e3c --- /dev/null +++ b/test/hash_multiset_test.cpp @@ -0,0 +1,46 @@ +// Copyright 2021, 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#if defined(__GNUC__) && __GNUC__ == 8 +# pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + +#include +#include +#include + +template void test() +{ + typedef std::multiset set; + typedef boost::hash hash; + + int const N = 32; + + std::size_t h[ N ]; + + set v; + + for( int i = 0; i < N; ++i ) + { + h[ i ] = hash()( v ); + + BOOST_TEST_EQ( h[ i ], hash()( v ) ); + + for( int j = 0; j < i; ++j ) + { + BOOST_TEST_NE( h[ j ], h[ i ] ); + } + + v.insert( T() ); + } +} + +int main() +{ + test(); + test(); + test(); + + return boost::report_errors(); +}