diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1259c75..454eb5e 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -88,3 +88,5 @@ build-project ../examples ; run detail_is_range_test.cpp ; run detail_is_contiguous_range_test.cpp ; run detail_is_unordered_range_test.cpp ; + +run hash_forward_list_test.cpp ; diff --git a/test/hash_forward_list_test.cpp b/test/hash_forward_list_test.cpp new file mode 100644 index 0000000..e340586 --- /dev/null +++ b/test/hash_forward_list_test.cpp @@ -0,0 +1,55 @@ +// Copyright 2021 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_NO_CXX11_HDR_FORWARD_LIST) + +BOOST_PRAGMA_MESSAGE( "Test skipped, BOOST_NO_CXX11_HDR_FORWARD_LIST is defined" ) +int main() {} + +#else + +#include + +template void test() +{ + typedef std::forward_list list; + typedef boost::hash hash; + + int const N = 32; + + std::size_t h[ N ]; + + list 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.push_front( T() ); + } +} + +int main() +{ + test(); + test(); + test(); + test< std::forward_list >(); + + return boost::report_errors(); +} + +#endif