diff --git a/src/libraries/turtle/expectation.hpp b/src/libraries/turtle/expectation.hpp index aa5f9c1..6498cd9 100644 --- a/src/libraries/turtle/expectation.hpp +++ b/src/libraries/turtle/expectation.hpp @@ -54,9 +54,9 @@ namespace mock : impl_( new expectation_impl( root, name ) ) {} - void set_name( const std::string& name ) + void tag( const std::string& name ) { - impl_->set_name( name ); + impl_->tag( name ); } void set_parent( node& parent ) { @@ -122,7 +122,7 @@ namespace mock context(), it->file(), it->line() ); } - void set_name( const std::string& name ) + void tag( const std::string& name ) { name_ = name; } diff --git a/src/libraries/turtle/mock.hpp b/src/libraries/turtle/mock.hpp index d28c33a..4ee6b52 100644 --- a/src/libraries/turtle/mock.hpp +++ b/src/libraries/turtle/mock.hpp @@ -99,7 +99,7 @@ namespace detail template< typename E > void tag( E& e, const object& o, const std::string& type_name, const std::string& name ) { - e.set_name( type_name + o.tag() + "::" + name ); + e.tag( type_name + o.tag() + "::" + name ); } template< typename E, typename T > void tag( E& e, const T&, const std::string& type_name, const std::string& name, @@ -107,13 +107,13 @@ namespace detail BOOST_DEDUCED_TYPENAME boost::is_base_of< object, T >::type >::type* = 0 ) { - e.set_name( type_name + "::" + name ); + e.tag( type_name + "::" + name ); } template< typename E > E& configure( typename E::expectation_tag, const std::string& name, E& e ) { - e.set_name( name ); + e.tag( name ); return e; } template< typename E, typename T > @@ -129,6 +129,12 @@ namespace detail { typedef T base_type; }; + + inline std::string name( const std::string& object, + const std::string& tag ) + { + return tag == "_" ? object : tag; + } } } @@ -141,7 +147,8 @@ namespace detail #define MOCK_MOCKER(o, t) \ mock::detail::configure( mock::detail::ref( o ).exp##t, \ - BOOST_PP_STRINGIZE(t), mock::detail::ref( o ) ) + mock::detail::name( BOOST_PP_STRINGIZE(o), BOOST_PP_STRINGIZE(t) ), \ + mock::detail::ref( o ) ) #define MOCK_METHOD_ARG(z, n, arg) BOOST_PP_COMMA_IF(n) \ BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(n)),_type) \ diff --git a/src/tests/turtle_test/mock_test.cpp b/src/tests/turtle_test/mock_test.cpp index 48fc094..74e18c5 100644 --- a/src/tests/turtle_test/mock_test.cpp +++ b/src/tests/turtle_test/mock_test.cpp @@ -193,3 +193,9 @@ BOOST_AUTO_TEST_CASE( custom_mock_object_without_macros_is_named ) my_custom_mock_object m; BOOST_CHECK_EQUAL( "my_custom_mock_object::my_method", to_string( MOCK_MOCKER( m, my_method ) ) ); } + +BOOST_AUTO_TEST_CASE( mock_functor_is_named ) +{ + MOCK_FUNCTOR( void() ) f; + BOOST_CHECK_EQUAL( "f", to_string( MOCK_MOCKER( f, _ ) ) ); +}