mirror of
https://github.com/mat007/turtle.git
synced 2026-06-22 12:13:43 +00:00
Merged functions branch back to trunk
git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@401 860be788-9bd5-4423-9f1e-828f051e677b
This commit is contained in:
parent
c0bc085943
commit
40cf39aae7
15 changed files with 211 additions and 124 deletions
|
|
@ -30,7 +30,7 @@ namespace detail
|
|||
const boost::optional< type_name >& type,
|
||||
boost::unit_test::const_string name )
|
||||
{
|
||||
if( instance != "?" || name_.empty() )
|
||||
if( instance != "?." || name_.empty() )
|
||||
p = parent( instance, type );
|
||||
parent_ = &p;
|
||||
name_ = name;
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ namespace mock
|
|||
return s << *e.impl_;
|
||||
}
|
||||
|
||||
function& _configure( detail::context& c,
|
||||
function& operator()( detail::context& c,
|
||||
boost::unit_test::const_string instance )
|
||||
{
|
||||
if( ! impl_->context_ )
|
||||
|
|
|
|||
|
|
@ -88,43 +88,63 @@ namespace detail
|
|||
{
|
||||
typedef T base_type;
|
||||
};
|
||||
|
||||
template< typename S >
|
||||
struct functor : mock::function< S >
|
||||
{
|
||||
functor()
|
||||
{
|
||||
static functor* f = 0;
|
||||
if( f )
|
||||
{
|
||||
*this = *f;
|
||||
f = 0;
|
||||
}
|
||||
else
|
||||
f = this;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// if an error is generated by the line below it probably means either the
|
||||
// method does not exist or it is ambiguous : use MOCK_METHOD_EXT instead
|
||||
template< typename T >
|
||||
T& invalid_pointer_to_member( const T& t );
|
||||
T& invalid_pointer_to_member( const T& );
|
||||
}
|
||||
|
||||
#define MOCK_BASE_CLASS(T, I) \
|
||||
struct T : I, mock::object, mock::detail::base< I >
|
||||
#define MOCK_CLASS(T) \
|
||||
struct T : mock::object
|
||||
#define MOCK_FUNCTOR(S) \
|
||||
mock::function< S >
|
||||
#define MOCK_FUNCTOR(f, S) \
|
||||
mock::detail::functor< S > f, f##configure
|
||||
|
||||
#define MOCK_MOCKER(o, t) \
|
||||
mock::detail::deref( o ).t##configure( mock::detail::root, \
|
||||
BOOST_PP_STRINGIZE(o) )
|
||||
#define MOCK_ANONYMOUS_MOCKER(o, t) \
|
||||
mock::detail::deref( o ).t##configure( mock::detail::root, "?" )
|
||||
#define MOCK_MOCKER(t) \
|
||||
t##configure( mock::detail::root, BOOST_PP_STRINGIZE(t) )
|
||||
#define MOCK_ANONYMOUS_MOCKER(t) \
|
||||
t##configure( mock::detail::root, "?." )
|
||||
|
||||
#define MOCK_METHOD_EXPECTATION(S, t) \
|
||||
mutable mock::function< S > t##expectation; \
|
||||
mock::function< S >& t##configure( const mock::detail::context&, \
|
||||
boost::unit_test::const_string instance ) const \
|
||||
{ \
|
||||
mock::detail::configure( *this, t##expectation, instance, \
|
||||
mock::detail::configure( *this, t##expectation, \
|
||||
instance.substr( 0, instance.rfind( BOOST_PP_STRINGIZE(t) ) ), \
|
||||
mock::detail::type_name( typeid( *this ) ), \
|
||||
BOOST_PP_STRINGIZE(t) ); \
|
||||
return t##expectation; \
|
||||
}
|
||||
|
||||
#define MOCK_SIGNATURE(M) \
|
||||
mock::detail::signature< BOOST_TYPEOF( mock::invalid_pointer_to_member( &base_type::M ) ) >::type
|
||||
mock::detail::signature< \
|
||||
BOOST_TYPEOF( mock::invalid_pointer_to_member( &base_type::M ) ) \
|
||||
>::type
|
||||
|
||||
#define MOCK_METHOD_STUB(M, n, S, t, c, tpn) \
|
||||
MOCK_DECL(M, n, S, c, tpn) \
|
||||
{ \
|
||||
return MOCK_ANONYMOUS_MOCKER(this, t)( \
|
||||
return MOCK_ANONYMOUS_MOCKER(t)( \
|
||||
BOOST_PP_ENUM_PARAMS(n, p) ); \
|
||||
}
|
||||
|
||||
|
|
@ -153,22 +173,38 @@ namespace detail
|
|||
MOCK_METHOD_EXPECTATION(S, t)
|
||||
|
||||
#define MOCK_DESTRUCTOR(T, t) \
|
||||
~T() { MOCK_ANONYMOUS_MOCKER(this, t).test(); } \
|
||||
~T() { MOCK_ANONYMOUS_MOCKER(t).test(); } \
|
||||
MOCK_METHOD_EXPECTATION(void(), t)
|
||||
|
||||
#define MOCK_CONST_CONVERSION_OPERATOR(T, t) \
|
||||
operator T() const { return MOCK_ANONYMOUS_MOCKER(this, t)(); } \
|
||||
operator T() const { return MOCK_ANONYMOUS_MOCKER(t)(); } \
|
||||
MOCK_METHOD_EXPECTATION(T(), t)
|
||||
#define MOCK_NON_CONST_CONVERSION_OPERATOR(T, t) \
|
||||
operator T() { return MOCK_ANONYMOUS_MOCKER(this, t)(); } \
|
||||
operator T() { return MOCK_ANONYMOUS_MOCKER(t)(); } \
|
||||
MOCK_METHOD_EXPECTATION(T(), t)
|
||||
#define MOCK_CONVERSION_OPERATOR(T, t) \
|
||||
operator T() const { return MOCK_ANONYMOUS_MOCKER(this, t)(); } \
|
||||
operator T() { return MOCK_ANONYMOUS_MOCKER(this, t)(); } \
|
||||
operator T() const { return MOCK_ANONYMOUS_MOCKER(t)(); } \
|
||||
operator T() { return MOCK_ANONYMOUS_MOCKER(t)(); } \
|
||||
MOCK_METHOD_EXPECTATION(T(), t)
|
||||
|
||||
#define MOCK_EXPECT(o,t) MOCK_MOCKER(o,t).expect( __FILE__, __LINE__ )
|
||||
#define MOCK_RESET(o,t) MOCK_MOCKER(o,t).reset()
|
||||
#define MOCK_VERIFY(o,t) MOCK_MOCKER(o,t).verify()
|
||||
#define MOCK_FUNCTION_STUB(F, n, S, t, s) \
|
||||
s mock::function< S >& t##configure( mock::detail::context& context, \
|
||||
boost::unit_test::const_string instance ) \
|
||||
{ \
|
||||
static mock::function< S > f; \
|
||||
return f( context, instance ); \
|
||||
} \
|
||||
s MOCK_DECL(F, n, S,,) \
|
||||
{ \
|
||||
return MOCK_MOCKER(t)( BOOST_PP_ENUM_PARAMS(n, p) ); \
|
||||
}
|
||||
#define MOCK_FUNCTION(F, n, S, t) \
|
||||
MOCK_FUNCTION_STUB(F, n, S, t,)
|
||||
#define MOCK_STATIC_FUNCTION(F, n, S, t) \
|
||||
MOCK_FUNCTION_STUB(F, n, S, t, static)
|
||||
|
||||
#define MOCK_EXPECT(t) MOCK_MOCKER(t).expect( __FILE__, __LINE__ )
|
||||
#define MOCK_RESET(t) MOCK_MOCKER(t).reset()
|
||||
#define MOCK_VERIFY(t) MOCK_MOCKER(t).verify()
|
||||
|
||||
#endif // MOCK_MOCK_HPP_INCLUDED
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace detail
|
|||
{
|
||||
s << p.instance_;
|
||||
if( p.type_ )
|
||||
s << " " << *p.type_ << "::";
|
||||
s << *p.type_ << "::";
|
||||
return s;
|
||||
}
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -19,6 +19,6 @@ namespace
|
|||
void test_case()
|
||||
{
|
||||
my_class c;
|
||||
MOCK_EXPECT( c, my_method ).with( &constraint );
|
||||
MOCK_EXPECT( c.my_method ).with( &constraint );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ namespace
|
|||
void test_case()
|
||||
{
|
||||
my_class c;
|
||||
MOCK_EXPECT( c, my_method ).with( "42" );
|
||||
MOCK_EXPECT( c.my_method ).with( "42" );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ namespace
|
|||
void test_case()
|
||||
{
|
||||
my_class c;
|
||||
MOCK_EXPECT( c, my_method ).with( mock::equal( "42" ) );
|
||||
MOCK_EXPECT( c.my_method ).with( mock::equal( "42" ) );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ namespace
|
|||
void test_case()
|
||||
{
|
||||
my_class c;
|
||||
MOCK_EXPECT( c, my_method ).returns( "42" );
|
||||
MOCK_EXPECT( c.my_method ).returns( "42" );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ namespace
|
|||
void test_case()
|
||||
{
|
||||
my_class c;
|
||||
MOCK_EXPECT( c, my_method ).returns( 42 );
|
||||
MOCK_EXPECT( c.my_method ).returns( 42 );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ namespace
|
|||
void test_case()
|
||||
{
|
||||
my_class c;
|
||||
MOCK_EXPECT( c, my_method ).returns( "42" );
|
||||
MOCK_EXPECT( c.my_method ).returns( "42" );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ namespace
|
|||
void test_case()
|
||||
{
|
||||
my_class c;
|
||||
MOCK_EXPECT( c, my_method ).with( 42, 42 );
|
||||
MOCK_EXPECT( c.my_method ).with( 42, 42 );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( custom_mock_object_without_macros_and_without_inheriting_from_object )
|
||||
{
|
||||
my_custom_mock m;
|
||||
MOCK_EXPECT( m, my_method ).once();
|
||||
MOCK_EXPECT( m.my_method ).once();
|
||||
m.my_method();
|
||||
}
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( custom_mock_object_without_macros )
|
||||
{
|
||||
my_custom_mock_object m;
|
||||
MOCK_EXPECT( m, my_method ).once();
|
||||
MOCK_EXPECT( m.my_method ).once();
|
||||
m.my_method();
|
||||
}
|
||||
|
||||
|
|
@ -56,19 +56,19 @@ BOOST_AUTO_TEST_CASE( basic_mock_object_usage )
|
|||
{
|
||||
my_mock m;
|
||||
{
|
||||
MOCK_EXPECT( m, my_method ).once().returns( 0 );
|
||||
MOCK_EXPECT( m.my_method ).once().returns( 0 );
|
||||
BOOST_CHECK_EQUAL( 0, m.my_method( 13 ) );
|
||||
}
|
||||
mock::verify();
|
||||
mock::reset();
|
||||
{
|
||||
MOCK_EXPECT( m, my_method ).once().with( 42 ).returns( 7 );
|
||||
MOCK_EXPECT( m.my_method ).once().with( 42 ).returns( 7 );
|
||||
BOOST_CHECK_EQUAL( 7, m.my_method( 42 ) );
|
||||
}
|
||||
mock::verify();
|
||||
mock::reset();
|
||||
{
|
||||
MOCK_EXPECT( m, my_method ).once().returns( 51 );
|
||||
MOCK_EXPECT( m.my_method ).once().returns( 51 );
|
||||
BOOST_CHECK_EQUAL( 51, m.my_method( 27 ) );
|
||||
}
|
||||
}
|
||||
|
|
@ -93,10 +93,10 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( mock_object_method_disambiguation )
|
||||
{
|
||||
my_ambiguited_mock mock;
|
||||
MOCK_EXPECT( mock, tag1 );
|
||||
BOOST_CHECK_NO_THROW( mock.my_method() );
|
||||
BOOST_CHECK_THROW( mock.my_method( 12 ), std::exception );
|
||||
my_ambiguited_mock m;
|
||||
MOCK_EXPECT( m.tag1 );
|
||||
BOOST_CHECK_NO_THROW( m.my_method() );
|
||||
BOOST_CHECK_THROW( m.my_method( 12 ), std::exception );
|
||||
}
|
||||
|
||||
namespace
|
||||
|
|
@ -120,7 +120,7 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( mock_object_method_const_disambiguation )
|
||||
{
|
||||
my_const_ambiguited_mock mock;
|
||||
MOCK_EXPECT( mock, tag1 );
|
||||
MOCK_EXPECT( mock.tag1 );
|
||||
BOOST_CHECK_NO_THROW( mock.my_method() );
|
||||
const my_const_ambiguited_mock const_mock;
|
||||
BOOST_CHECK_THROW( const_mock.my_method(), std::exception );
|
||||
|
|
@ -139,15 +139,15 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( mock_object_method_with_declared_but_not_defined_parameter_is_valid )
|
||||
{
|
||||
my_declared_but_undefined_mock mock;
|
||||
MOCK_EXPECT( mock, m );
|
||||
MOCK_EXPECT( mock.m );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_functor_in_function_is_supported )
|
||||
{
|
||||
boost::function< int( float, const std::string& ) > func;
|
||||
{
|
||||
MOCK_FUNCTOR( int( float, const std::string& ) ) f;
|
||||
MOCK_EXPECT( f, _ ).once().with( 3, "op" ).returns( 42 );
|
||||
MOCK_FUNCTOR( f, int( float, const std::string& ) );
|
||||
MOCK_EXPECT( f ).once().with( 3, "op" ).returns( 42 );
|
||||
func = f;
|
||||
}
|
||||
BOOST_CHECK_EQUAL( 42, func( 3, "op" ) );
|
||||
|
|
@ -157,13 +157,13 @@ namespace
|
|||
{
|
||||
struct functor_fixture
|
||||
{
|
||||
MOCK_FUNCTOR( int( float, const std::string& ) ) f;
|
||||
MOCK_FUNCTOR( f, int( float, const std::string& ) );
|
||||
};
|
||||
}
|
||||
|
||||
BOOST_FIXTURE_TEST_CASE( mock_functor_in_fixture_is_supported, functor_fixture )
|
||||
{
|
||||
MOCK_EXPECT( f, _ ).once().with( 3, "op" ).returns( 42 );
|
||||
MOCK_EXPECT( f ).once().with( 3, "op" ).returns( 42 );
|
||||
BOOST_CHECK_EQUAL( 42, f( 3.f, "op" ) );
|
||||
}
|
||||
|
||||
|
|
@ -181,7 +181,7 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( mocking_a_template_class_method_is_supported )
|
||||
{
|
||||
my_template_mock< int > m;
|
||||
MOCK_EXPECT( m, my_method_t ).with( 3, "" );
|
||||
MOCK_EXPECT( m.my_method_t ).with( 3, "" );
|
||||
m.my_method( 3, "" );
|
||||
}
|
||||
|
||||
|
|
@ -206,7 +206,7 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( mocking_a_template_base_class_method_is_supported )
|
||||
{
|
||||
my_template_base_class_mock< int > m;
|
||||
MOCK_EXPECT( m, my_method ).once().with( 3 );
|
||||
MOCK_EXPECT( m.my_method ).once().with( 3 );
|
||||
m.my_method( 3 );
|
||||
}
|
||||
|
||||
|
|
@ -263,13 +263,13 @@ namespace
|
|||
|
||||
BOOST_FIXTURE_TEST_CASE( basic_mock_object_collaboration_usage, fixture )
|
||||
{
|
||||
MOCK_EXPECT( manager, get_observer ).returns( boost::ref( observer ) );
|
||||
MOCK_EXPECT( manager.get_observer ).returns( boost::ref( observer ) );
|
||||
my_subject subject( manager );
|
||||
MOCK_EXPECT( observer, notify ).once().with( 1 );
|
||||
MOCK_EXPECT( observer.notify ).once().with( 1 );
|
||||
subject.increment();
|
||||
MOCK_EXPECT( observer, notify ).once().with( 2 );
|
||||
MOCK_EXPECT( observer.notify ).once().with( 2 );
|
||||
subject.increment();
|
||||
MOCK_EXPECT( observer, notify ).once().with( 3 );
|
||||
MOCK_EXPECT( observer.notify ).once().with( 3 );
|
||||
subject.increment();
|
||||
}
|
||||
|
||||
|
|
@ -284,7 +284,7 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( mocking_a_destructor )
|
||||
{
|
||||
my_destroyed_class c;
|
||||
MOCK_EXPECT( c, destructor ).once();
|
||||
MOCK_EXPECT( c.destructor ).once();
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( failed_expectation_in_mocked_destructor_does_not_throw )
|
||||
|
|
@ -305,8 +305,8 @@ BOOST_AUTO_TEST_CASE( failed_sequence_in_mocked_destructor_does_not_throw )
|
|||
my_custom_mock m;
|
||||
{
|
||||
my_destroyed_class c;
|
||||
MOCK_EXPECT( c, destructor ).once().in( s );
|
||||
MOCK_EXPECT( m, my_method ).once().in( s );
|
||||
MOCK_EXPECT( c.destructor ).once().in( s );
|
||||
MOCK_EXPECT( m.my_method ).once().in( s );
|
||||
m.my_method();
|
||||
}
|
||||
}
|
||||
|
|
@ -323,7 +323,7 @@ BOOST_AUTO_TEST_CASE( boost_optional_on_base_class_reference_as_return_type_is_s
|
|||
{
|
||||
boost_optional b;
|
||||
my_mock_observer o;
|
||||
MOCK_EXPECT( b, method ).once().returns( boost::ref( o ) );
|
||||
MOCK_EXPECT( b.method ).once().returns( boost::ref( o ) );
|
||||
b.method();
|
||||
}
|
||||
|
||||
|
|
@ -356,8 +356,8 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( constraints_and_arguments_are_serialized_lazily )
|
||||
{
|
||||
MOCK_FUNCTOR( void( custom_argument ) ) f;
|
||||
MOCK_EXPECT( f, _ ).with( custom_constraint() );
|
||||
MOCK_FUNCTOR( f, void( custom_argument ) );
|
||||
MOCK_EXPECT( f ).with( custom_constraint() );
|
||||
f( custom_argument() );
|
||||
BOOST_CHECK( ! serialized );
|
||||
}
|
||||
|
|
@ -385,12 +385,6 @@ namespace
|
|||
<< ", " << mock::format( c.threshold_ ) << " )";
|
||||
}
|
||||
|
||||
//template< typename Actual >
|
||||
//void explain( std::ostream& s, Actual actual ) const
|
||||
//{
|
||||
// s << std::abs( actual - expected_ ) << " >= " << threshold_;
|
||||
//}
|
||||
|
||||
Expected expected_;
|
||||
Expected threshold_;
|
||||
};
|
||||
|
|
@ -403,8 +397,8 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( using_custom_constraint )
|
||||
{
|
||||
MOCK_FUNCTOR( void( float ) ) f;
|
||||
MOCK_EXPECT( f, _ ).with( near( 3.f, 0.01f ) );
|
||||
MOCK_FUNCTOR( f, void( float ) );
|
||||
MOCK_EXPECT( f ).with( near( 3.f, 0.01f ) );
|
||||
f( 3.f );
|
||||
const std::string expected = "f\n"
|
||||
". unlimited().with( near( 3, 0.01 ) )";
|
||||
|
|
@ -427,16 +421,16 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( custom_constraint_function_operator_does_not_need_to_be_const )
|
||||
{
|
||||
MOCK_FUNCTOR( void( float ) ) f;
|
||||
MOCK_EXPECT( f, _ ).with( mock::constraint< custom_constraint_with_non_const_operator >( custom_constraint_with_non_const_operator() ) );
|
||||
MOCK_FUNCTOR( f, void( float ) );
|
||||
MOCK_EXPECT( f ).with( mock::constraint< custom_constraint_with_non_const_operator >( custom_constraint_with_non_const_operator() ) );
|
||||
f( 42 );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( boost_reference_wrapper_is_supported_in_value_constraint )
|
||||
{
|
||||
MOCK_FUNCTOR( void( const std::string& ) ) f;
|
||||
MOCK_FUNCTOR( f, void( const std::string& ) );
|
||||
std::string s;
|
||||
MOCK_EXPECT( f, _ ).once().with( boost::cref( s ) );
|
||||
MOCK_EXPECT( f ).once().with( boost::cref( s ) );
|
||||
s = "string";
|
||||
f( "string" );
|
||||
}
|
||||
|
|
@ -457,3 +451,30 @@ BOOST_AUTO_TEST_CASE( member_pointer_on_mock_method_is_valid )
|
|||
{
|
||||
nothing( &member_pointer_mock_class::my_method );
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
MOCK_FUNCTION( free_function, 1, float( int ), free_function )
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( a_free_function_can_be_mocked )
|
||||
{
|
||||
MOCK_EXPECT( free_function ).once();
|
||||
BOOST_CHECK( ! MOCK_VERIFY( free_function ) );
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
struct some_class
|
||||
{
|
||||
MOCK_STATIC_FUNCTION( some_static_method, 1, float( int ), some_static_method )
|
||||
};
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( a_static_method_can_be_mocked )
|
||||
{
|
||||
MOCK_EXPECT( some_class::some_static_method ).once();
|
||||
BOOST_CHECK( ! MOCK_VERIFY( some_class::some_static_method ) );
|
||||
MOCK_RESET( some_class::some_static_method );
|
||||
BOOST_CHECK( MOCK_VERIFY( some_class::some_static_method ) );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,13 +25,13 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( call_mock_method_with_max_number_of_args )
|
||||
{
|
||||
my_custom_mock m;
|
||||
MOCK_EXPECT( m, method ).once().with( BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0) );
|
||||
MOCK_EXPECT( m.method ).once().with( BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0) );
|
||||
m.method( BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0) );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( call_mock_method_with_max_number_of_args_and_returning_something )
|
||||
{
|
||||
my_custom_mock m;
|
||||
MOCK_EXPECT( m, method2 ).once().with( BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0) ).returns( 42 );
|
||||
MOCK_EXPECT( m.method2 ).once().with( BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0) ).returns( 42 );
|
||||
BOOST_CHECK_EQUAL( 42, m.method2( BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0) ) );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,9 +47,9 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( mock_object_for_static_polymorphism )
|
||||
{
|
||||
const mock_class mock;
|
||||
MOCK_EXPECT( mock, my_method ).once().with( "some parameter" );
|
||||
my_function( mock );
|
||||
const mock_class m;
|
||||
MOCK_EXPECT( m.my_method ).once().with( "some parameter" );
|
||||
my_function( m );
|
||||
}
|
||||
|
||||
namespace
|
||||
|
|
@ -62,9 +62,9 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( mock_addition_operator )
|
||||
{
|
||||
mock_class_with_operator mock;
|
||||
MOCK_EXPECT( mock, addition ).once().returns( boost::ref( mock ) );
|
||||
mock += 1;
|
||||
mock_class_with_operator m;
|
||||
MOCK_EXPECT( m.addition ).once().returns( boost::ref( m ) );
|
||||
m += 1;
|
||||
}
|
||||
|
||||
namespace
|
||||
|
|
@ -77,9 +77,9 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( mock_conversion_operator )
|
||||
{
|
||||
mock_class_with_conversion_operator mock;
|
||||
MOCK_EXPECT( mock, conversion ).once().returns( 42 );
|
||||
int i = mock;
|
||||
mock_class_with_conversion_operator m;
|
||||
MOCK_EXPECT( m.conversion ).once().returns( 42 );
|
||||
int i = m;
|
||||
BOOST_CHECK_EQUAL( 42, i );
|
||||
}
|
||||
|
||||
|
|
@ -93,9 +93,9 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( mock_const_conversion_operator )
|
||||
{
|
||||
mock_class_with_const_conversion_operator mock;
|
||||
MOCK_EXPECT( mock, conversion ).once().returns( 42 );
|
||||
int i = mock;
|
||||
mock_class_with_const_conversion_operator m;
|
||||
MOCK_EXPECT( m.conversion ).once().returns( 42 );
|
||||
int i = m;
|
||||
BOOST_CHECK_EQUAL( 42, i );
|
||||
}
|
||||
|
||||
|
|
@ -109,9 +109,9 @@ namespace
|
|||
|
||||
BOOST_AUTO_TEST_CASE( mock_non_const_conversion_operator )
|
||||
{
|
||||
mock_class_with_non_const_conversion_operator mock;
|
||||
MOCK_EXPECT( mock, conversion ).once().returns( 42 );
|
||||
int i = mock;
|
||||
mock_class_with_non_const_conversion_operator m;
|
||||
MOCK_EXPECT( m.conversion ).once().returns( 42 );
|
||||
int i = m;
|
||||
BOOST_CHECK_EQUAL( 42, i );
|
||||
}
|
||||
|
||||
|
|
@ -133,19 +133,19 @@ BOOST_AUTO_TEST_CASE( MOCK_CONST_METHOD_EXT_macro_defines_a_bindable_method )
|
|||
BOOST_AUTO_TEST_CASE( MOCK_VERIFY_macro )
|
||||
{
|
||||
my_mock m;
|
||||
MOCK_VERIFY( m, my_method );
|
||||
MOCK_VERIFY( m.my_method );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( MOCK_RESET_macro )
|
||||
{
|
||||
my_mock m;
|
||||
MOCK_RESET( m, my_method );
|
||||
MOCK_RESET( m.my_method );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( MOCK_EXPECT_macro )
|
||||
{
|
||||
my_mock m;
|
||||
MOCK_EXPECT( m, my_method ).once().with( 42 );
|
||||
MOCK_EXPECT( m.my_method ).once().with( 42 );
|
||||
m.my_method( 42 );
|
||||
}
|
||||
|
||||
|
|
@ -163,48 +163,48 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( mock_object_is_named )
|
||||
{
|
||||
my_mock m;
|
||||
BOOST_CHECK_EQUAL( "? my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "? my_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_mock::my_method", to_string( MOCK_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_mock::my_method", to_string( MOCK_MOCKER( m.my_method ) ) );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_object_auto_pointer_is_named )
|
||||
{
|
||||
std::auto_ptr< my_mock > m( new my_mock );
|
||||
BOOST_CHECK_EQUAL( "? my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_object_const_auto_pointer_is_named )
|
||||
{
|
||||
const std::auto_ptr< my_mock > m( new my_mock );
|
||||
BOOST_CHECK_EQUAL( "? my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_object_shared_pointer_is_named )
|
||||
{
|
||||
boost::shared_ptr< my_mock > m( new my_mock );
|
||||
BOOST_CHECK_EQUAL( "? my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_object_const_shared_pointer_is_named )
|
||||
{
|
||||
const boost::shared_ptr< my_mock > m( new my_mock );
|
||||
BOOST_CHECK_EQUAL( "? my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m->my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m->my_mock::my_method", to_string( MOCK_MOCKER( m->my_method ) ) );
|
||||
}
|
||||
|
||||
namespace
|
||||
|
|
@ -219,12 +219,12 @@ namespace
|
|||
BOOST_AUTO_TEST_CASE( custom_mock_object_without_macros_and_without_inheriting_from_object_is_named )
|
||||
{
|
||||
my_custom_mock m;
|
||||
BOOST_CHECK_EQUAL( "? my_custom_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "? my_custom_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_custom_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_custom_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock::my_method", to_string( MOCK_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock::my_method", to_string( MOCK_MOCKER( m.my_method ) ) );
|
||||
}
|
||||
|
||||
namespace
|
||||
|
|
@ -239,18 +239,47 @@ namespace
|
|||
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_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "? my_custom_mock_object::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock_object::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock_object::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock_object::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m my_custom_mock_object::my_method", to_string( MOCK_MOCKER( m, my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_custom_mock_object::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "?.my_custom_mock_object::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock_object::my_method", to_string( MOCK_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock_object::my_method_2", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method_2 ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock_object::my_method", to_string( MOCK_ANONYMOUS_MOCKER( m.my_method ) ) );
|
||||
BOOST_CHECK_EQUAL( "m.my_custom_mock_object::my_method", to_string( MOCK_MOCKER( m.my_method ) ) );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_functor )
|
||||
{
|
||||
MOCK_FUNCTOR( f1, void() );
|
||||
MOCK_FUNCTOR( f2, int( const std::string& ) );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_functor_is_named )
|
||||
{
|
||||
MOCK_FUNCTOR( void() ) f;
|
||||
BOOST_CHECK_EQUAL( "f", to_string( MOCK_MOCKER( f, _ ) ) );
|
||||
MOCK_FUNCTOR( f, void() );
|
||||
BOOST_CHECK_EQUAL( "f", to_string( MOCK_MOCKER( f ) ) );
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
MOCK_FUNCTION( mock_function, 1, float( int ), mock_function )
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( mock_function_is_named )
|
||||
{
|
||||
BOOST_CHECK_EQUAL( "mock_function", to_string( MOCK_MOCKER( mock_function ) ) );
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
MOCK_CLASS( static_function_class )
|
||||
{
|
||||
MOCK_STATIC_FUNCTION( mock_static_function, 1, float( int ), mock_static_function )
|
||||
};
|
||||
}
|
||||
|
||||
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 ) ) );
|
||||
}
|
||||
|
||||
BOOST_MPL_ASSERT(( boost::is_same< float, mock::detail::arg< void( float ), 1, 1 >::type > ));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue