diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 6fdaf3f..7fe5067 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -94,3 +94,5 @@ run hash_unordered_range_test.cpp ; run hash_unordered_multiset_test.cpp ; run hash_unordered_multimap_test.cpp ; + +run hash_unordered_set_test.cpp ; diff --git a/test/hash_unordered_set_test.cpp b/test/hash_unordered_set_test.cpp new file mode 100644 index 0000000..73e90d6 --- /dev/null +++ b/test/hash_unordered_set_test.cpp @@ -0,0 +1,56 @@ +// 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 +#include +#include + +#if defined(BOOST_NO_CXX11_HDR_UNORDERED_SET) + +BOOST_PRAGMA_MESSAGE( "Test skipped, BOOST_NO_CXX11_HDR_UNORDERED_SET is defined" ) +int main() {} + +#else + +#include + +template std::size_t hv( T const& x ) +{ + return boost::hash()( x ); +} + +template void test() +{ + typedef std::unordered_set set; + + int const N = 256; + + set v; + + boost::detail::splitmix64 rng; + + for( int i = 0; i < N; ++i ) + { + BOOST_TEST_EQ( hv( v ), boost::hash_unordered_range( v.begin(), v.end() ) ); + v.insert( static_cast( rng() ) ); + } +} + +int main() +{ + test(); + test(); + test(); + test(); + + return boost::report_errors(); +} + +#endif