Added Catch integration

This commit is contained in:
Mathieu Champlon 2017-05-28 08:25:37 +02:00
parent 5e11124901
commit 6daff2167c
5 changed files with 56 additions and 5 deletions

View file

@ -7,6 +7,6 @@
[section Acknowledgements] [section Acknowledgements]
Many thanks to Adrien Gervaise, Silvin Lubecki and Takatoshi Kondo ! Many thanks to Adrien Gervaise, Silvin Lubecki, Takatoshi Kondo and Ovanes Markarian !
[endsect] [endsect]

View file

@ -12,6 +12,7 @@ Not yet released
* Fixed mocking of a function returning a reference for gcc 4.1 * Fixed mocking of a function returning a reference for gcc 4.1
* Added MOCK_NO_AUTO_PTR to deactivate std::auto_ptr support * Added MOCK_NO_AUTO_PTR to deactivate std::auto_ptr support
* Added [@https://github.com/philsquared/Catch Catch] integration
[endsect] [endsect]

View file

@ -148,6 +148,8 @@ The policy can then be activated by defining MOCK_ERROR_POLICY prior to includin
[define_custom_policy] [define_custom_policy]
A custom policy for [@https://github.com/philsquared/Catch Catch] is provided and can be enabled simply by including catch.hpp instead of turtle.hpp.
[endsect] [endsect]
[section Thread safety] [section Thread safety]

View file

@ -147,21 +147,22 @@ struct custom_policy
{ {
static Result abort() static Result abort()
{ {
// ... // Notify the test framework that an error occurs which makes it impossible to continue the test.
// This should most likely throw an exception of some kind.
} }
template< typename Context > template< typename Context >
static void fail( const char* message, const Context& context, const char* file = "unknown location", int line = 0 ) static void fail( const char* message, const Context& context, const char* file = "unknown location", int line = 0 )
{ {
// ... // Notify the test framework that an unexpected call has occurred.
} }
template< typename Context > template< typename Context >
static void call( const Context& context, const char* file, int line ) static void call( const Context& context, const char* file, int line )
{ {
// ... // Notify the test framework that an expectation has been fulfilled.
} }
static void pass( const char* file, int line ) static void pass( const char* file, int line )
{ {
// ... // Notify the test framework that the test execution merely passed the given code location.
} }
}; };
//] //]

47
include/turtle/catch.hpp Normal file
View file

@ -0,0 +1,47 @@
// http://turtle.sourceforge.net
//
// Copyright Mathieu Champlon and Ovanes Markarian 2017
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#ifndef MOCK_CATCH_HPP_INCLUDED
#define MOCK_CATCH_HPP_INCLUDED
#include <catch.hpp>
template< typename Result >
struct catch_mock_error_policy
{
static Result abort()
{
FAIL( "Aborted" );
throw std::runtime_error( "unreachable" );
}
template< typename Context >
static void fail( const char* message, const Context& context,
const char* file = "file://unknown-location", line = 0 )
{
CAPTURE( context );
FAIL_CHECK( message << " in: " << file << ":" << line );
}
template< typename Context >
static void call( const Context& context, const char* file, int line )
{
CAPTURE( context );
INFO( file << ":" << line );
}
static void pass( const char* file, int line )
{
INFO( file << ":" << line );
}
};
#define MOCK_ERROR_POLICY catch_mock_error_policy
#include "mock.hpp"
#endif // MOCK_CATCH_HPP_INCLUDED