From 3fa0d17785d64f7051c113a3413a8f07bc992c90 Mon Sep 17 00:00:00 2001 From: mat007 Date: Mon, 5 Mar 2012 22:50:45 +0000 Subject: [PATCH] Added a much better workaround to the comma-in-macro problem git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@419 860be788-9bd5-4423-9f1e-828f051e677b --- src/libraries/turtle/mock.hpp | 7 +++++-- src/tests/turtle_test/mock_test.cpp | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/libraries/turtle/mock.hpp b/src/libraries/turtle/mock.hpp index 6ff37d8..f807290 100644 --- a/src/libraries/turtle/mock.hpp +++ b/src/libraries/turtle/mock.hpp @@ -49,7 +49,10 @@ namespace detail {}; template< typename T > - struct base + struct base; + + template< typename T > + struct base< void( T ) > : T { typedef T base_type; }; @@ -78,7 +81,7 @@ namespace detail } #define MOCK_BASE_CLASS(T, I) \ - struct T : I, mock::object, mock::detail::base< I > + struct T : mock::detail::base< void( I ) >, mock::object #define MOCK_CLASS(T) \ struct T : mock::object #define MOCK_FUNCTOR(f, S) \ diff --git a/src/tests/turtle_test/mock_test.cpp b/src/tests/turtle_test/mock_test.cpp index 3a63fe5..38a3460 100644 --- a/src/tests/turtle_test/mock_test.cpp +++ b/src/tests/turtle_test/mock_test.cpp @@ -319,3 +319,20 @@ BOOST_AUTO_TEST_CASE( mock_static_function_is_named ) { BOOST_CHECK_EQUAL( "static_function_class::mock_static_function", to_string( MOCK_MOCKER( static_function_class::mock_static_function ) ) ); } + +namespace +{ + template< typename T1, typename T2 > + struct base_template_class + {}; + MOCK_BASE_CLASS( mock_instanciated_template_class, (base_template_class< int, int >) ) + {}; + template< typename T > + MOCK_BASE_CLASS( mock_template_class, (base_template_class< T, T >) ) + {}; +} + +BOOST_AUTO_TEST_CASE( mock_template_class_can_be_instanciated ) +{ + mock_template_class< int > c; +}