mirror of
https://github.com/boostorg/smart_ptr.git
synced 2025-07-30 04:47:12 +02:00
Check use counts in make_local_shared tests
This commit is contained in:
@ -51,6 +51,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >();
|
boost::shared_ptr< X > px = boost::make_local_shared< X >();
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -73,6 +74,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared_noinit< X >();
|
boost::shared_ptr< X > px = boost::make_local_shared_noinit< X >();
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -95,6 +97,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -117,6 +120,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -139,6 +143,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -161,6 +166,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -183,6 +189,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -205,6 +212,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -227,6 +235,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6, 7 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6, 7 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -249,6 +258,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6, 7, 8 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6, 7, 8 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -271,6 +281,7 @@ int main()
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6, 7, 8, 9 );
|
boost::shared_ptr< X > px = boost::make_local_shared< X >( 1, 2, 3, 4, 5, 6, 7, 8, 9 );
|
||||||
|
BOOST_TEST( px.use_count() == 1 );
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -62,12 +62,20 @@ public:
|
|||||||
|
|
||||||
int X::instances = 0;
|
int X::instances = 0;
|
||||||
|
|
||||||
|
template<class T> static long use_count( boost::local_shared_ptr<T> const & p )
|
||||||
|
{
|
||||||
|
return boost::shared_ptr<T>( p ).use_count() - 1;
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
boost::local_shared_ptr< int > pi = boost::make_local_shared< int >();
|
boost::local_shared_ptr< int > pi = boost::make_local_shared< int >();
|
||||||
|
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
|
|
||||||
BOOST_TEST( *pi == 0 );
|
BOOST_TEST( *pi == 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,6 +89,9 @@ int main()
|
|||||||
boost::local_shared_ptr< int > pi = boost::make_local_shared< int >( 5 );
|
boost::local_shared_ptr< int > pi = boost::make_local_shared< int >( 5 );
|
||||||
|
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
|
|
||||||
BOOST_TEST( *pi == 5 );
|
BOOST_TEST( *pi == 5 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +103,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 0 );
|
BOOST_TEST( pi->v == 0 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -105,6 +118,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 0 );
|
BOOST_TEST( pi->v == 0 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -118,6 +133,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1 );
|
BOOST_TEST( pi->v == 1 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -131,6 +148,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2 );
|
BOOST_TEST( pi->v == 1+2 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -144,6 +163,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2+3 );
|
BOOST_TEST( pi->v == 1+2+3 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -157,6 +178,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2+3+4 );
|
BOOST_TEST( pi->v == 1+2+3+4 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -170,6 +193,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2+3+4+5 );
|
BOOST_TEST( pi->v == 1+2+3+4+5 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -183,6 +208,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2+3+4+5+6 );
|
BOOST_TEST( pi->v == 1+2+3+4+5+6 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -196,6 +223,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2+3+4+5+6+7 );
|
BOOST_TEST( pi->v == 1+2+3+4+5+6+7 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -209,6 +238,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2+3+4+5+6+7+8 );
|
BOOST_TEST( pi->v == 1+2+3+4+5+6+7+8 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
@ -222,6 +253,8 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST( X::instances == 1 );
|
BOOST_TEST( X::instances == 1 );
|
||||||
BOOST_TEST( pi.get() != 0 );
|
BOOST_TEST( pi.get() != 0 );
|
||||||
|
BOOST_TEST( pi.local_use_count() == 1 );
|
||||||
|
BOOST_TEST( use_count( pi ) == 1 );
|
||||||
BOOST_TEST( pi->v == 1+2+3+4+5+6+7+8+9 );
|
BOOST_TEST( pi->v == 1+2+3+4+5+6+7+8+9 );
|
||||||
|
|
||||||
pi.reset();
|
pi.reset();
|
||||||
|
Reference in New Issue
Block a user