Reuse code for plain and shared in ptr cast tests

This commit is contained in:
Karolin Varner
2015-12-17 12:35:14 +01:00
parent f3279d24b4
commit 6d5f554baa

View File

@@ -104,15 +104,9 @@ bool check_const_pointer_cast(const BasePtr &ptr)
const_cast<const base*>(const_cast<base*>(boost::get_pointer(ptr)));
}
}
int main()
template <class BasePtr>
void check_all_casts(const BasePtr &ptr)
{
{
// Try casts with shared_ptr
boost::shared_ptr<base> ptr(new derived);
#if !defined( BOOST_NO_RTTI )
BOOST_TEST( check_dynamic_pointer_cast( ptr ) );
#endif
@@ -120,17 +114,15 @@ int main()
BOOST_TEST( check_const_pointer_cast( ptr ) );
}
{
// Try casts with raw pointer
boost::scoped_ptr<base> ptr(new derived);
#if !defined( BOOST_NO_RTTI )
BOOST_TEST( check_dynamic_pointer_cast( ptr.get() ) );
#endif
BOOST_TEST( check_static_pointer_cast( ptr.get() ) );
BOOST_TEST( check_const_pointer_cast( ptr.get() ) );
}
int main()
{
boost::shared_ptr<base> boost_shared(new derived);
base *plain = boost_shared.get();
check_all_casts(boost_shared);
check_all_casts(plain);
return boost::report_errors();
}