diff --git a/test/Jamfile b/test/Jamfile index f265e40..adb9960 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -407,3 +407,4 @@ run wp_hash_test2.cpp ; run wp_unordered_test.cpp ; run owner_hash_test.cpp ; +run sp_unordered_test.cpp ; diff --git a/test/sp_unordered_test.cpp b/test/sp_unordered_test.cpp new file mode 100644 index 0000000..5d8ec9b --- /dev/null +++ b/test/sp_unordered_test.cpp @@ -0,0 +1,51 @@ +// Copyright 2011, 2020 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_CXX11_HDR_UNORDERED_SET) + +int main() {} + +#else + +#include + +int main() +{ + std::unordered_set< boost::shared_ptr, boost::owner_hash< boost::shared_ptr >, boost::owner_equal_to< boost::shared_ptr > > set; + + boost::shared_ptr p1( (int*)0 ); + boost::shared_ptr p2( p1 ); + boost::shared_ptr p3( p1 ); + + set.insert( p1 ); + set.insert( p2 ); + set.insert( p3 ); + + BOOST_TEST_EQ( set.size(), 1 ); + + boost::shared_ptr p4( (int*)0 ); + + set.insert( p4 ); + + BOOST_TEST_EQ( set.size(), 2 ); + + BOOST_TEST_EQ( set.count( p1 ), 1 ); + BOOST_TEST_EQ( set.count( p2 ), 1 ); + BOOST_TEST_EQ( set.count( p3 ), 1 ); + BOOST_TEST_EQ( set.count( p4 ), 1 ); + + boost::shared_ptr p5( (int*)0 ); + + BOOST_TEST_EQ( set.count( p5 ), 0 ); + + return boost::report_errors(); +} + +#endif // #if defined(BOOST_NO_CXX11_HDR_UNORDERED_SET)