From 0cdad6421db88215831d5d46b2316461fe843daa Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 20 Jun 2017 22:07:12 +0300 Subject: [PATCH] Add shared_ptr_fn_test --- test/Jamfile.v2 | 2 ++ test/shared_ptr_fn_test.cpp | 43 +++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 test/shared_ptr_fn_test.cpp 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(); +}