diff --git a/test/sp_unique_ptr_test.cpp b/test/sp_unique_ptr_test.cpp index 7656e75..69bbaf9 100644 --- a/test/sp_unique_ptr_test.cpp +++ b/test/sp_unique_ptr_test.cpp @@ -95,6 +95,60 @@ int main() p2 = std::unique_ptr( new X ); BOOST_TEST( X::instances == 1 ); + p2 = std::unique_ptr( new X ); + BOOST_TEST( X::instances == 1 ); + + p2.reset(); + BOOST_TEST( X::instances == 0 ); + } + + { + BOOST_TEST( X::instances == 0 ); + + std::unique_ptr p( new X ); + BOOST_TEST( X::instances == 1 ); + + boost::shared_ptr p2( std::move( p ) ); + BOOST_TEST( X::instances == 1 ); + BOOST_TEST( p.get() == 0 ); + + boost::shared_ptr p3 = p2->shared_from_this(); + BOOST_TEST( p2 == p3 ); + BOOST_TEST( !(p2 < p3) && !(p3 < p2) ); + + p2.reset(); + p3.reset(); + BOOST_TEST( X::instances == 0 ); + + p2 = std::unique_ptr( new X ); + BOOST_TEST( X::instances == 1 ); + + p2 = std::unique_ptr( new X ); + BOOST_TEST( X::instances == 1 ); + + p2.reset(); + BOOST_TEST( X::instances == 0 ); + } + + { + BOOST_TEST( X::instances == 0 ); + + std::unique_ptr p( new X ); + BOOST_TEST( X::instances == 1 ); + + boost::shared_ptr p2( std::move( p ) ); + BOOST_TEST( X::instances == 1 ); + BOOST_TEST( p.get() == 0 ); + + p2.reset(); + BOOST_TEST( X::instances == 0 ); + + p2 = std::unique_ptr( new X ); + BOOST_TEST( X::instances == 1 ); + + p2 = std::unique_ptr( new X ); + BOOST_TEST( X::instances == 1 ); + p2.reset(); BOOST_TEST( X::instances == 0 ); } @@ -115,6 +169,9 @@ int main() p2 = std::unique_ptr( new Y, YD() ); BOOST_TEST( Y::instances == 1 ); + p2 = std::unique_ptr( new Y, YD() ); + BOOST_TEST( Y::instances == 1 ); + p2.reset(); BOOST_TEST( Y::instances == 0 ); } @@ -137,6 +194,9 @@ int main() p2 = std::unique_ptr( new Y, yd ); BOOST_TEST( Y::instances == 1 ); + p2 = std::unique_ptr( new Y, yd ); + BOOST_TEST( Y::instances == 1 ); + p2.reset(); BOOST_TEST( Y::instances == 0 ); } @@ -159,6 +219,9 @@ int main() p2 = std::unique_ptr( new Y, yd ); BOOST_TEST( Y::instances == 1 ); + p2 = std::unique_ptr( new Y, yd ); + BOOST_TEST( Y::instances == 1 ); + p2.reset(); BOOST_TEST( Y::instances == 0 ); }