mirror of
https://github.com/boostorg/smart_ptr.git
synced 2025-08-02 06:04:27 +02:00
Add more unique_ptr tests.
[SVN r81776]
This commit is contained in:
@@ -95,6 +95,60 @@ int main()
|
|||||||
p2 = std::unique_ptr<X>( new X );
|
p2 = std::unique_ptr<X>( new X );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
|
p2 = std::unique_ptr<X>( new X );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
|
p2.reset();
|
||||||
|
BOOST_TEST( X::instances == 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
BOOST_TEST( X::instances == 0 );
|
||||||
|
|
||||||
|
std::unique_ptr<X> p( new X );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
|
boost::shared_ptr<X const> p2( std::move( p ) );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
BOOST_TEST( p.get() == 0 );
|
||||||
|
|
||||||
|
boost::shared_ptr<X const> 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<X>( new X );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
|
p2 = std::unique_ptr<X>( new X );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
|
p2.reset();
|
||||||
|
BOOST_TEST( X::instances == 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
BOOST_TEST( X::instances == 0 );
|
||||||
|
|
||||||
|
std::unique_ptr<X> p( new X );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
|
boost::shared_ptr<void> 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<X>( new X );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
|
p2 = std::unique_ptr<X>( new X );
|
||||||
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
p2.reset();
|
p2.reset();
|
||||||
BOOST_TEST( X::instances == 0 );
|
BOOST_TEST( X::instances == 0 );
|
||||||
}
|
}
|
||||||
@@ -115,6 +169,9 @@ int main()
|
|||||||
p2 = std::unique_ptr<Y, YD>( new Y, YD() );
|
p2 = std::unique_ptr<Y, YD>( new Y, YD() );
|
||||||
BOOST_TEST( Y::instances == 1 );
|
BOOST_TEST( Y::instances == 1 );
|
||||||
|
|
||||||
|
p2 = std::unique_ptr<Y, YD>( new Y, YD() );
|
||||||
|
BOOST_TEST( Y::instances == 1 );
|
||||||
|
|
||||||
p2.reset();
|
p2.reset();
|
||||||
BOOST_TEST( Y::instances == 0 );
|
BOOST_TEST( Y::instances == 0 );
|
||||||
}
|
}
|
||||||
@@ -137,6 +194,9 @@ int main()
|
|||||||
p2 = std::unique_ptr<Y, YD&>( new Y, yd );
|
p2 = std::unique_ptr<Y, YD&>( new Y, yd );
|
||||||
BOOST_TEST( Y::instances == 1 );
|
BOOST_TEST( Y::instances == 1 );
|
||||||
|
|
||||||
|
p2 = std::unique_ptr<Y, YD&>( new Y, yd );
|
||||||
|
BOOST_TEST( Y::instances == 1 );
|
||||||
|
|
||||||
p2.reset();
|
p2.reset();
|
||||||
BOOST_TEST( Y::instances == 0 );
|
BOOST_TEST( Y::instances == 0 );
|
||||||
}
|
}
|
||||||
@@ -159,6 +219,9 @@ int main()
|
|||||||
p2 = std::unique_ptr<Y, YD const&>( new Y, yd );
|
p2 = std::unique_ptr<Y, YD const&>( new Y, yd );
|
||||||
BOOST_TEST( Y::instances == 1 );
|
BOOST_TEST( Y::instances == 1 );
|
||||||
|
|
||||||
|
p2 = std::unique_ptr<Y, YD const&>( new Y, yd );
|
||||||
|
BOOST_TEST( Y::instances == 1 );
|
||||||
|
|
||||||
p2.reset();
|
p2.reset();
|
||||||
BOOST_TEST( Y::instances == 0 );
|
BOOST_TEST( Y::instances == 0 );
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user