Added support for mocking conversion operators

git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@141 860be788-9bd5-4423-9f1e-828f051e677b
This commit is contained in:
mat007 2010-03-11 11:26:48 +00:00
parent a2cf4dbb02
commit 14a788557b
2 changed files with 59 additions and 0 deletions

View file

@ -232,6 +232,17 @@ namespace detail
~T() { MOCK_ANONYMOUS_MOCKER_EXT(this, ~T, t).test(); } \
MOCK_METHOD_EXPECTATION(void(), t)
#define MOCK_CONST_CONVERSION_OPERATOR(T, t) \
operator T() const { return MOCK_ANONYMOUS_MOCKER_EXT(this, operator T, t)(); } \
MOCK_METHOD_EXPECTATION(T(), t)
#define MOCK_NON_CONST_CONVERSION_OPERATOR(T, t) \
operator T() { return MOCK_ANONYMOUS_MOCKER_EXT(this, operator T, t)(); } \
MOCK_METHOD_EXPECTATION(T(), t)
#define MOCK_CONVERSION_OPERATOR(T, t) \
operator T() const { return MOCK_ANONYMOUS_MOCKER_EXT(this, operator T, t)(); } \
operator T() { return MOCK_ANONYMOUS_MOCKER_EXT(this, operator T, 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()

View file

@ -103,6 +103,54 @@ BOOST_AUTO_TEST_CASE( mock_addition_operator )
mock += 1;
}
namespace
{
MOCK_CLASS( mock_class_with_conversion_operator )
{
MOCK_CONVERSION_OPERATOR( int, conversion )
};
}
BOOST_AUTO_TEST_CASE( mock_conversion_operator )
{
mock_class_with_conversion_operator mock;
MOCK_EXPECT( mock, conversion ).once().returns( 42 );
int i = mock;
BOOST_CHECK_EQUAL( 42, i );
}
namespace
{
MOCK_CLASS( mock_class_with_const_conversion_operator )
{
MOCK_CONST_CONVERSION_OPERATOR( int, conversion )
};
}
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;
BOOST_CHECK_EQUAL( 42, i );
}
namespace
{
MOCK_CLASS( mock_class_with_non_const_conversion_operator )
{
MOCK_CONST_CONVERSION_OPERATOR( int, conversion )
};
}
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;
BOOST_CHECK_EQUAL( 42, i );
}
namespace
{
MOCK_CLASS( my_mock )