Refactoring

git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@317 860be788-9bd5-4423-9f1e-828f051e677b
This commit is contained in:
mat007 2011-05-09 22:17:10 +00:00
parent 14e80c37dc
commit f4127636d5
3 changed files with 31 additions and 30 deletions

View file

@ -6,12 +6,24 @@
// http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef MOCK_BENCH_NUMBER_OF_METHODS
#define MOCK_BENCH_NUMBER_OF_METHODS 30
#endif
#ifndef MOCK_BENCH_NUMBER_OF_ARGS
#define MOCK_BENCH_NUMBER_OF_ARGS 9
#endif
//#define MOCK_MAX_ARGS MOCK_BENCH_NUMBER_OF_ARGS
#ifndef MOCK_BENCH_NUMBER_OF_CLASSES
#define MOCK_BENCH_NUMBER_OF_CLASSES 20
#endif
#include <turtle/mock.hpp>
#include <boost/preprocessor/iteration/iterate.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#define F(z, n, d) virtual void f##n() = 0;
#define NUMBER_OF_METHODS 20
#define MOCK_BENCH_IDENTITY(z, n, d) d
#define MOCK_BENCH_METHOD(z, n, d) virtual void f##n( d ) = 0;
namespace
{
@ -19,13 +31,23 @@ namespace
{
public:
virtual ~base_class() {}
BOOST_PP_REPEAT_FROM_TO(0, NUMBER_OF_METHODS, F, )
BOOST_PP_REPEAT(MOCK_BENCH_NUMBER_OF_METHODS, MOCK_BENCH_METHOD, BOOST_PP_ENUM(MOCK_BENCH_NUMBER_OF_ARGS, MOCK_BENCH_IDENTITY, int))
};
}
#define BOOST_PP_FILENAME_1 "turtle_bench.hpp"
#define BOOST_PP_ITERATION_LIMITS (1, 10)
#include BOOST_PP_ITERATE()
#define MOCK_BENCH_MOCK_METHOD(z, n, d) MOCK_METHOD( f##n, MOCK_BENCH_NUMBER_OF_ARGS )
#define MOCK_BENCH_BASE_CLASS(z, n, d) \
MOCK_BASE_CLASS( BOOST_PP_CAT( mock_class, n ), base_class ) \
{ \
BOOST_PP_REPEAT(MOCK_BENCH_NUMBER_OF_METHODS, MOCK_BENCH_MOCK_METHOD,) \
};
BOOST_PP_REPEAT(MOCK_BENCH_NUMBER_OF_CLASSES, MOCK_BENCH_BASE_CLASS,)
#define MOCK_BENCH_INSTANTIATION(z, n, d) mock_class##n c##n;
int main()
{}
{
BOOST_PP_REPEAT(MOCK_BENCH_NUMBER_OF_CLASSES, MOCK_BENCH_INSTANTIATION,)
return 0;
}

View file

@ -1,17 +0,0 @@
//
// Copyright Mathieu Champlon 2010
//
// 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)
//
//#pragma message( BOOST_PP_STRINGIZE( BOOST_PP_CAT( mock_class, BOOST_PP_ITERATION() ) ) )
#define MOCK_F(z, n, d) MOCK_METHOD( f##n, 0 )
//#define MOCK_F(z, n, d) MOCK_METHOD_ALT( f##n )
MOCK_BASE_CLASS( BOOST_PP_CAT( mock_class, BOOST_PP_ITERATION() ), base_class )
{
BOOST_PP_REPEAT_FROM_TO(0, NUMBER_OF_METHODS, MOCK_F, )
};