mirror of
https://github.com/mat007/turtle.git
synced 2026-06-22 12:13:43 +00:00
Add and use new singleton class
Use a very basic implementation and explicit inst() calls for access
This commit is contained in:
parent
e92f52821d
commit
9f1690b5da
10 changed files with 78 additions and 45 deletions
|
|
@ -10,12 +10,12 @@
|
|||
#define MOCK_TEST_MOCK_ERROR_HPP_INCLUDED
|
||||
|
||||
#define MOCK_ERROR_POLICY mock_error
|
||||
#include <turtle/detail/singleton.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
#include <boost/test/utils/trivial_singleton.hpp>
|
||||
#include <stdexcept>
|
||||
|
||||
struct mock_error_data_t : boost::unit_test::singleton< mock_error_data_t >
|
||||
struct mock_error_data_t : turtle::detail::singleton< mock_error_data_t >
|
||||
{
|
||||
void reset()
|
||||
{
|
||||
|
|
@ -52,10 +52,9 @@ struct mock_error_data_t : boost::unit_test::singleton< mock_error_data_t >
|
|||
std::string last_context;
|
||||
std::string last_file;
|
||||
int last_line;
|
||||
private:
|
||||
BOOST_TEST_SINGLETON_CONS( mock_error_data_t );
|
||||
|
||||
MOCK_SINGLETON_CONS( mock_error_data_t );
|
||||
};
|
||||
BOOST_TEST_SINGLETON_INST( mock_error_data )
|
||||
|
||||
template< typename Result >
|
||||
struct mock_error
|
||||
|
|
@ -72,14 +71,14 @@ struct mock_error
|
|||
static void call( const Context& /*context*/,
|
||||
const char* /*file*/, int /*line*/ )
|
||||
{
|
||||
mock_error_data.call();
|
||||
mock_error_data::inst().call();
|
||||
}
|
||||
|
||||
template< typename Context >
|
||||
static void fail( const std::string& message, const Context& context,
|
||||
const char* file = "", int line = 0 )
|
||||
{
|
||||
mock_error_data.fail( message,
|
||||
mock_error_data::inst().fail( message,
|
||||
boost::lexical_cast< std::string >( context ), file, line );
|
||||
}
|
||||
};
|
||||
|
|
@ -88,25 +87,25 @@ struct mock_error_fixture
|
|||
{
|
||||
mock_error_fixture()
|
||||
{
|
||||
mock_error_data.reset();
|
||||
mock_error_data::inst().reset();
|
||||
}
|
||||
~mock_error_fixture()
|
||||
{
|
||||
BOOST_CHECK( mock_error_data.verify() );
|
||||
BOOST_CHECK_EQUAL( 0, mock_error_data.call_count );
|
||||
BOOST_CHECK( mock_error_data::inst().verify() );
|
||||
BOOST_CHECK_EQUAL( 0, mock_error_data::inst().call_count );
|
||||
}
|
||||
};
|
||||
|
||||
#define CHECK_CALLS( calls ) \
|
||||
BOOST_CHECK_EQUAL( calls, mock_error_data.call_count ); \
|
||||
mock_error_data.call_count = 0;
|
||||
BOOST_CHECK_EQUAL( calls, mock_error_data::inst().call_count ); \
|
||||
mock_error_data::inst().call_count = 0;
|
||||
#define CHECK_ERROR( expr, error, calls, context ) \
|
||||
BOOST_CHECK( mock_error_data.verify() ); \
|
||||
BOOST_CHECK( mock_error_data::inst().verify() ); \
|
||||
try { expr; } catch( ... ) {} \
|
||||
BOOST_CHECK_EQUAL( 1, mock_error_data.error_count ); \
|
||||
BOOST_CHECK_EQUAL( error, mock_error_data.last_message ); \
|
||||
BOOST_CHECK_EQUAL( context, mock_error_data.last_context ); \
|
||||
BOOST_CHECK_EQUAL( 1, mock_error_data::inst().error_count ); \
|
||||
BOOST_CHECK_EQUAL( error, mock_error_data::inst().last_message ); \
|
||||
BOOST_CHECK_EQUAL( context, mock_error_data::inst().last_context ); \
|
||||
CHECK_CALLS( calls ); \
|
||||
mock_error_data.reset();
|
||||
mock_error_data::inst().reset();
|
||||
|
||||
#endif // MOCK_TEST_MOCK_ERROR_HPP_INCLUDED
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue