From f66e06f4fe3d8bac175acf7f71601a8b16e8ab28 Mon Sep 17 00:00:00 2001 From: mat007 Date: Tue, 7 Feb 2012 23:00:31 +0000 Subject: [PATCH] Added checkpoint notification to error policy git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@411 860be788-9bd5-4423-9f1e-828f051e677b --- src/libraries/turtle/boost_test_error.hpp | 6 ++++++ src/libraries/turtle/default_error.hpp | 3 +++ src/libraries/turtle/function.hpp | 15 +++++++++++++-- src/libraries/turtle/mock.hpp | 4 ++-- src/tests/turtle_test/mock_error.hpp | 3 +++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/libraries/turtle/boost_test_error.hpp b/src/libraries/turtle/boost_test_error.hpp index 8c080ca..b878110 100644 --- a/src/libraries/turtle/boost_test_error.hpp +++ b/src/libraries/turtle/boost_test_error.hpp @@ -30,6 +30,12 @@ namespace mock throw boost::enable_current_exception( exception() ); } + static void checkpoint( const char* file, int line ) + { + boost::unit_test::unit_test_log.set_checkpoint( file, + (std::size_t)line ); + } + template< typename Context > static void fail( const char* message, const Context& context, diff --git a/src/libraries/turtle/default_error.hpp b/src/libraries/turtle/default_error.hpp index 9d24b9d..2087e10 100644 --- a/src/libraries/turtle/default_error.hpp +++ b/src/libraries/turtle/default_error.hpp @@ -24,6 +24,9 @@ namespace mock throw exception(); } + static void checkpoint( const char* /*file*/, int /*line*/ ) + {} + template< typename Context > static void fail( const char* message, const Context& context, diff --git a/src/libraries/turtle/function.hpp b/src/libraries/turtle/function.hpp index 793b810..d5a8973 100644 --- a/src/libraries/turtle/function.hpp +++ b/src/libraries/turtle/function.hpp @@ -61,14 +61,25 @@ namespace mock { return impl_->verify(); } + bool verify( const char* file, int line ) const + { + function_impl::error_type::checkpoint( file, line ); + return impl_->verify(); + } void reset() { impl_->reset(); } + void reset( const char* file, int line ) + { + function_impl::error_type::checkpoint( file, line ); + return impl_->reset(); + } expectation_type& expect( const char* file, int line ) { - return impl_->expect( file, line ); + function_impl::error_type::checkpoint( file, line ); + return impl_->expect(); } expectation_type& expect() { @@ -123,7 +134,7 @@ namespace mock private: class function_impl : public verifiable { - private: + public: typedef MOCK_ERROR_POLICY< result_type > error_type; public: diff --git a/src/libraries/turtle/mock.hpp b/src/libraries/turtle/mock.hpp index f6b6f56..ed499bb 100644 --- a/src/libraries/turtle/mock.hpp +++ b/src/libraries/turtle/mock.hpp @@ -169,7 +169,7 @@ namespace detail 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() +#define MOCK_RESET(t) MOCK_MOCKER(t).reset( __FILE__, __LINE__ ) +#define MOCK_VERIFY(t) MOCK_MOCKER(t).verify( __FILE__, __LINE__ ) #endif // MOCK_MOCK_HPP_INCLUDED diff --git a/src/tests/turtle_test/mock_error.hpp b/src/tests/turtle_test/mock_error.hpp index c1d163e..bcb752a 100644 --- a/src/tests/turtle_test/mock_error.hpp +++ b/src/tests/turtle_test/mock_error.hpp @@ -34,6 +34,9 @@ namespace mock throw std::runtime_error( "aborted" ); } + static void checkpoint( const char* /*file*/, int /*line*/ ) + {} + template< typename Context > static void missing_action( const Context& context, const char* /*file*/, int /*line*/ )