Factorized MOCK_TYPE_NAME

git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@725 860be788-9bd5-4423-9f1e-828f051e677b
This commit is contained in:
mat007 2014-04-26 07:06:58 +00:00
parent 30dadf0c61
commit cbb4683dde
4 changed files with 8 additions and 6 deletions

View file

@ -15,7 +15,7 @@ namespace
template< typename T > template< typename T >
std::string to_string( const T& ) std::string to_string( const T& )
{ {
return boost::lexical_cast< std::string >( mock::detail::type_name( BOOST_SP_TYPEID( T ) ) ); return boost::lexical_cast< std::string >( MOCK_TYPE_NAME(T) );
} }
} }
@ -111,7 +111,7 @@ BOOST_AUTO_TEST_CASE( name_of_type_in_unnamed_inner_namespace_is_extracted )
BOOST_AUTO_TEST_CASE( name_of_local_type_is_extracted ) BOOST_AUTO_TEST_CASE( name_of_local_type_is_extracted )
{ {
struct my_local_type {}; struct my_local_type {};
BOOST_CHECK_EQUAL( "my_local_type", boost::lexical_cast< std::string >( mock::detail::type_name( BOOST_SP_TYPEID( my_local_type ) ) ) ); BOOST_CHECK_EQUAL( "my_local_type", boost::lexical_cast< std::string >( MOCK_TYPE_NAME(my_local_type) ) );
} }
namespace namespace

View file

@ -32,7 +32,7 @@ namespace
{ {
fixture() fixture()
{ {
mock::detail::configure( o, e, "instance", mock::detail::type_name( BOOST_SP_TYPEID( o ) ), "name" ); mock::detail::configure( o, e, "instance", MOCK_TYPE_NAME(o), "name" );
} }
object o; object o;
mock::detail::function< void() > e; mock::detail::function< void() > e;
@ -72,7 +72,7 @@ BOOST_FIXTURE_TEST_CASE( an_object_is_assignable_by_sharing_its_state, mock_erro
mock::detail::function< void() > e; mock::detail::function< void() > e;
{ {
object o2; object o2;
mock::detail::configure( o2, e, "instance", mock::detail::type_name( BOOST_SP_TYPEID( o2 ) ), "name" ); mock::detail::configure( o2, e, "instance", MOCK_TYPE_NAME(o2), "name" );
e.expect().once(); e.expect().once();
o1 = o2; o1 = o2;
CHECK_ERROR( CHECK_ERROR(
@ -92,7 +92,7 @@ BOOST_FIXTURE_TEST_CASE( an_object_is_copiable_by_sharing_its_state, mock_error_
std::auto_ptr< object > o2( new object ); std::auto_ptr< object > o2( new object );
const object o1( *o2 ); const object o1( *o2 );
mock::detail::function< void() > e; mock::detail::function< void() > e;
mock::detail::configure( *o2, e, "instance", mock::detail::type_name( BOOST_SP_TYPEID( *o2 ) ), "name" ); mock::detail::configure( *o2, e, "instance", MOCK_TYPE_NAME(*o2), "name" );
e.expect().once(); e.expect().once();
CHECK_ERROR( CHECK_ERROR(
BOOST_CHECK( ! mock::verify( *o2 ) ), BOOST_CHECK( ! mock::verify( *o2 ) ),

View file

@ -24,6 +24,8 @@
#include <cstdlib> #include <cstdlib>
#endif #endif
#define MOCK_TYPE_NAME( T ) mock::detail::type_name( BOOST_SP_TYPEID(T) )
namespace mock namespace mock
{ {
namespace detail namespace detail

View file

@ -67,7 +67,7 @@
{ \ { \
mock::detail::configure( *this, t##_mock_, \ mock::detail::configure( *this, t##_mock_, \
instance.substr( 0, instance.rfind( BOOST_PP_STRINGIZE(t) ) ), \ instance.substr( 0, instance.rfind( BOOST_PP_STRINGIZE(t) ) ), \
mock::detail::type_name( BOOST_SP_TYPEID(*this) ), \ MOCK_TYPE_NAME(*this), \
BOOST_PP_STRINGIZE(t) ); \ BOOST_PP_STRINGIZE(t) ); \
return t##_mock_; \ return t##_mock_; \
} }