diff --git a/src/libraries/turtle/log.hpp b/src/libraries/turtle/log.hpp index 911bdb3..00036eb 100644 --- a/src/libraries/turtle/log.hpp +++ b/src/libraries/turtle/log.hpp @@ -14,9 +14,13 @@ #include #include #include +#include namespace boost { + template< typename T > class shared_ptr; + template< typename T > class weak_ptr; + namespace assign_detail { template< typename T > class generic_list; @@ -173,6 +177,11 @@ namespace detail2 return detail2::formatter< T >( t ); } + template< typename T > + stream& operator<<( stream& s, const std::auto_ptr< T >& t ) + { + return s << mock::format( t.get() ); + } template< typename T1, typename T2 > stream& operator<<( stream& s, const std::pair< T1, T2 >& p ) { @@ -247,6 +256,16 @@ namespace detail { return s << mock::format( t.get() ); } + template< typename T > + stream& operator<<( stream& s, boost::shared_ptr< T > t ) + { + return s << mock::format( t.get() ); + } + template< typename T > + stream& operator<<( stream& s, boost::weak_ptr< T > t ) + { + return s << mock::format( t.lock() ); + } template< typename T > BOOST_DEDUCED_TYPENAME boost::enable_if< diff --git a/src/tests/turtle_test/log_with_conversions_test.cpp b/src/tests/turtle_test/log_with_conversions_test.cpp index 695e8a6..70fc9b8 100644 --- a/src/tests/turtle_test/log_with_conversions_test.cpp +++ b/src/tests/turtle_test/log_with_conversions_test.cpp @@ -9,6 +9,8 @@ #define MOCK_USE_CONVERSIONS #include #include +#include +#include #include #include #include @@ -359,6 +361,24 @@ BOOST_AUTO_TEST_CASE( std_pairs_are_serialized_with_conversions ) BOOST_CHECK_EQUAL( "(3,42)", to_string( std::make_pair( 3, 42.f ) ) ); } +BOOST_AUTO_TEST_CASE( std_auto_ptr_are_serialized_with_conversions ) +{ + BOOST_CHECK_NE( "?", to_string( std::auto_ptr< int >() ) ); + BOOST_CHECK_NE( "?", to_string( std::auto_ptr< int >( new int( 42 ) ) ) ); +} + +BOOST_AUTO_TEST_CASE( boost_shared_ptr_are_serialized_with_conversions ) +{ + BOOST_CHECK_NE( "?", to_string( boost::shared_ptr< int >() ) ); + BOOST_CHECK_NE( "?", to_string( boost::shared_ptr< int >( new int( 42 ) ) ) ); +} + +BOOST_AUTO_TEST_CASE( boost_weak_ptr_are_serialized_with_conversions ) +{ + BOOST_CHECK_NE( "?", to_string( boost::weak_ptr< int >( boost::shared_ptr< int >() ) ) ); + BOOST_CHECK_NE( "?", to_string( boost::weak_ptr< int >( boost::shared_ptr< int >( new int( 42 ) ) ) ) ); +} + BOOST_AUTO_TEST_CASE( std_deques_are_serialized_with_conversions ) { std::deque< int > d; diff --git a/src/tests/turtle_test/log_without_conversions_test.cpp b/src/tests/turtle_test/log_without_conversions_test.cpp index 95a801c..f02a99f 100644 --- a/src/tests/turtle_test/log_without_conversions_test.cpp +++ b/src/tests/turtle_test/log_without_conversions_test.cpp @@ -8,6 +8,8 @@ #include #include +#include +#include #include #include #include @@ -355,6 +357,24 @@ BOOST_AUTO_TEST_CASE( std_pairs_are_serialized_without_conversions ) BOOST_CHECK_EQUAL( "(3,42)", to_string( std::make_pair( 3, 42.f ) ) ); } +BOOST_AUTO_TEST_CASE( std_auto_ptr_are_serialized_without_conversions ) +{ + BOOST_CHECK_NE( "?", to_string( std::auto_ptr< int >() ) ); + BOOST_CHECK_NE( "?", to_string( std::auto_ptr< int >( new int( 42 ) ) ) ); +} + +BOOST_AUTO_TEST_CASE( boost_shared_ptr_are_serialized_without_conversions ) +{ + BOOST_CHECK_NE( "?", to_string( boost::shared_ptr< int >() ) ); + BOOST_CHECK_NE( "?", to_string( boost::shared_ptr< int >( new int( 42 ) ) ) ); +} + +BOOST_AUTO_TEST_CASE( boost_weak_ptr_are_serialized_without_conversions ) +{ + BOOST_CHECK_NE( "?", to_string( boost::weak_ptr< int >( boost::shared_ptr< int >() ) ) ); + BOOST_CHECK_NE( "?", to_string( boost::weak_ptr< int >( boost::shared_ptr< int >( new int( 42 ) ) ) ) ); +} + BOOST_AUTO_TEST_CASE( std_deques_are_serialized_without_conversions ) { std::deque< int > d;