diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3ce07f4..010fea3 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -218,6 +218,8 @@ import testing ; [ run atomic_sp_constexpr_test.cpp ] + [ run shared_ptr_fn_test.cpp ] + [ run get_deleter_test2.cpp ] [ run get_deleter_test3.cpp ] [ run get_deleter_array_test2.cpp ] diff --git a/test/shared_ptr_fn_test.cpp b/test/shared_ptr_fn_test.cpp new file mode 100644 index 0000000..dfbdf18 --- /dev/null +++ b/test/shared_ptr_fn_test.cpp @@ -0,0 +1,43 @@ +// +// shared_ptr_fn_test.cpp +// +// Copyright 2017 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt +// + +#include +#include +#include + +static void f() +{ +} + +struct null_deleter +{ + template void operator()( Y* ) {} +}; + +int main() +{ + boost::shared_ptr pf( f, null_deleter() ); + + BOOST_TEST( pf.get() == f ); + BOOST_TEST_EQ( pf.use_count(), 1 ); + BOOST_TEST( boost::get_deleter( pf ) != 0 ); + + boost::weak_ptr wp( pf ); + + BOOST_TEST( wp.lock().get() == f ); + BOOST_TEST_EQ( wp.use_count(), 1 ); + + pf.reset(); + + BOOST_TEST( wp.lock().get() == 0 ); + BOOST_TEST_EQ( wp.use_count(), 0 ); + + return boost::report_errors(); +}