From fca30e7780740d1d785bfb1844404a429503b6e4 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Mon, 31 Jan 2022 19:27:57 +0100 Subject: [PATCH 1/7] Replace Boost PP_Iterate by C++11 variadic templates This allows support for any number of arguments and makes setting MOCK_MAX_ARGS unnecessary. It also allows for easier debugging due to being able to step into actual code instead of preprocessor generated stuff --- doc/changelog.qbk | 1 + doc/customization.qbk | 18 -- doc/example/customization.cpp | 6 - include/turtle/config.hpp | 4 - include/turtle/detail/expectation.hpp | 184 ++++++++++++++++ .../turtle/detail/expectation_template.hpp | 201 ------------------ include/turtle/detail/function.hpp | 114 +++++----- ...on_impl_template.hpp => function_impl.hpp} | 136 +++++++++--- include/turtle/detail/function_iterate.hpp | 11 - include/turtle/detail/function_template.hpp | 75 ------- ...her_base_template.hpp => matcher_base.hpp} | 17 +- include/turtle/detail/signature_traits.hpp | 6 +- test/CMakeLists.txt | 3 +- test/Jamfile.jam | 1 - ...of_arguments_greater_than_max_constant.cpp | 24 --- test/test_matcher.cpp | 23 +- test/test_max_args.cpp | 16 +- 17 files changed, 368 insertions(+), 472 deletions(-) create mode 100644 include/turtle/detail/expectation.hpp delete mode 100644 include/turtle/detail/expectation_template.hpp rename include/turtle/detail/{function_impl_template.hpp => function_impl.hpp} (71%) delete mode 100644 include/turtle/detail/function_iterate.hpp delete mode 100644 include/turtle/detail/function_template.hpp rename include/turtle/detail/{matcher_base_template.hpp => matcher_base.hpp} (67%) delete mode 100644 test/fail_number_of_arguments_greater_than_max_constant.cpp diff --git a/doc/changelog.qbk b/doc/changelog.qbk index c608e81..326f21a 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -15,6 +15,7 @@ Released - * Removed MOCK_*_TPL as they are no longer required, use the non _TPL variant even for templates * Added MOCK_PROTECT_SIGNATURE to pass function signatures with commas in the return type * Remove support for protecting function signatures via BOOST_IDENTITY_TYPE, use MOCK_PROTECT_SIGNATURE instead +* Add support for unlimitted number of arguments making MOCK_MAX_ARGS superflous [endsect] diff --git a/doc/customization.qbk b/doc/customization.qbk index 6946cff..69e1835 100644 --- a/doc/customization.qbk +++ b/doc/customization.qbk @@ -110,24 +110,6 @@ For more information about the serialization operator and the use of mock::forma [endsect] -[section Number of arguments] - -The maximum number of arguments a mocked method can have is defined by MOCK_MAX_ARGS. -By default this value is set to 9, but if needed it can be changed before including the library : - -[max_args] - -This means methods with up to 20 arguments will then be accepted. - -The mock object library uses several boost libraries and will adjust some of their constants if they haven't already been defined : - -* Boost.Function with BOOST_FUNCTION_MAX_ARGS required at MOCK_MAX_ARGS or higher -* Boost.FunctionTypes with BOOST_FT_MAX_ARITY required at MOCK_MAX_ARGS + 1 or higher - -A compilation error will happen if one of those constants is already defined too low. - -[endsect] - [section Test framework integration] By default the library expects to be used in conjunction with Boost.Test e.g. : diff --git a/doc/example/customization.cpp b/doc/example/customization.cpp index 6e0c839..dae9ccb 100644 --- a/doc/example/customization.cpp +++ b/doc/example/customization.cpp @@ -145,12 +145,6 @@ BOOST_AUTO_TEST_CASE(near_constraint_works_with_with_float_wrapper_and_cref) } } // namespace near_constraint_cref_test -#undef MOCK_MAX_ARGS -//[ max_args -#define MOCK_MAX_ARGS 20 -#include -//] - #if defined(__GNUC__) # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wunused-parameter" diff --git a/include/turtle/config.hpp b/include/turtle/config.hpp index b2a0f68..d60fe72 100644 --- a/include/turtle/config.hpp +++ b/include/turtle/config.hpp @@ -18,10 +18,6 @@ # define MOCK_USE_BOOST_TEST #endif -#ifndef MOCK_MAX_ARGS -# define MOCK_MAX_ARGS 9 -#endif - #ifndef MOCK_MAX_SEQUENCES # define MOCK_MAX_SEQUENCES 10 #endif diff --git a/include/turtle/detail/expectation.hpp b/include/turtle/detail/expectation.hpp new file mode 100644 index 0000000..5c23895 --- /dev/null +++ b/include/turtle/detail/expectation.hpp @@ -0,0 +1,184 @@ +// http://turtle.sourceforge.net +// +// Copyright Mathieu Champlon 2012 +// +// 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_EXPECTATION_HPP_INCLUDED +#define MOCK_EXPECTATION_HPP_INCLUDED + +#include "../matcher.hpp" +#include "../sequence.hpp" +#include "action.hpp" +#include "invocation.hpp" +#include "matcher_base.hpp" +#include +#include +#include +#include + +namespace mock { namespace detail { + template + class default_matcher : public matcher_base + { + private: + bool operator()(typename ref_arg::type...) override { return true; } + void serialize(std::ostream& s) const override + { + for(unsigned i = 0; i < sizeof...(Args); ++i) + { + if(i) + s << ", "; + s << "any"; + } + } + }; + + template + class single_matcher; + + template + class single_matcher : public matcher_base + { + static_assert(sizeof...(Args) > 0, "This class is only useful for functions with arguments"); + static_assert(sizeof...(Constraints) == sizeof...(Args), "Need exactly 1 constraint per argument"); + + public: + single_matcher(Constraints... constraints) : matchers_(matcher(constraints)...) {} + + private: + template + bool is_valid_impl(std::index_sequence, typename ref_arg::type... t) + { + using expander = bool[]; + bool result = true; + (void)expander{ result &= std::get(matchers_)(std::forward(t))... }; + return result; + } + bool operator()(typename ref_arg::type... t) override + { + return is_valid_impl(std::make_index_sequence{}, std::forward(t)...); + } + template + void serialize_impl(std::index_sequence, std::ostream& s) const + { + using expander = int[]; + s << std::get<0>(matchers_); + (void)expander{ 0, (s << ", " << std::get(matchers_), 0)... }; + } + void serialize(std::ostream& s) const override + { + serialize_impl(std::make_index_sequence{}, s); + } + + private: + std::tuple...> matchers_; + }; + + template + class multi_matcher : public matcher_base + { + static_assert(sizeof...(Args) > 0, "This class is only useful for functions with arguments"); + + public: + multi_matcher(const F& f) : f_(f) {} + + private: + bool operator()(typename ref_arg::type... t) override { return f_(std::forward(t)...); } + void serialize(std::ostream& s) const override { s << mock::format(f_); } + + private: + F f_; + }; + + template + class expectation; + + template + class expectation : public action + { + static constexpr auto arity = sizeof...(Args); + + public: + expectation() : expectation("unknown location", 0) {} + expectation(const char* file, int line) + : invocation_(std::make_unique()), matcher_(std::make_unique>()), + file_(file), line_(line) + {} + + expectation(expectation&&) = default; + expectation(expectation const&) = default; + expectation& operator=(expectation&&) = default; + expectation& operator=(expectation const&) = default; + + ~expectation() + { + for(auto& sequence : sequences_) + sequence->remove(this); + } + + void invoke(std::unique_ptr i) { invocation_ = std::move(i); } + + template + std::enable_if_t<(arity > 0) && sizeof...(Constraints) == arity, expectation&> with(Constraints... c) + { + matcher_ = std::make_unique>(c...); + return *this; + } + template + std::enable_if_t<(Arity > 1), expectation&> with(const Constraint& c) + { + matcher_ = std::make_unique>(c); + return *this; + } + + void add(sequence& s) + { + s.impl_->add(this); + sequences_.push_back(s.impl_); + } + + bool verify() const { return invocation_->verify(); } + + bool is_valid(typename ref_arg::type... t) const + { + return !invocation_->exhausted() && (*matcher_)(std::forward(t)...); + } + + bool invoke() const + { + for(auto& sequence : sequences_) + { + if(!sequence->is_valid(this)) + return false; + } + bool result = invocation_->invoke(); + for(auto& sequence : sequences_) + sequence->invalidate(this); + return result; + } + + const char* file() const { return file_; } + int line() const { return line_; } + + friend std::ostream& operator<<(std::ostream& s, const expectation& e) + { + s << (e.invocation_->exhausted() ? 'v' : '.') << ' ' << *e.invocation_; + constexpr bool hasArguments = arity > 0u; + if(hasArguments) + s << ".with( " << *e.matcher_ << " )"; + return s; + } + + private: + std::unique_ptr invocation_; + std::unique_ptr> matcher_; + std::vector> sequences_; + const char* file_; + int line_; + }; +}} // namespace mock::detail + +#endif // MOCK_EXPECTATION_HPP_INCLUDED diff --git a/include/turtle/detail/expectation_template.hpp b/include/turtle/detail/expectation_template.hpp deleted file mode 100644 index 3f42263..0000000 --- a/include/turtle/detail/expectation_template.hpp +++ /dev/null @@ -1,201 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2012 -// -// 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) - -#include "matcher_base_template.hpp" - -#define MOCK_EXPECTATION_INITIALIZE(z, n, d) BOOST_PP_COMMA_IF(n) c##n##_(c##n) - -#define MOCK_EXPECTATION_MEMBER(z, n, d) matcher c##n##_; - -#define MOCK_EXPECTATION_IS_VALID(z, n, d) BOOST_PP_IF(n, &&, ) c##n##_(std::forward(a##n)) - -#define MOCK_EXPECTATION_SERIALIZE(z, n, d) BOOST_PP_IF(n, << ", " <<, ) c##n##_ - -#define MOCK_EXPECTATION_SERIALIZE_ANY(z, n, d) BOOST_PP_IF(n, << ", " <<, ) "any" - -#define MOCK_EXPECTATION_PARAM(z, n, Args) std::forward(a##n) - -#define MOCK_REF_ARG(z, n, d) typename ref_arg::type a##n - -#define MOCK_REF_ARG_T(z, n, d) typename ref_arg::type - -namespace mock { namespace detail { - template - class default_matcher; - - template - class default_matcher : - public matcher_base - { - private: - virtual bool operator()(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_REF_ARG_T, _)) { return true; } - virtual void serialize(std::ostream& s) const - { - s << "" BOOST_PP_REPEAT(MOCK_NUM_ARGS, MOCK_EXPECTATION_SERIALIZE_ANY, _); - } - }; - -#ifndef MOCK_NUM_ARGS_0 - - template - class single_matcher; - - template - class single_matcher : - public matcher_base - { - public: - single_matcher(BOOST_PP_ENUM_BINARY_PARAMS(MOCK_NUM_ARGS, Constraint_, c)) - : BOOST_PP_REPEAT(MOCK_NUM_ARGS, MOCK_EXPECTATION_INITIALIZE, _) - {} - - private: - virtual bool operator()(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_REF_ARG, _)) - { - return BOOST_PP_REPEAT(MOCK_NUM_ARGS, MOCK_EXPECTATION_IS_VALID, _); - } - virtual void serialize(std::ostream& s) const - { - s << BOOST_PP_REPEAT(MOCK_NUM_ARGS, MOCK_EXPECTATION_SERIALIZE, _); - } - - private: - BOOST_PP_REPEAT(MOCK_NUM_ARGS, MOCK_EXPECTATION_MEMBER, _) - }; - - template - class multi_matcher; - - template - class multi_matcher : - public matcher_base - { - public: - multi_matcher(const F& f) : f_(f) {} - - private: - virtual bool operator()(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_REF_ARG, _)) - { - return f_(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_EXPECTATION_PARAM, _)); - } - virtual void serialize(std::ostream& s) const { s << mock::format(f_); } - - private: - F f_; - }; - -#endif - - template - class expectation; - - template - class expectation : - public action - { - public: - expectation() - : invocation_(std::make_unique()), - matcher_(std::make_unique>()), - file_("unknown location"), line_(0) - {} - expectation(const char* file, int line) - : invocation_(std::make_unique()), - matcher_(std::make_unique>()), file_(file), - line_(line) - {} - - expectation(expectation&&) = default; - expectation(expectation const&) = default; - expectation& operator=(expectation&&) = default; - expectation& operator=(expectation const&) = default; - - ~expectation() - { - for(auto& sequence : sequences_) - sequence->remove(this); - } - - void invoke(std::unique_ptr i) { invocation_ = std::move(i); } - -#ifndef MOCK_NUM_ARGS_0 - template - expectation& with(BOOST_PP_ENUM_BINARY_PARAMS(MOCK_NUM_ARGS, Constraint_, c)) - { - matcher_ = std::make_unique>( - BOOST_PP_ENUM_PARAMS(MOCK_NUM_ARGS, c)); - return *this; - } -# if MOCK_NUM_ARGS > 1 - template - expectation& with(const Constraint& c) - { - matcher_ = std::make_unique>(c); - return *this; - } -# endif -#endif - - void add(sequence& s) - { - s.impl_->add(this); - sequences_.push_back(s.impl_); - } - - bool verify() const { return invocation_->verify(); } - - bool is_valid(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_REF_ARG, _)) const - { - return !invocation_->exhausted() && (*matcher_)(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_EXPECTATION_PARAM, _)); - } - - bool invoke() const - { - for(auto& sequence : sequences_) - { - if(!sequence->is_valid(this)) - return false; - } - bool result = invocation_->invoke(); - for(auto& sequence : sequences_) - sequence->invalidate(this); - return result; - } - - const char* file() const { return file_; } - int line() const { return line_; } - - friend std::ostream& operator<<(std::ostream& s, const expectation& e) - { - return s << (e.invocation_->exhausted() ? 'v' : '.') << ' ' << *e.invocation_ -#ifndef MOCK_NUM_ARGS_0 - << ".with( " << *e.matcher_ << " )" -#endif - ; - } - - private: - std::unique_ptr invocation_; - std::unique_ptr> matcher_; - std::vector> sequences_; - const char* file_; - int line_; - }; -}} // namespace mock::detail - -#undef MOCK_EXPECTATION_INITIALIZE -#undef MOCK_EXPECTATION_MEMBER -#undef MOCK_EXPECTATION_IS_VALID -#undef MOCK_EXPECTATION_SERIALIZE -#undef MOCK_EXPECTATION_SERIALIZE_ANY -#undef MOCK_EXPECTATION_PARAM -#undef MOCK_REF_ARG -#undef MOCK_REF_ARG_T -#undef MOCK_RV_REF diff --git a/include/turtle/detail/function.hpp b/include/turtle/detail/function.hpp index f5ae558..288990a 100644 --- a/include/turtle/detail/function.hpp +++ b/include/turtle/detail/function.hpp @@ -10,88 +10,72 @@ #define MOCK_FUNCTION_HPP_INCLUDED #include "../config.hpp" -#include "../constraints.hpp" -#include "../error.hpp" #include "../log.hpp" -#include "../matcher.hpp" #include "../sequence.hpp" -#include "action.hpp" #include "context.hpp" -#include "invocation.hpp" -#include "move_helper.hpp" -#include "mutex.hpp" +#include "function_impl.hpp" #include "type_name.hpp" -#include "verifiable.hpp" #include -#include -#include -#include -#include -#include -#include #include -#include -#include #include -#include namespace mock { namespace detail { - template - struct wrapper_base - { - wrapper_base(E& e) : e_(&e) {} + template + class function; - template - void returns(T t) + template + class function + { + private: + typedef function_impl impl_type; + typedef typename impl_type::wrapper_type expectation_type; + typedef typename impl_type::error_type error_type; + + public: + function() : impl_(std::make_shared()) {} + + bool verify() const { return impl_->verify(); } + bool verify(const char* file, int line) const { - e_->returns(t); + error_type::pass(file, line); + return impl_->verify(); + } + void reset() { impl_->reset(); } + void reset(const char* file, int line) + { + error_type::pass(file, line); + impl_->reset(); } - E* e_; - }; - template - struct wrapper_base - { - wrapper_base(E& e) : e_(&e) {} - - E* e_; - }; - template - struct wrapper_base - { - wrapper_base(E& e) : e_(&e) {} - - void returns(R* r) { e_->returns(r); } - template - void returns(const std::reference_wrapper& r) + expectation_type expect(const char* file, int line) { - e_->returns(r); + error_type::pass(file, line); + return impl_->expect(file, line); + } + expectation_type expect() { return impl_->expect(); } + + R operator()(Ts... args) const { return (*impl_)(std::forward(args)...); } + + friend std::ostream& operator<<(std::ostream& s, const function& f) { return s << *f.impl_; } + + function& operator()(context& c, boost::unit_test::const_string instance) + { + impl_->add(c, impl_.get(), instance, boost::none, ""); + return *this; } - E* e_; - }; + void configure(context& c, + const void* p, + boost::unit_test::const_string instance, + boost::optional type, + boost::unit_test::const_string name) const + { + impl_->add(c, p, instance, type, name); + } - inline int exceptions() - { -#ifdef MOCK_UNCAUGHT_EXCEPTIONS - using namespace std; - return uncaught_exceptions(); -#else - return std::uncaught_exception() ? 1 : 0; -#endif - } + private: + std::shared_ptr impl_; + }; }} // namespace mock::detail -#define MOCK_NUM_ARGS 0 -#define MOCK_NUM_ARGS_0 -#include "function_template.hpp" -#undef MOCK_NUM_ARGS_0 -#undef MOCK_NUM_ARGS - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, MOCK_MAX_ARGS) -#include BOOST_PP_ITERATE() -#undef BOOST_PP_FILENAME_1 -#undef BOOST_PP_ITERATION_LIMITS - #endif // MOCK_FUNCTION_HPP_INCLUDED diff --git a/include/turtle/detail/function_impl_template.hpp b/include/turtle/detail/function_impl.hpp similarity index 71% rename from include/turtle/detail/function_impl_template.hpp rename to include/turtle/detail/function_impl.hpp index c9db991..8cbbd1f 100644 --- a/include/turtle/detail/function_impl_template.hpp +++ b/include/turtle/detail/function_impl.hpp @@ -6,29 +6,74 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#include "expectation_template.hpp" +#ifndef MOCK_FUNCTION_IMPL_HPP_INCLUDED +#define MOCK_FUNCTION_IMPL_HPP_INCLUDED + +#include "../error.hpp" +#include "expectation.hpp" +#include "mutex.hpp" +#include "verifiable.hpp" +#include +#include +#include +#include +#include #ifndef MOCK_ERROR_POLICY # error no error policy has been set #endif -#define MOCK_FUNCTION_FORMAT(z, n, N) << ' ' << mock::format(t##n) << BOOST_PP_IF(BOOST_PP_EQUAL(N, n), ' ', ',') - -#define MOCK_FUNCTION_CONTEXT \ - boost::unit_test::lazy_ostream::instance() \ - << lazy_context(this) << '(' BOOST_PP_REPEAT(MOCK_NUM_ARGS, MOCK_FUNCTION_FORMAT, BOOST_PP_DEC(MOCK_NUM_ARGS)) \ - << ')' << lazy_expectations(this) - -#define MOCK_FORWARD(z, n, d) std::forward(t##n) - namespace mock { namespace detail { + template + struct wrapper_base + { + wrapper_base(E& e) : e_(&e) {} + + template + void returns(T t) + { + e_->returns(t); + } + + E* e_; + }; + template + struct wrapper_base + { + wrapper_base(E& e) : e_(&e) {} + + E* e_; + }; + template + struct wrapper_base + { + wrapper_base(E& e) : e_(&e) {} + + void returns(R* r) { e_->returns(r); } + template + void returns(const std::reference_wrapper& r) + { + e_->returns(r); + } + + E* e_; + }; + + inline int exceptions() + { +#ifdef MOCK_UNCAUGHT_EXCEPTIONS + using namespace std; + return uncaught_exceptions(); +#else + return std::uncaught_exception() ? 1 : 0; +#endif + } + template class function_impl; - template - class function_impl : - public verifiable, - public std::enable_shared_from_this> + template + class function_impl : public verifiable, public std::enable_shared_from_this> { public: typedef safe_error> error_type; @@ -82,12 +127,13 @@ namespace mock { namespace detail { } private: - typedef expectation expectation_type; + typedef expectation expectation_type; class wrapper : public wrapper_base { private: typedef wrapper_base base_type; + static constexpr auto arity = sizeof...(Args); public: wrapper(const std::shared_ptr& m, expectation_type& e) : base_type(e), lock_(m) {} @@ -126,24 +172,18 @@ namespace mock { namespace detail { return *this; } -#ifndef MOCK_NUM_ARGS_0 - template - wrapper& with(BOOST_PP_ENUM_BINARY_PARAMS(MOCK_NUM_ARGS, Constraint_, c)) + /// Callable only for functions taking arguments + /// Number of constraints must match the number of arguments + /// or a single constraint checking all arguments must be passed + template + std::enable_if_t<(arity > 0u && (sizeof...(Constraints) == arity || sizeof...(Constraints) == 1u)), + wrapper&> + with(Constraints... c) { - this->e_->with(BOOST_PP_ENUM_PARAMS(MOCK_NUM_ARGS, c)); + this->e_->with(c...); return *this; } -# if MOCK_NUM_ARGS > 1 - template - wrapper& with(const Constraint& c) - { - this->e_->with(c); - return *this; - } -# endif -#endif - #define MOCK_FUNCTION_IN_ADD(z, n, d) this->e_->add(s##n); #define MOCK_FUNCTION_IN(z, n, d) \ @@ -195,13 +235,17 @@ namespace mock { namespace detail { return wrapper(mutex_, expectations_.back()); } - R operator()(BOOST_PP_ENUM_BINARY_PARAMS(MOCK_NUM_ARGS, T, t)) const + R operator()(Args... args) const { +// Due to lifetime rules of references this must be created and consumed in one line +#define MOCK_FUNCTION_CONTEXT \ + boost::unit_test::lazy_ostream::instance() << lazy_context(this) << lazy_args(args...) << lazy_expectations(this) + lock _(mutex_); valid_ = false; for(const auto& expectation : expectations_) { - if(expectation.is_valid(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_FORWARD, _))) + if(expectation.is_valid(std::forward(args)...)) { if(!expectation.invoke()) { @@ -218,12 +262,13 @@ namespace mock { namespace detail { valid_ = true; error_type::call(MOCK_FUNCTION_CONTEXT, expectation.file(), expectation.line()); if(expectation.functor()) - return expectation.functor()(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_FORWARD, _)); + return expectation.functor()(std::forward(args)...); return expectation.trigger(); } } error_type::fail("unexpected call", MOCK_FUNCTION_CONTEXT); return error_type::abort(); +#undef MOCK_FUNCTION_CONTEXT } void add(context& c, @@ -271,6 +316,29 @@ namespace mock { namespace detail { const function_impl* impl_; }; + struct lazy_args + { + lazy_args(std::add_lvalue_reference_t... args) : args_(args...) {} + friend std::ostream& operator<<(std::ostream& s, const lazy_args& a) + { + return a.print_impl(std::make_index_sequence{}, s); + } + + private: + std::tuple...> args_; + + template + std::ostream& print_impl(std::index_sequence, std::ostream& s) const + { + s << '('; + using expander = int[]; + (void)expander{ + 0, (s << ' ' << mock::format(std::get(args_)) << (sizeof...(Args) - 1u == I ? ' ' : ','), 0)... + }; + return s << ')'; + } + }; + std::list expectations_; context* context_; mutable bool valid_; @@ -279,6 +347,4 @@ namespace mock { namespace detail { }; }} // namespace mock::detail -#undef MOCK_FUNCTION_FORMAT -#undef MOCK_FUNCTION_CONTEXT -#undef MOCK_FORWARD +#endif // MOCK_FUNCTION_IMPL_HPP_INCLUDED diff --git a/include/turtle/detail/function_iterate.hpp b/include/turtle/detail/function_iterate.hpp deleted file mode 100644 index f86538e..0000000 --- a/include/turtle/detail/function_iterate.hpp +++ /dev/null @@ -1,11 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2012 -// -// 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) - -#define MOCK_NUM_ARGS BOOST_PP_ITERATION() -#include "function_template.hpp" -#undef MOCK_NUM_ARGS diff --git a/include/turtle/detail/function_template.hpp b/include/turtle/detail/function_template.hpp deleted file mode 100644 index 69a0e18..0000000 --- a/include/turtle/detail/function_template.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2008 -// -// 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) - -#include "function_impl_template.hpp" - -#define MOCK_FORWARD(z, n, d) std::forward(t##n) - -namespace mock { namespace detail { - template - class function; - - template - class function - { - private: - typedef function_impl impl_type; - typedef typename impl_type::wrapper_type expectation_type; - typedef typename impl_type::error_type error_type; - - public: - function() : impl_(std::make_shared()) {} - - bool verify() const { return impl_->verify(); } - bool verify(const char* file, int line) const - { - error_type::pass(file, line); - return impl_->verify(); - } - void reset() { impl_->reset(); } - void reset(const char* file, int line) - { - error_type::pass(file, line); - impl_->reset(); - } - - expectation_type expect(const char* file, int line) - { - error_type::pass(file, line); - return impl_->expect(file, line); - } - expectation_type expect() { return impl_->expect(); } - - R operator()(BOOST_PP_ENUM_BINARY_PARAMS(MOCK_NUM_ARGS, T, t)) const - { - return (*impl_)(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_FORWARD, _)); - } - - friend std::ostream& operator<<(std::ostream& s, const function& f) { return s << *f.impl_; } - - function& operator()(context& c, boost::unit_test::const_string instance) - { - impl_->add(c, impl_.get(), instance, boost::none, ""); - return *this; - } - - void configure(context& c, - const void* p, - boost::unit_test::const_string instance, - boost::optional type, - boost::unit_test::const_string name) const - { - impl_->add(c, p, instance, type, name); - } - - private: - std::shared_ptr impl_; - }; -}} // namespace mock::detail - -#undef MOCK_FORWARD diff --git a/include/turtle/detail/matcher_base_template.hpp b/include/turtle/detail/matcher_base.hpp similarity index 67% rename from include/turtle/detail/matcher_base_template.hpp rename to include/turtle/detail/matcher_base.hpp index 8a6199d..de16e22 100644 --- a/include/turtle/detail/matcher_base_template.hpp +++ b/include/turtle/detail/matcher_base.hpp @@ -6,14 +6,15 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#define MOCK_REF_ARG(z, n, d) typename ref_arg::type +#ifndef MOCK_MATCHER_BASE_HPP_INCLUDED +#define MOCK_MATCHER_BASE_HPP_INCLUDED + +#include "move_helper.hpp" +#include namespace mock { namespace detail { - template - class matcher_base; - - template - class matcher_base + template + class matcher_base { public: matcher_base() = default; @@ -21,7 +22,7 @@ namespace mock { namespace detail { matcher_base& operator=(const matcher_base&) = delete; virtual ~matcher_base() = default; - virtual bool operator()(BOOST_PP_ENUM(MOCK_NUM_ARGS, MOCK_REF_ARG, _)) = 0; + virtual bool operator()(typename ref_arg::type...) = 0; friend std::ostream& operator<<(std::ostream& s, const matcher_base& m) { @@ -34,4 +35,4 @@ namespace mock { namespace detail { }; }} // namespace mock::detail -#undef MOCK_REF_ARG +#endif // MOCK_MATCHER_BASE_HPP_INCLUDED diff --git a/include/turtle/detail/signature_traits.hpp b/include/turtle/detail/signature_traits.hpp index e6948f6..02c108f 100644 --- a/include/turtle/detail/signature_traits.hpp +++ b/include/turtle/detail/signature_traits.hpp @@ -6,8 +6,8 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#ifndef MOCK_PARAMETER_HPP_INCLUDED -#define MOCK_PARAMETER_HPP_INCLUDED +#ifndef MOCK_SIGNATURE_TRAITS_HPP_INCLUDED +#define MOCK_SIGNATURE_TRAITS_HPP_INCLUDED #include "../config.hpp" #include @@ -59,4 +59,4 @@ namespace mock { namespace detail { }} // namespace mock::detail -#endif // MOCK_PARAMETER_HPP_INCLUDED +#endif // MOCK_SIGNATURE_TRAITS_HPP_INCLUDED diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c43f646..486fdb7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -40,7 +40,7 @@ set(testsUsingUndefinedCPP test_function test_integration) foreach(testFile IN LISTS testFiles) get_filename_component(name ${testFile} NAME_WE) - foreach(testVariant IN ITEMS "" _max_args _use_conversions _thread_safe) + foreach(testVariant IN ITEMS "" _use_conversions _thread_safe) set(curName ${name}${testVariant}) add_executable(${curName} ${testFile}) if(name IN_LIST testsUsingUndefinedCPP) @@ -50,7 +50,6 @@ foreach(testFile IN LISTS testFiles) add_test(NAME ${curName} COMMAND ${curName}) endforeach() - target_compile_definitions(${name}_max_args PRIVATE MOCK_MAX_ARGS=21) target_compile_definitions(${name}_use_conversions PRIVATE MOCK_USE_CONVERSIONS) target_link_libraries(${name}_thread_safe PRIVATE Boost::thread) diff --git a/test/Jamfile.jam b/test/Jamfile.jam index 3e8768b..4575a0e 100644 --- a/test/Jamfile.jam +++ b/test/Jamfile.jam @@ -24,7 +24,6 @@ alias mock_inspect : rule run-test ( name ) { run $(name) defined_1.cpp defined_2.cpp undefined.cpp /boost//unit_test_framework : : : : $(name)_ ; - run $(name) undefined.cpp /boost//unit_test_framework : : : MOCK_MAX_ARGS=21 : $(name)_max_args ; run $(name) undefined.cpp /boost//unit_test_framework : : : MOCK_USE_CONVERSIONS : $(name)_use_conversions ; run $(name) undefined.cpp /boost//unit_test_framework /boost//thread : : : MOCK_THREAD_SAFE BOOST_THREAD_USES_MOVE multi : $(name)_thread_safe ; } diff --git a/test/fail_number_of_arguments_greater_than_max_constant.cpp b/test/fail_number_of_arguments_greater_than_max_constant.cpp deleted file mode 100644 index ef7378a..0000000 --- a/test/fail_number_of_arguments_greater_than_max_constant.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2011 -// -// 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) - -#include - -BOOST_STATIC_ASSERT(MOCK_MAX_ARGS == 9); - -namespace { -struct my_base -{ - virtual ~my_base() = default; - virtual void my_method(int, int, int, int, int, int, int, int, int, int) = 0; -}; - -MOCK_BASE_CLASS(my_class, my_base) -{ - MOCK_METHOD(my_method, 10) -}; -} // namespace diff --git a/test/test_matcher.cpp b/test/test_matcher.cpp index e966d2d..cc98be0 100644 --- a/test/test_matcher.cpp +++ b/test/test_matcher.cpp @@ -6,7 +6,7 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#include +#include #include #include #include @@ -88,16 +88,16 @@ std::string serialize(const T& t) BOOST_AUTO_TEST_CASE(default_matcher_is_serialized_to_any) { using mock::detail::default_matcher; - BOOST_TEST(serialize(default_matcher{}) == ""); - BOOST_TEST(serialize(default_matcher{}) == "any"); - BOOST_TEST(serialize(default_matcher{}) == "any, any"); - BOOST_TEST(serialize(default_matcher{}) == "any, any, any, any, any"); + BOOST_TEST(serialize(default_matcher<>{}) == ""); + BOOST_TEST(serialize(default_matcher{}) == "any"); + BOOST_TEST(serialize(default_matcher{}) == "any, any"); + BOOST_TEST(serialize(default_matcher{}) == "any, any, any, any, any"); } namespace { struct custom_constraint { - int expected_ = 42; + int expected_; custom_constraint(int expected = 42) : expected_(expected) {} friend std::ostream& operator<<(std::ostream& s, const custom_constraint& c) { @@ -110,16 +110,15 @@ struct custom_constraint BOOST_AUTO_TEST_CASE(single_matcher_serializes) { using mock::detail::single_matcher; - BOOST_TEST(serialize(single_matcher(1)) == "1"); - BOOST_TEST(serialize(single_matcher(1, 2)) == "1, 2"); + BOOST_TEST(serialize(single_matcher(1)) == "1"); + BOOST_TEST(serialize(single_matcher(1, 2)) == "1, 2"); BOOST_TEST( - serialize( - single_matcher, int, int), void(int, int, int, int, int)>( - 1, 2, custom_constraint(), 4, 5)) == "1, 2, custom42, 4, 5"); + serialize(single_matcher, int, int), int, int, int, int, int>( + 1, 2, custom_constraint(), 4, 5)) == "1, 2, custom42, 4, 5"); } BOOST_AUTO_TEST_CASE(multi_matcher_serializes) { using mock::detail::multi_matcher; - BOOST_TEST(serialize(multi_matcher(custom_constraint(1337))) == "custom1337"); + BOOST_TEST(serialize(multi_matcher(custom_constraint(1337))) == "custom1337"); } diff --git a/test/test_max_args.cpp b/test/test_max_args.cpp index 147089c..a062548 100644 --- a/test/test_max_args.cpp +++ b/test/test_max_args.cpp @@ -11,28 +11,30 @@ #include #include -#define IDENTITY(z, n, d) d +#define IDENTITY(z, n, text) text +// Number of arguments is (now) unlimited, so take any high value here +#define NUM_TEST_ARGS 100 namespace { struct my_custom_mock { - MOCK_METHOD(method, MOCK_MAX_ARGS, void(BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, int)), tag) - MOCK_METHOD(method2, MOCK_MAX_ARGS, int(BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, int)), tag_2) + MOCK_METHOD(method, NUM_TEST_ARGS, void(BOOST_PP_ENUM(NUM_TEST_ARGS, IDENTITY, int)), tag) + MOCK_METHOD(method2, NUM_TEST_ARGS, int(BOOST_PP_ENUM(NUM_TEST_ARGS, IDENTITY, int)), tag_2) }; } // namespace BOOST_FIXTURE_TEST_CASE(call_mock_method_with_max_number_of_args, mock_error_fixture) { my_custom_mock m; - MOCK_EXPECT(m.tag).once().with(BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0)); - m.method(BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0)); + MOCK_EXPECT(m.tag).once().with(BOOST_PP_ENUM(NUM_TEST_ARGS, IDENTITY, 0)); + m.method(BOOST_PP_ENUM(NUM_TEST_ARGS, IDENTITY, 0)); CHECK_CALLS(1); } BOOST_FIXTURE_TEST_CASE(call_mock_method_with_max_number_of_args_and_a_return_value, mock_error_fixture) { my_custom_mock m; - MOCK_EXPECT(m.tag_2).once().with(BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0)).returns(42); - BOOST_CHECK_EQUAL(42, m.method2(BOOST_PP_ENUM(MOCK_MAX_ARGS, IDENTITY, 0))); + MOCK_EXPECT(m.tag_2).once().with(BOOST_PP_ENUM(NUM_TEST_ARGS, IDENTITY, 0)).returns(42); + BOOST_CHECK_EQUAL(42, m.method2(BOOST_PP_ENUM(NUM_TEST_ARGS, IDENTITY, 0))); CHECK_CALLS(1); } From baaaa154894710174ccd8411da825a8b2e0787c6 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Sat, 5 Feb 2022 20:22:08 +0100 Subject: [PATCH 2/7] Workaround compiler issues (constant conditions, compiler bugs...) MSVC has issues with a tuple of references of incomplete classes and `virtual ~value() = default;` Some compilers warn for constant expressions in the for-loop-condition --- include/turtle/detail/action.hpp | 39 +++++++------- include/turtle/detail/expectation.hpp | 9 ++-- include/turtle/detail/function_impl.hpp | 70 ++++++++++++++++--------- 3 files changed, 70 insertions(+), 48 deletions(-) diff --git a/include/turtle/detail/action.hpp b/include/turtle/detail/action.hpp index 7bc5fa0..8b267e5 100644 --- a/include/turtle/detail/action.hpp +++ b/include/turtle/detail/action.hpp @@ -62,6 +62,27 @@ namespace mock { namespace detail { action_type a_; }; + /// Type erased value storage + struct value + { + value() = default; + value(const value&) = delete; + value& operator=(const value&) = delete; + virtual ~value() = default; + }; + /// Actual value storage, + /// holds an instance of T (stripped of reference qualifiers) + template + struct value_imp : value + { + using type = std::remove_const_t>; + + template + value_imp(U&& t) : t_(std::forward(t)) + {} + type t_; + }; + template class action : public action_base { @@ -85,24 +106,6 @@ namespace mock { namespace detail { } private: - struct value - { - value() = default; - value(const value&) = delete; - value& operator=(const value&) = delete; - virtual ~value() = default; - }; - template - struct value_imp : value - { - typedef std::remove_const_t> type; - - template - value_imp(U&& t) : t_(std::forward(t)) - {} - type t_; - }; - template typename value_imp::type& store(T&& t) { diff --git a/include/turtle/detail/expectation.hpp b/include/turtle/detail/expectation.hpp index 5c23895..cd107dc 100644 --- a/include/turtle/detail/expectation.hpp +++ b/include/turtle/detail/expectation.hpp @@ -27,7 +27,8 @@ namespace mock { namespace detail { bool operator()(typename ref_arg::type...) override { return true; } void serialize(std::ostream& s) const override { - for(unsigned i = 0; i < sizeof...(Args); ++i) + constexpr auto arity = sizeof...(Args); + for(unsigned i = 0; i < arity; ++i) { if(i) s << ", "; @@ -99,7 +100,7 @@ namespace mock { namespace detail { template class expectation : public action { - static constexpr auto arity = sizeof...(Args); + static constexpr std::size_t arity = sizeof...(Args); public: expectation() : expectation("unknown location", 0) {} @@ -122,13 +123,13 @@ namespace mock { namespace detail { void invoke(std::unique_ptr i) { invocation_ = std::move(i); } template - std::enable_if_t<(arity > 0) && sizeof...(Constraints) == arity, expectation&> with(Constraints... c) + std::enable_if_t<(arity > 0u) && sizeof...(Constraints) == arity, expectation&> with(Constraints... c) { matcher_ = std::make_unique>(c...); return *this; } template - std::enable_if_t<(Arity > 1), expectation&> with(const Constraint& c) + std::enable_if_t<(Arity > 1u), expectation&> with(const Constraint& c) { matcher_ = std::make_unique>(c); return *this; diff --git a/include/turtle/detail/function_impl.hpp b/include/turtle/detail/function_impl.hpp index 8cbbd1f..1c0bea4 100644 --- a/include/turtle/detail/function_impl.hpp +++ b/include/turtle/detail/function_impl.hpp @@ -69,6 +69,9 @@ namespace mock { namespace detail { #endif } + template + class lazy_args; + template class function_impl; @@ -133,7 +136,7 @@ namespace mock { namespace detail { { private: typedef wrapper_base base_type; - static constexpr auto arity = sizeof...(Args); + static constexpr std::size_t arity = sizeof...(Args); public: wrapper(const std::shared_ptr& m, expectation_type& e) : base_type(e), lock_(m) {} @@ -238,8 +241,9 @@ namespace mock { namespace detail { R operator()(Args... args) const { // Due to lifetime rules of references this must be created and consumed in one line -#define MOCK_FUNCTION_CONTEXT \ - boost::unit_test::lazy_ostream::instance() << lazy_context(this) << lazy_args(args...) << lazy_expectations(this) +#define MOCK_FUNCTION_CONTEXT \ + boost::unit_test::lazy_ostream::instance() \ + << lazy_context(this) << lazy_args(args...) << lazy_expectations(this) lock _(mutex_); valid_ = false; @@ -316,35 +320,49 @@ namespace mock { namespace detail { const function_impl* impl_; }; - struct lazy_args - { - lazy_args(std::add_lvalue_reference_t... args) : args_(args...) {} - friend std::ostream& operator<<(std::ostream& s, const lazy_args& a) - { - return a.print_impl(std::make_index_sequence{}, s); - } - - private: - std::tuple...> args_; - - template - std::ostream& print_impl(std::index_sequence, std::ostream& s) const - { - s << '('; - using expander = int[]; - (void)expander{ - 0, (s << ' ' << mock::format(std::get(args_)) << (sizeof...(Args) - 1u == I ? ' ' : ','), 0)... - }; - return s << ')'; - } - }; - std::list expectations_; context* context_; mutable bool valid_; const int exceptions_; const std::shared_ptr mutex_; }; + + template + class lazy_args : lazy_args + { + ArgFirst& arg_; + + public: + lazy_args(ArgFirst& arg, std::add_lvalue_reference_t... args) + : lazy_args(args...), arg_(arg) + {} + std::ostream& print(std::ostream& s) const + { + s << ' ' << mock::format(arg_) << ','; + return lazy_args::print(s); + } + }; + template + class lazy_args + { + ArgFirst& arg_; + + public: + lazy_args(ArgFirst& arg) : arg_(arg) {} + std::ostream& print(std::ostream& s) const { return s << ' ' << mock::format(arg_) << ' '; } + }; + template<> + class lazy_args<> + { + public: + std::ostream& print(std::ostream& s) const { return s; } + }; + template + std::ostream& operator<<(std::ostream& s, const lazy_args& a) + { + s << '('; + return a.print(s) << ')'; + } }} // namespace mock::detail #endif // MOCK_FUNCTION_IMPL_HPP_INCLUDED From f3dc82f3054474df666382a73adde5e77313441e Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Mon, 7 Feb 2022 16:23:23 +0100 Subject: [PATCH 3/7] Rename move_helper.hpp to ref_arg.hpp and use template alias Shortens the call sites a lot: `typename ref_arg::type` -> `ref_arg_t` MSVC 2017 seems to have issues with std::conditional_t so use the C++11 variant here. --- include/turtle/constraints.hpp | 1 - include/turtle/detail/expectation.hpp | 16 ++++++++-------- include/turtle/detail/function.hpp | 2 +- include/turtle/detail/function_impl.hpp | 4 ++-- include/turtle/detail/matcher_base.hpp | 6 +++--- include/turtle/detail/move_helper.hpp | 19 ------------------- include/turtle/detail/ref_arg.hpp | 22 ++++++++++++++++++++++ include/turtle/matcher.hpp | 12 +++--------- 8 files changed, 39 insertions(+), 43 deletions(-) delete mode 100644 include/turtle/detail/move_helper.hpp create mode 100644 include/turtle/detail/ref_arg.hpp diff --git a/include/turtle/constraints.hpp b/include/turtle/constraints.hpp index 14e5458..572b7d9 100644 --- a/include/turtle/constraints.hpp +++ b/include/turtle/constraints.hpp @@ -11,7 +11,6 @@ #include "config.hpp" #include "constraint.hpp" -#include "detail/move_helper.hpp" #include "detail/void_t.hpp" #include "unwrap_reference.hpp" #include diff --git a/include/turtle/detail/expectation.hpp b/include/turtle/detail/expectation.hpp index cd107dc..18b9bb2 100644 --- a/include/turtle/detail/expectation.hpp +++ b/include/turtle/detail/expectation.hpp @@ -24,7 +24,7 @@ namespace mock { namespace detail { class default_matcher : public matcher_base { private: - bool operator()(typename ref_arg::type...) override { return true; } + bool operator()(ref_arg_t...) override { return true; } void serialize(std::ostream& s) const override { constexpr auto arity = sizeof...(Args); @@ -51,16 +51,16 @@ namespace mock { namespace detail { private: template - bool is_valid_impl(std::index_sequence, typename ref_arg::type... t) + bool is_valid_impl(std::index_sequence, ref_arg_t... t) { using expander = bool[]; bool result = true; - (void)expander{ result &= std::get(matchers_)(std::forward(t))... }; + (void)expander{ result &= std::get(matchers_)(static_cast>(t))... }; return result; } - bool operator()(typename ref_arg::type... t) override + bool operator()(ref_arg_t... t) override { - return is_valid_impl(std::make_index_sequence{}, std::forward(t)...); + return is_valid_impl(std::make_index_sequence{}, static_cast>(t)...); } template void serialize_impl(std::index_sequence, std::ostream& s) const @@ -87,7 +87,7 @@ namespace mock { namespace detail { multi_matcher(const F& f) : f_(f) {} private: - bool operator()(typename ref_arg::type... t) override { return f_(std::forward(t)...); } + bool operator()(ref_arg_t... t) override { return f_(static_cast>(t)...); } void serialize(std::ostream& s) const override { s << mock::format(f_); } private: @@ -143,9 +143,9 @@ namespace mock { namespace detail { bool verify() const { return invocation_->verify(); } - bool is_valid(typename ref_arg::type... t) const + bool is_valid(ref_arg_t... t) const { - return !invocation_->exhausted() && (*matcher_)(std::forward(t)...); + return !invocation_->exhausted() && (*matcher_)(static_cast>(t)...); } bool invoke() const diff --git a/include/turtle/detail/function.hpp b/include/turtle/detail/function.hpp index 288990a..e4e8c64 100644 --- a/include/turtle/detail/function.hpp +++ b/include/turtle/detail/function.hpp @@ -54,7 +54,7 @@ namespace mock { namespace detail { } expectation_type expect() { return impl_->expect(); } - R operator()(Ts... args) const { return (*impl_)(std::forward(args)...); } + R operator()(Ts... args) const { return (*impl_)(static_cast>(args)...); } friend std::ostream& operator<<(std::ostream& s, const function& f) { return s << *f.impl_; } diff --git a/include/turtle/detail/function_impl.hpp b/include/turtle/detail/function_impl.hpp index 1c0bea4..a396718 100644 --- a/include/turtle/detail/function_impl.hpp +++ b/include/turtle/detail/function_impl.hpp @@ -249,7 +249,7 @@ namespace mock { namespace detail { valid_ = false; for(const auto& expectation : expectations_) { - if(expectation.is_valid(std::forward(args)...)) + if(expectation.is_valid(static_cast>(args)...)) { if(!expectation.invoke()) { @@ -266,7 +266,7 @@ namespace mock { namespace detail { valid_ = true; error_type::call(MOCK_FUNCTION_CONTEXT, expectation.file(), expectation.line()); if(expectation.functor()) - return expectation.functor()(std::forward(args)...); + return expectation.functor()(static_cast>(args)...); return expectation.trigger(); } } diff --git a/include/turtle/detail/matcher_base.hpp b/include/turtle/detail/matcher_base.hpp index de16e22..abb1fb9 100644 --- a/include/turtle/detail/matcher_base.hpp +++ b/include/turtle/detail/matcher_base.hpp @@ -9,11 +9,11 @@ #ifndef MOCK_MATCHER_BASE_HPP_INCLUDED #define MOCK_MATCHER_BASE_HPP_INCLUDED -#include "move_helper.hpp" +#include "ref_arg.hpp" #include namespace mock { namespace detail { - template + template class matcher_base { public: @@ -22,7 +22,7 @@ namespace mock { namespace detail { matcher_base& operator=(const matcher_base&) = delete; virtual ~matcher_base() = default; - virtual bool operator()(typename ref_arg::type...) = 0; + virtual bool operator()(ref_arg_t...) = 0; friend std::ostream& operator<<(std::ostream& s, const matcher_base& m) { diff --git a/include/turtle/detail/move_helper.hpp b/include/turtle/detail/move_helper.hpp deleted file mode 100644 index 18e303a..0000000 --- a/include/turtle/detail/move_helper.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2018 -// -// 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_MOVE_HELPER_HPP_INCLUDED -#define MOCK_MOVE_HELPER_HPP_INCLUDED - -#include - -namespace mock { namespace detail { - template - using ref_arg = std::conditional::value, T, std::add_rvalue_reference_t>; -}} // namespace mock::detail - -#endif // MOCK_MOVE_HELPER_HPP_INCLUDED diff --git a/include/turtle/detail/ref_arg.hpp b/include/turtle/detail/ref_arg.hpp new file mode 100644 index 0000000..abd755f --- /dev/null +++ b/include/turtle/detail/ref_arg.hpp @@ -0,0 +1,22 @@ +// http://turtle.sourceforge.net +// +// Copyright Mathieu Champlon 2018 +// +// 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_REF_ARG_HPP_INCLUDED +#define MOCK_REF_ARG_HPP_INCLUDED + +#include + +namespace mock { namespace detail { + /// Make T a reference type: + /// If T is already a reference type, return T, else return an rvalue reference to T + /// Useful to pass along arguments keeping the ability to modify them (e.g. move from them) + template + using ref_arg_t = typename std::conditional::value, T, std::add_rvalue_reference_t>::type; +}} // namespace mock::detail + +#endif // MOCK_REF_ARG_HPP_INCLUDED diff --git a/include/turtle/matcher.hpp b/include/turtle/matcher.hpp index 249500f..7854d77 100644 --- a/include/turtle/matcher.hpp +++ b/include/turtle/matcher.hpp @@ -12,7 +12,7 @@ #include "config.hpp" #include "constraints.hpp" #include "detail/is_functor.hpp" -#include "detail/move_helper.hpp" +#include "detail/ref_arg.hpp" #include "log.hpp" #include #include @@ -51,10 +51,7 @@ class matcher> { public: explicit matcher(const constraint& c) : c_(c.c_) {} - bool operator()(typename detail::ref_arg::type actual) - { - return c_(std::forward::type>(actual)); - } + bool operator()(detail::ref_arg_t actual) { return c_(static_cast>(actual)); } friend std::ostream& operator<<(std::ostream& s, const matcher& m) { return s << mock::format(m.c_); } private: @@ -66,10 +63,7 @@ class matcher::type actual) - { - return c_(std::forward::type>(actual)); - } + bool operator()(detail::ref_arg_t actual) { return c_(static_cast>(actual)); } friend std::ostream& operator<<(std::ostream& s, const matcher& m) { return s << mock::format(m.c_); } private: From c34e4224fe54088d3480f093eec16c9817fde1b3 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Mon, 7 Feb 2022 16:31:20 +0100 Subject: [PATCH 4/7] Remove benchmarks using MOCK_MAX_ARGS No longer required. --- test/bench_0_class_10_max_args.cpp | 15 - test/bench_0_class_20_max_args.cpp | 15 - test/bench_0_class_30_max_args.cpp | 15 - ...> bench_30_classes_30_methods_30_args.cpp} | 1 - ..._classes_30_methods_9_args_10_max_args.cpp | 1078 ----------------- ..._classes_30_methods_9_args_20_max_args.cpp | 1078 ----------------- ..._classes_30_methods_9_args_30_max_args.cpp | 1078 ----------------- 7 files changed, 3280 deletions(-) delete mode 100644 test/bench_0_class_10_max_args.cpp delete mode 100644 test/bench_0_class_20_max_args.cpp delete mode 100644 test/bench_0_class_30_max_args.cpp rename test/{bench_30_classes_30_methods_30_args_30_max_args.cpp => bench_30_classes_30_methods_30_args.cpp} (99%) delete mode 100644 test/bench_30_classes_30_methods_9_args_10_max_args.cpp delete mode 100644 test/bench_30_classes_30_methods_9_args_20_max_args.cpp delete mode 100644 test/bench_30_classes_30_methods_9_args_30_max_args.cpp diff --git a/test/bench_0_class_10_max_args.cpp b/test/bench_0_class_10_max_args.cpp deleted file mode 100644 index 99fb400..0000000 --- a/test/bench_0_class_10_max_args.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2011 -// -// 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) - -#define MOCK_MAX_ARGS 10 -#include - -int main() -{ - return 0; -} diff --git a/test/bench_0_class_20_max_args.cpp b/test/bench_0_class_20_max_args.cpp deleted file mode 100644 index 1a52cd5..0000000 --- a/test/bench_0_class_20_max_args.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2011 -// -// 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) - -#define MOCK_MAX_ARGS 20 -#include - -int main() -{ - return 0; -} diff --git a/test/bench_0_class_30_max_args.cpp b/test/bench_0_class_30_max_args.cpp deleted file mode 100644 index 3eab294..0000000 --- a/test/bench_0_class_30_max_args.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2011 -// -// 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) - -#define MOCK_MAX_ARGS 30 -#include - -int main() -{ - return 0; -} diff --git a/test/bench_30_classes_30_methods_30_args_30_max_args.cpp b/test/bench_30_classes_30_methods_30_args.cpp similarity index 99% rename from test/bench_30_classes_30_methods_30_args_30_max_args.cpp rename to test/bench_30_classes_30_methods_30_args.cpp index 53bebcd..7f14ebd 100644 --- a/test/bench_30_classes_30_methods_30_args_30_max_args.cpp +++ b/test/bench_30_classes_30_methods_30_args.cpp @@ -6,7 +6,6 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#define MOCK_MAX_ARGS 30 #include #ifdef _MSC_VER # pragma warning(disable : 4505) diff --git a/test/bench_30_classes_30_methods_9_args_10_max_args.cpp b/test/bench_30_classes_30_methods_9_args_10_max_args.cpp deleted file mode 100644 index a69d3d9..0000000 --- a/test/bench_30_classes_30_methods_9_args_10_max_args.cpp +++ /dev/null @@ -1,1078 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2011 -// -// 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) - -#define MOCK_MAX_ARGS 10 -#include -#ifdef _MSC_VER -# pragma warning(disable : 4505) -#endif - -namespace { -class base_class -{ -public: - virtual ~base_class() = default; - virtual void f1(int, int, int, int, int, int, int, int, int) = 0; - virtual void f2(int, int, int, int, int, int, int, int, int) = 0; - virtual void f3(int, int, int, int, int, int, int, int, int) = 0; - virtual void f4(int, int, int, int, int, int, int, int, int) = 0; - virtual void f5(int, int, int, int, int, int, int, int, int) = 0; - virtual void f6(int, int, int, int, int, int, int, int, int) = 0; - virtual void f7(int, int, int, int, int, int, int, int, int) = 0; - virtual void f8(int, int, int, int, int, int, int, int, int) = 0; - virtual void f9(int, int, int, int, int, int, int, int, int) = 0; - virtual void f10(int, int, int, int, int, int, int, int, int) = 0; - virtual void f11(int, int, int, int, int, int, int, int, int) = 0; - virtual void f12(int, int, int, int, int, int, int, int, int) = 0; - virtual void f13(int, int, int, int, int, int, int, int, int) = 0; - virtual void f14(int, int, int, int, int, int, int, int, int) = 0; - virtual void f15(int, int, int, int, int, int, int, int, int) = 0; - virtual void f16(int, int, int, int, int, int, int, int, int) = 0; - virtual void f17(int, int, int, int, int, int, int, int, int) = 0; - virtual void f18(int, int, int, int, int, int, int, int, int) = 0; - virtual void f19(int, int, int, int, int, int, int, int, int) = 0; - virtual void f20(int, int, int, int, int, int, int, int, int) = 0; - virtual void f21(int, int, int, int, int, int, int, int, int) = 0; - virtual void f22(int, int, int, int, int, int, int, int, int) = 0; - virtual void f23(int, int, int, int, int, int, int, int, int) = 0; - virtual void f24(int, int, int, int, int, int, int, int, int) = 0; - virtual void f25(int, int, int, int, int, int, int, int, int) = 0; - virtual void f26(int, int, int, int, int, int, int, int, int) = 0; - virtual void f27(int, int, int, int, int, int, int, int, int) = 0; - virtual void f28(int, int, int, int, int, int, int, int, int) = 0; - virtual void f29(int, int, int, int, int, int, int, int, int) = 0; - virtual void f30(int, int, int, int, int, int, int, int, int) = 0; -}; - -MOCK_BASE_CLASS(mock_class_1, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_2, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_3, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_4, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_5, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_6, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_7, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_8, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_9, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_10, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_11, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_12, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_13, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_14, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_15, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_16, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_17, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_18, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_19, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_20, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_21, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_22, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_23, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_24, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_25, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_26, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_27, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_28, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_29, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_30, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; - -mock_class_1 c_1; -mock_class_2 c_2; -mock_class_3 c_3; -mock_class_4 c_4; -mock_class_5 c_5; -mock_class_6 c_6; -mock_class_7 c_7; -mock_class_8 c_8; -mock_class_9 c_9; -mock_class_10 c_10; -mock_class_11 c_11; -mock_class_12 c_12; -mock_class_13 c_13; -mock_class_14 c_14; -mock_class_15 c_15; -mock_class_16 c_16; -mock_class_17 c_17; -mock_class_18 c_18; -mock_class_19 c_19; -mock_class_20 c_20; -mock_class_21 c_21; -mock_class_22 c_22; -mock_class_23 c_23; -mock_class_24 c_24; -mock_class_25 c_25; -mock_class_26 c_26; -mock_class_27 c_27; -mock_class_28 c_28; -mock_class_29 c_29; -mock_class_30 c_30; -} // namespace - -int main() -{ - return 0; -} diff --git a/test/bench_30_classes_30_methods_9_args_20_max_args.cpp b/test/bench_30_classes_30_methods_9_args_20_max_args.cpp deleted file mode 100644 index c245b25..0000000 --- a/test/bench_30_classes_30_methods_9_args_20_max_args.cpp +++ /dev/null @@ -1,1078 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2011 -// -// 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) - -#define MOCK_MAX_ARGS 20 -#include -#ifdef _MSC_VER -# pragma warning(disable : 4505) -#endif - -namespace { -class base_class -{ -public: - virtual ~base_class() = default; - virtual void f1(int, int, int, int, int, int, int, int, int) = 0; - virtual void f2(int, int, int, int, int, int, int, int, int) = 0; - virtual void f3(int, int, int, int, int, int, int, int, int) = 0; - virtual void f4(int, int, int, int, int, int, int, int, int) = 0; - virtual void f5(int, int, int, int, int, int, int, int, int) = 0; - virtual void f6(int, int, int, int, int, int, int, int, int) = 0; - virtual void f7(int, int, int, int, int, int, int, int, int) = 0; - virtual void f8(int, int, int, int, int, int, int, int, int) = 0; - virtual void f9(int, int, int, int, int, int, int, int, int) = 0; - virtual void f10(int, int, int, int, int, int, int, int, int) = 0; - virtual void f11(int, int, int, int, int, int, int, int, int) = 0; - virtual void f12(int, int, int, int, int, int, int, int, int) = 0; - virtual void f13(int, int, int, int, int, int, int, int, int) = 0; - virtual void f14(int, int, int, int, int, int, int, int, int) = 0; - virtual void f15(int, int, int, int, int, int, int, int, int) = 0; - virtual void f16(int, int, int, int, int, int, int, int, int) = 0; - virtual void f17(int, int, int, int, int, int, int, int, int) = 0; - virtual void f18(int, int, int, int, int, int, int, int, int) = 0; - virtual void f19(int, int, int, int, int, int, int, int, int) = 0; - virtual void f20(int, int, int, int, int, int, int, int, int) = 0; - virtual void f21(int, int, int, int, int, int, int, int, int) = 0; - virtual void f22(int, int, int, int, int, int, int, int, int) = 0; - virtual void f23(int, int, int, int, int, int, int, int, int) = 0; - virtual void f24(int, int, int, int, int, int, int, int, int) = 0; - virtual void f25(int, int, int, int, int, int, int, int, int) = 0; - virtual void f26(int, int, int, int, int, int, int, int, int) = 0; - virtual void f27(int, int, int, int, int, int, int, int, int) = 0; - virtual void f28(int, int, int, int, int, int, int, int, int) = 0; - virtual void f29(int, int, int, int, int, int, int, int, int) = 0; - virtual void f30(int, int, int, int, int, int, int, int, int) = 0; -}; - -MOCK_BASE_CLASS(mock_class_1, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_2, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_3, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_4, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_5, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_6, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_7, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_8, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_9, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_10, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_11, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_12, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_13, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_14, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_15, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_16, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_17, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_18, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_19, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_20, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_21, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_22, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_23, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_24, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_25, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_26, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_27, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_28, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_29, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_30, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; - -mock_class_1 c_1; -mock_class_2 c_2; -mock_class_3 c_3; -mock_class_4 c_4; -mock_class_5 c_5; -mock_class_6 c_6; -mock_class_7 c_7; -mock_class_8 c_8; -mock_class_9 c_9; -mock_class_10 c_10; -mock_class_11 c_11; -mock_class_12 c_12; -mock_class_13 c_13; -mock_class_14 c_14; -mock_class_15 c_15; -mock_class_16 c_16; -mock_class_17 c_17; -mock_class_18 c_18; -mock_class_19 c_19; -mock_class_20 c_20; -mock_class_21 c_21; -mock_class_22 c_22; -mock_class_23 c_23; -mock_class_24 c_24; -mock_class_25 c_25; -mock_class_26 c_26; -mock_class_27 c_27; -mock_class_28 c_28; -mock_class_29 c_29; -mock_class_30 c_30; -} // namespace - -int main() -{ - return 0; -} diff --git a/test/bench_30_classes_30_methods_9_args_30_max_args.cpp b/test/bench_30_classes_30_methods_9_args_30_max_args.cpp deleted file mode 100644 index b137336..0000000 --- a/test/bench_30_classes_30_methods_9_args_30_max_args.cpp +++ /dev/null @@ -1,1078 +0,0 @@ -// http://turtle.sourceforge.net -// -// Copyright Mathieu Champlon 2011 -// -// 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) - -#define MOCK_MAX_ARGS 30 -#include -#ifdef _MSC_VER -# pragma warning(disable : 4505) -#endif - -namespace { -class base_class -{ -public: - virtual ~base_class() = default; - virtual void f1(int, int, int, int, int, int, int, int, int) = 0; - virtual void f2(int, int, int, int, int, int, int, int, int) = 0; - virtual void f3(int, int, int, int, int, int, int, int, int) = 0; - virtual void f4(int, int, int, int, int, int, int, int, int) = 0; - virtual void f5(int, int, int, int, int, int, int, int, int) = 0; - virtual void f6(int, int, int, int, int, int, int, int, int) = 0; - virtual void f7(int, int, int, int, int, int, int, int, int) = 0; - virtual void f8(int, int, int, int, int, int, int, int, int) = 0; - virtual void f9(int, int, int, int, int, int, int, int, int) = 0; - virtual void f10(int, int, int, int, int, int, int, int, int) = 0; - virtual void f11(int, int, int, int, int, int, int, int, int) = 0; - virtual void f12(int, int, int, int, int, int, int, int, int) = 0; - virtual void f13(int, int, int, int, int, int, int, int, int) = 0; - virtual void f14(int, int, int, int, int, int, int, int, int) = 0; - virtual void f15(int, int, int, int, int, int, int, int, int) = 0; - virtual void f16(int, int, int, int, int, int, int, int, int) = 0; - virtual void f17(int, int, int, int, int, int, int, int, int) = 0; - virtual void f18(int, int, int, int, int, int, int, int, int) = 0; - virtual void f19(int, int, int, int, int, int, int, int, int) = 0; - virtual void f20(int, int, int, int, int, int, int, int, int) = 0; - virtual void f21(int, int, int, int, int, int, int, int, int) = 0; - virtual void f22(int, int, int, int, int, int, int, int, int) = 0; - virtual void f23(int, int, int, int, int, int, int, int, int) = 0; - virtual void f24(int, int, int, int, int, int, int, int, int) = 0; - virtual void f25(int, int, int, int, int, int, int, int, int) = 0; - virtual void f26(int, int, int, int, int, int, int, int, int) = 0; - virtual void f27(int, int, int, int, int, int, int, int, int) = 0; - virtual void f28(int, int, int, int, int, int, int, int, int) = 0; - virtual void f29(int, int, int, int, int, int, int, int, int) = 0; - virtual void f30(int, int, int, int, int, int, int, int, int) = 0; -}; - -MOCK_BASE_CLASS(mock_class_1, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_2, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_3, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_4, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_5, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_6, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_7, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_8, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_9, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_10, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_11, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_12, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_13, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_14, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_15, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_16, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_17, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_18, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_19, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_20, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_21, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_22, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_23, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_24, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_25, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_26, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_27, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_28, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_29, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; -MOCK_BASE_CLASS(mock_class_30, base_class) -{ - MOCK_METHOD(f1, 9) - MOCK_METHOD(f2, 9) - MOCK_METHOD(f3, 9) - MOCK_METHOD(f4, 9) - MOCK_METHOD(f5, 9) - MOCK_METHOD(f6, 9) - MOCK_METHOD(f7, 9) - MOCK_METHOD(f8, 9) - MOCK_METHOD(f9, 9) - MOCK_METHOD(f10, 9) - MOCK_METHOD(f11, 9) - MOCK_METHOD(f12, 9) - MOCK_METHOD(f13, 9) - MOCK_METHOD(f14, 9) - MOCK_METHOD(f15, 9) - MOCK_METHOD(f16, 9) - MOCK_METHOD(f17, 9) - MOCK_METHOD(f18, 9) - MOCK_METHOD(f19, 9) - MOCK_METHOD(f20, 9) - MOCK_METHOD(f21, 9) - MOCK_METHOD(f22, 9) - MOCK_METHOD(f23, 9) - MOCK_METHOD(f24, 9) - MOCK_METHOD(f25, 9) - MOCK_METHOD(f26, 9) - MOCK_METHOD(f27, 9) - MOCK_METHOD(f28, 9) - MOCK_METHOD(f29, 9) - MOCK_METHOD(f30, 9) -}; - -mock_class_1 c_1; -mock_class_2 c_2; -mock_class_3 c_3; -mock_class_4 c_4; -mock_class_5 c_5; -mock_class_6 c_6; -mock_class_7 c_7; -mock_class_8 c_8; -mock_class_9 c_9; -mock_class_10 c_10; -mock_class_11 c_11; -mock_class_12 c_12; -mock_class_13 c_13; -mock_class_14 c_14; -mock_class_15 c_15; -mock_class_16 c_16; -mock_class_17 c_17; -mock_class_18 c_18; -mock_class_19 c_19; -mock_class_20 c_20; -mock_class_21 c_21; -mock_class_22 c_22; -mock_class_23 c_23; -mock_class_24 c_24; -mock_class_25 c_25; -mock_class_26 c_26; -mock_class_27 c_27; -mock_class_28 c_28; -mock_class_29 c_29; -mock_class_30 c_30; -} // namespace - -int main() -{ - return 0; -} From bb77c1702f0e094dd0b01fa033c9a345fdf0ea1c Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Mon, 7 Feb 2022 19:26:26 +0100 Subject: [PATCH 5/7] Add support for unlimited number of sequences in one call This removes the need for those preprocessor macros and the MOCK_MAX_SEQUENCES define. --- doc/changelog.qbk | 2 +- doc/reference.qbk | 7 ++----- include/turtle/config.hpp | 4 ---- include/turtle/detail/function_impl.hpp | 23 ++++++++--------------- test/test_sequence.cpp | 9 +++++++-- 5 files changed, 18 insertions(+), 27 deletions(-) diff --git a/doc/changelog.qbk b/doc/changelog.qbk index 326f21a..56a5f9c 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -15,7 +15,7 @@ Released - * Removed MOCK_*_TPL as they are no longer required, use the non _TPL variant even for templates * Added MOCK_PROTECT_SIGNATURE to pass function signatures with commas in the return type * Remove support for protecting function signatures via BOOST_IDENTITY_TYPE, use MOCK_PROTECT_SIGNATURE instead -* Add support for unlimitted number of arguments making MOCK_MAX_ARGS superflous +* Add support for unlimitted number of arguments and sequences making MOCK_MAX_ARGS and MOCK_MAX_SEQUENCES superflous [endsect] diff --git a/doc/reference.qbk b/doc/reference.qbk index 72dd7a9..8d1239e 100644 --- a/doc/reference.qbk +++ b/doc/reference.qbk @@ -449,10 +449,7 @@ Synopsis : Each sequence is an instance of mock::sequence. -The maximum number of sequences that can be set is MOCK_MAX_SEQUENCES which defaults to 10. If needed the value can be increased before including the library : - - #define MOCK_MAX_SEQUENCES 12 - #include +The maximum number of sequences that can be set is basically unlimited. Example : @@ -467,7 +464,7 @@ An action performs additional treatments after an expectation has been deemed va Synopsis : MOCK_EXPECT( identifier ).returns( value ); // stored internally by copy - MOCK_EXPECT( identifier ).moves( value ); // stored internally by copy + MOCK_EXPECT( identifier ).moves( value ); // stored internally by copy/move MOCK_EXPECT( identifier ).throws( exception ); // stored internally by copy MOCK_EXPECT( identifier ).calls( functor ); // stored internally by copy, throws std::invalid_argument if empty diff --git a/include/turtle/config.hpp b/include/turtle/config.hpp index d60fe72..111d09d 100644 --- a/include/turtle/config.hpp +++ b/include/turtle/config.hpp @@ -18,10 +18,6 @@ # define MOCK_USE_BOOST_TEST #endif -#ifndef MOCK_MAX_SEQUENCES -# define MOCK_MAX_SEQUENCES 10 -#endif - #if !defined(BOOST_NO_CXX11_HDR_MUTEX) && !defined(BOOST_NO_0X_HDR_MUTEX) # ifndef MOCK_NO_HDR_MUTEX # define MOCK_HDR_MUTEX diff --git a/include/turtle/detail/function_impl.hpp b/include/turtle/detail/function_impl.hpp index a396718..188a159 100644 --- a/include/turtle/detail/function_impl.hpp +++ b/include/turtle/detail/function_impl.hpp @@ -13,8 +13,6 @@ #include "expectation.hpp" #include "mutex.hpp" #include "verifiable.hpp" -#include -#include #include #include #include @@ -187,19 +185,14 @@ namespace mock { namespace detail { return *this; } -#define MOCK_FUNCTION_IN_ADD(z, n, d) this->e_->add(s##n); - -#define MOCK_FUNCTION_IN(z, n, d) \ - wrapper& in(BOOST_PP_ENUM_PARAMS(n, sequence& s)) \ - { \ - BOOST_PP_REPEAT(n, MOCK_FUNCTION_IN_ADD, _) \ - return *this; \ - } - - BOOST_PP_REPEAT(MOCK_MAX_SEQUENCES, MOCK_FUNCTION_IN, _) - -#undef MOCK_FUNCTION_IN -#undef MOCK_FUNCTION_IN_ADD + /// Ensure the expectation is met in the given sequence(s) + template + wrapper& in(sequence& s0, MockSequences&... s) + { + using expander = int[]; + (void)expander{ (e_->add(s0), 0), (e_->add(s), 0)... }; + return *this; + } template void calls(TT t) diff --git a/test/test_sequence.cpp b/test/test_sequence.cpp index 2415cf4..1f6ae98 100644 --- a/test/test_sequence.cpp +++ b/test/test_sequence.cpp @@ -10,6 +10,7 @@ #include #include #include +#include BOOST_FIXTURE_TEST_CASE(registering_to_a_sequence_and_calling_out_of_order_throws, mock_error_fixture) { @@ -97,9 +98,13 @@ BOOST_FIXTURE_TEST_CASE(resetting_an_expectation_removes_it_from_order_call_enfo BOOST_FIXTURE_TEST_CASE(an_expectation_can_be_used_in_several_sequences, mock_error_fixture) { - mock::sequence s1, s2; + std::array s; mock::detail::function e; - e.expect().once().in(s1, s2); + // One can use any amount of sequences if wanted + // clang-format off + e.expect().once().in(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9], + s[10], s[11], s[12], s[13], s[14], s[15], s[16], s[17], s[18], s[19]); + // clang-format on BOOST_CHECK_NO_THROW(e()); BOOST_CHECK(e.verify()); CHECK_CALLS(1); From 3845d57531d13186d0bda4e890e6a7a457672fe9 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Mon, 7 Feb 2022 19:56:26 +0100 Subject: [PATCH 6/7] Use BOOST_PP_VARIADIC_SIZE instead of custom implementation --- include/turtle/constraint.hpp | 111 +----------------------- include/turtle/detail/function_impl.hpp | 2 +- 2 files changed, 3 insertions(+), 110 deletions(-) diff --git a/include/turtle/constraint.hpp b/include/turtle/constraint.hpp index 126ce5d..8dddb22 100644 --- a/include/turtle/constraint.hpp +++ b/include/turtle/constraint.hpp @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include @@ -178,118 +178,11 @@ const constraint> operator!(const constraintadd(s0), 0), (e_->add(s), 0)... }; + (void)expander{ (this->e_->add(s0), 0), (this->e_->add(s), 0)... }; return *this; } From c8c6af273e32c2b295741e5b7658a62c26ee89ef Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Tue, 8 Feb 2022 18:27:46 +0100 Subject: [PATCH 7/7] Don't return *this in expectation::with Chaining is done via the wrapper class not the expectation class --- include/turtle/detail/expectation.hpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/turtle/detail/expectation.hpp b/include/turtle/detail/expectation.hpp index 18b9bb2..d4e477a 100644 --- a/include/turtle/detail/expectation.hpp +++ b/include/turtle/detail/expectation.hpp @@ -123,16 +123,14 @@ namespace mock { namespace detail { void invoke(std::unique_ptr i) { invocation_ = std::move(i); } template - std::enable_if_t<(arity > 0u) && sizeof...(Constraints) == arity, expectation&> with(Constraints... c) + std::enable_if_t<(arity > 0u) && sizeof...(Constraints) == arity> with(Constraints... c) { matcher_ = std::make_unique>(c...); - return *this; } template - std::enable_if_t<(Arity > 1u), expectation&> with(const Constraint& c) + std::enable_if_t<(Arity > 1u)> with(const Constraint& c) { matcher_ = std::make_unique>(c); - return *this; } void add(sequence& s)