diff --git a/test/sp_unique_ptr_test2.cpp b/test/sp_unique_ptr_test2.cpp index 9964e3c..cc67fa0 100644 --- a/test/sp_unique_ptr_test2.cpp +++ b/test/sp_unique_ptr_test2.cpp @@ -84,16 +84,63 @@ int main() { BOOST_TEST( Y::instances == 0 ); - std::unique_ptr p( new Y ); - BOOST_TEST( Y::instances == 1 ); + { + std::unique_ptr p( new Y ); + BOOST_TEST( Y::instances == 1 ); - boost::shared_ptr p2( std::move( p ) ); - BOOST_TEST( Y::instances == 1 ); - BOOST_TEST( p.get() == 0 ); - BOOST_TEST( p.get_deleter().moved_ ); + boost::shared_ptr p2( std::move( p ) ); - p2.reset(); - BOOST_TEST( Y::instances == 0 ); + BOOST_TEST( Y::instances == 1 ); + BOOST_TEST( p.get() == 0 ); + BOOST_TEST( p.get_deleter().moved_ ); + + p2.reset(); + BOOST_TEST( Y::instances == 0 ); + } + + { + std::unique_ptr p( new Y ); + BOOST_TEST( Y::instances == 1 ); + + boost::shared_ptr p2( std::move( p ) ); + + BOOST_TEST( Y::instances == 1 ); + BOOST_TEST( p.get() == 0 ); + BOOST_TEST( p.get_deleter().moved_ ); + + p2.reset(); + BOOST_TEST( Y::instances == 0 ); + } + + { + std::unique_ptr p( new Y ); + BOOST_TEST( Y::instances == 1 ); + + boost::shared_ptr p2; + p2 = std::move( p ); + + BOOST_TEST( Y::instances == 1 ); + BOOST_TEST( p.get() == 0 ); + BOOST_TEST( p.get_deleter().moved_ ); + + p2.reset(); + BOOST_TEST( Y::instances == 0 ); + } + + { + std::unique_ptr p( new Y ); + BOOST_TEST( Y::instances == 1 ); + + boost::shared_ptr p2( new int(0) ); + p2 = std::move( p ); + + BOOST_TEST( Y::instances == 1 ); + BOOST_TEST( p.get() == 0 ); + BOOST_TEST( p.get_deleter().moved_ ); + + p2.reset(); + BOOST_TEST( Y::instances == 0 ); + } return boost::report_errors(); }