1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// This file was GENERATED by command: 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// pump.py gmock-generated-function-mockers.h.pump 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// DO NOT EDIT BY HAND!!! 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright 2007, Google Inc. 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// All rights reserved. 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Redistribution and use in source and binary forms, with or without 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// modification, are permitted provided that the following conditions are 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// met: 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// * Redistributions of source code must retain the above copyright 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// notice, this list of conditions and the following disclaimer. 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// * Redistributions in binary form must reproduce the above 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// copyright notice, this list of conditions and the following disclaimer 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// in the documentation and/or other materials provided with the 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// distribution. 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// * Neither the name of Google Inc. nor the names of its 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// contributors may be used to endorse or promote products derived from 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// this software without specific prior written permission. 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Author: wan@google.com (Zhanyong Wan) 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Google Mock - a framework for writing C++ mock classes. 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This file implements function mockers of various arities. 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "gmock/gmock-spec-builders.h" 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "gmock/internal/gmock-internal-utils.h" 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace testing { 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace internal { 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename F> 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMockerBase; 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Note: class FunctionMocker really belongs to the ::testing 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// namespace. However if we define it in ::testing, MSVC will 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// complain when classes in ::testing::internal declare it as a 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// friend class template. To workaround this compiler bug, we define 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// FunctionMocker in ::testing::internal and import it into ::testing. 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename F> 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker; 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R> 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R()> : public 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R()> { 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With() { 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke() { 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple()); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1> 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1)> : public 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1)> { 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1) { 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1)); 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1) { 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1)); 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2> 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2)> : public 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2)> { 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2); 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2) { 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2)); 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2) { 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2)); 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3> 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3)> : public 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3)> { 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3); 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3) { 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3)); 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3) { 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3)); 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3, typename A4> 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3, A4)> : public 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3, A4)> { 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3, A4); 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3, const Matcher<A4>& m4) { 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4)); 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3, A4 a4) { 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4)); 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3, typename A4, 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A5> 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3, A4, A5)> : public 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3, A4, A5)> { 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3, A4, A5); 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5) { 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch m5)); 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) { 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5)); 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3, typename A4, 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A5, typename A6> 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3, A4, A5, A6)> : public 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6)> { 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3, A4, A5, A6); 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5, 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A6>& m6) { 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5, 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch m6)); 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) { 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6)); 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3, typename A4, 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A5, typename A6, typename A7> 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7)> : public 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7)> { 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3, A4, A5, A6, A7); 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5, 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A6>& m6, const Matcher<A7>& m7) { 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5, 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch m6, m7)); 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) { 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7)); 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3, typename A4, 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A5, typename A6, typename A7, typename A8> 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8)> : public 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8)> { 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3, A4, A5, A6, A7, A8); 246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5, 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8) { 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5, 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch m6, m7, m8)); 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) { 257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8)); 262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3, typename A4, 266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A5, typename A6, typename A7, typename A8, typename A9> 267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> : public 268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { 269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9); 271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5, 275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8, 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A9>& m9) { 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5, 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch m6, m7, m8, m9)); 279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 281c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) { 283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9)); 288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A1, typename A2, typename A3, typename A4, 292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A5, typename A6, typename A7, typename A8, typename A9, 293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A10> 294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> : public 295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { 296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); 298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple; 299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2, 301c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5, 302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8, 303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Matcher<A9>& m9, const Matcher<A10>& m10) { 304c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5, 305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch m6, m7, m8, m9, m10)); 306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->current_spec(); 307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, 310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch A10 a10) { 311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Even though gcc and MSVC don't enforce it, 'this->' is required 312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // by the C++ standard [14.6.4] here, as the base class type is 313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // dependent on the template argument (and thus shouldn't be 314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // looked into when resolving InvokeWith). 315c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9, 316c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch a10)); 317c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 319c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace internal 321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The style guide prohibits "using" statements in a namespace scope 323c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// inside a header file. However, the FunctionMocker class template 324c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// is meant to be defined in the ::testing namespace. The following 325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// line is just a trick for working around a bug in MSVC 8.0, which 326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// cannot handle it if we define FunctionMocker in ::testing. 327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing internal::FunctionMocker; 328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The result type of function type F. 330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 331c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_RESULT_(tn, F) tn ::testing::internal::Function<F>::Result 332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The type of argument N of function type F. 334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 335c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_ARG_(tn, F, N) tn ::testing::internal::Function<F>::Argument##N 336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 337c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The matcher type for argument N of function type F. 338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 339c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_MATCHER_(tn, F, N) const ::testing::Matcher<GMOCK_ARG_(tn, F, N)>& 340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The variable for mocking the given method. 342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_MOCKER_(arity, constness, Method) \ 344dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__) 345c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 347c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD0_(tn, constness, ct, Method, F) \ 348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method() constness { \ 3493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 0, \ 351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_0_arguments); \ 352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(0, constness, Method).SetOwnerAndName(this, #Method); \ 353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(0, constness, Method).Invoke(); \ 354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method() constness { \ 357dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(0, constness, Method).RegisterOwner(this); \ 358dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(0, constness, Method).With(); \ 359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(0, constness, Method) 361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD1_(tn, constness, ct, Method, F) \ 364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1) constness { \ 3653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 1, \ 367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_1_argument); \ 368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(1, constness, Method).SetOwnerAndName(this, #Method); \ 369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(1, constness, Method).Invoke(gmock_a1); \ 370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1) constness { \ 373dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(1, constness, Method).RegisterOwner(this); \ 374dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(1, constness, Method).With(gmock_a1); \ 375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(1, constness, Method) 377c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 378c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 379c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD2_(tn, constness, ct, Method, F) \ 380c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 381c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2) constness { \ 3823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 2, \ 384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_2_arguments); \ 385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(2, constness, Method).SetOwnerAndName(this, #Method); \ 386c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(2, constness, Method).Invoke(gmock_a1, gmock_a2); \ 387c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 390c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2) constness { \ 391dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(2, constness, Method).RegisterOwner(this); \ 392dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(2, constness, Method).With(gmock_a1, gmock_a2); \ 393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(2, constness, Method) 395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD3_(tn, constness, ct, Method, F) \ 398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3) constness { \ 4013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 402c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 3, \ 403c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_3_arguments); \ 404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(3, constness, Method).SetOwnerAndName(this, #Method); \ 405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(3, constness, Method).Invoke(gmock_a1, gmock_a2, \ 406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3); \ 407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 411c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3) constness { \ 412dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(3, constness, Method).RegisterOwner(this); \ 413dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(3, constness, Method).With(gmock_a1, gmock_a2, \ 414dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3); \ 415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 416c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(3, constness, Method) 417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 419c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD4_(tn, constness, ct, Method, F) \ 420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3, \ 423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 4) gmock_a4) constness { \ 4243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 4, \ 426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_4_arguments); \ 427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(4, constness, Method).SetOwnerAndName(this, #Method); \ 428c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(4, constness, Method).Invoke(gmock_a1, gmock_a2, \ 429c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3, gmock_a4); \ 430c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 431c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 432c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3, \ 435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 4) gmock_a4) constness { \ 436dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(4, constness, Method).RegisterOwner(this); \ 437dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(4, constness, Method).With(gmock_a1, gmock_a2, \ 438dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3, gmock_a4); \ 439c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 440c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(4, constness, Method) 441c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 442c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 443c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD5_(tn, constness, ct, Method, F) \ 444c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 445c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 446c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3, \ 447c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 4) gmock_a4, \ 448c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 5) gmock_a5) constness { \ 4493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 450c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 5, \ 451c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_5_arguments); \ 452c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(5, constness, Method).SetOwnerAndName(this, #Method); \ 453c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(5, constness, Method).Invoke(gmock_a1, gmock_a2, \ 454c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3, gmock_a4, gmock_a5); \ 455c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 456c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 457c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 458c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 459c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3, \ 460c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 4) gmock_a4, \ 461c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 5) gmock_a5) constness { \ 462dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(5, constness, Method).RegisterOwner(this); \ 463dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(5, constness, Method).With(gmock_a1, gmock_a2, \ 464dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3, gmock_a4, gmock_a5); \ 465c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 466c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(5, constness, Method) 467c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 468c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 469c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD6_(tn, constness, ct, Method, F) \ 470c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 471c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 472c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3, \ 473c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 4) gmock_a4, \ 474c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 5) gmock_a5, \ 475c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 6) gmock_a6) constness { \ 4763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 477c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 6, \ 478c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_6_arguments); \ 479c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(6, constness, Method).SetOwnerAndName(this, #Method); \ 480c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(6, constness, Method).Invoke(gmock_a1, gmock_a2, \ 481c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3, gmock_a4, gmock_a5, gmock_a6); \ 482c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 483c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 484c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 485c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 486c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3, \ 487c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 4) gmock_a4, \ 488c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 5) gmock_a5, \ 489c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 6) gmock_a6) constness { \ 490dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(6, constness, Method).RegisterOwner(this); \ 491dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(6, constness, Method).With(gmock_a1, gmock_a2, \ 492dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3, gmock_a4, gmock_a5, gmock_a6); \ 493c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 494c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(6, constness, Method) 495c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 496c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 497c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD7_(tn, constness, ct, Method, F) \ 498c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 499c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 500c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3, \ 501c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 4) gmock_a4, \ 502c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 5) gmock_a5, \ 503c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 6) gmock_a6, \ 504c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 7) gmock_a7) constness { \ 5053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 506c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 7, \ 507c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_7_arguments); \ 508c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(7, constness, Method).SetOwnerAndName(this, #Method); \ 509c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(7, constness, Method).Invoke(gmock_a1, gmock_a2, \ 510c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7); \ 511c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 512c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 513c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 514c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 515c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3, \ 516c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 4) gmock_a4, \ 517c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 5) gmock_a5, \ 518c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 6) gmock_a6, \ 519c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 7) gmock_a7) constness { \ 520dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(7, constness, Method).RegisterOwner(this); \ 521dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(7, constness, Method).With(gmock_a1, gmock_a2, \ 522dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7); \ 523c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 524c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(7, constness, Method) 525c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 526c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 527c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD8_(tn, constness, ct, Method, F) \ 528c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 529c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 530c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3, \ 531c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 4) gmock_a4, \ 532c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 5) gmock_a5, \ 533c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 6) gmock_a6, \ 534c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 7) gmock_a7, \ 535c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 8) gmock_a8) constness { \ 5363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 537c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 8, \ 538c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_8_arguments); \ 539c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(8, constness, Method).SetOwnerAndName(this, #Method); \ 540c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(8, constness, Method).Invoke(gmock_a1, gmock_a2, \ 541c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8); \ 542c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 543c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 544c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 545c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 546c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3, \ 547c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 4) gmock_a4, \ 548c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 5) gmock_a5, \ 549c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 6) gmock_a6, \ 550c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 7) gmock_a7, \ 551c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 8) gmock_a8) constness { \ 552dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(8, constness, Method).RegisterOwner(this); \ 553dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(8, constness, Method).With(gmock_a1, gmock_a2, \ 554dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8); \ 555c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 556c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(8, constness, Method) 557c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 558c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 559c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD9_(tn, constness, ct, Method, F) \ 560c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 561c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 562c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3, \ 563c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 4) gmock_a4, \ 564c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 5) gmock_a5, \ 565c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 6) gmock_a6, \ 566c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 7) gmock_a7, \ 567c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 8) gmock_a8, \ 568c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 9) gmock_a9) constness { \ 5693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 570c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 9, \ 571c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_9_arguments); \ 572c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(9, constness, Method).SetOwnerAndName(this, #Method); \ 573c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(9, constness, Method).Invoke(gmock_a1, gmock_a2, \ 574c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, \ 575c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a9); \ 576c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 577c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 578c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 579c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 580c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3, \ 581c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 4) gmock_a4, \ 582c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 5) gmock_a5, \ 583c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 6) gmock_a6, \ 584c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 7) gmock_a7, \ 585c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 8) gmock_a8, \ 586c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 9) gmock_a9) constness { \ 587dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(9, constness, Method).RegisterOwner(this); \ 588dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(9, constness, Method).With(gmock_a1, gmock_a2, \ 589dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, \ 590dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a9); \ 591c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 592c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(9, constness, Method) 593c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 594c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! 595c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GMOCK_METHOD10_(tn, constness, ct, Method, F) \ 596c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \ 597c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 2) gmock_a2, \ 598c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 3) gmock_a3, \ 599c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 4) gmock_a4, \ 600c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 5) gmock_a5, \ 601c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 6) gmock_a6, \ 602c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 7) gmock_a7, \ 603c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 8) gmock_a8, \ 604c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 9) gmock_a9, \ 605c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_ARG_(tn, F, 10) gmock_a10) constness { \ 6063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \ 607c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tn ::testing::internal::Function<F>::ArgumentTuple>::value == 10, \ 608c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this_method_does_not_take_10_arguments); \ 609c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MOCKER_(10, constness, Method).SetOwnerAndName(this, #Method); \ 610c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GMOCK_MOCKER_(10, constness, Method).Invoke(gmock_a1, gmock_a2, \ 611c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, gmock_a9, \ 612c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a10); \ 613c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 614c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ::testing::MockSpec<F>& \ 615c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \ 616c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 2) gmock_a2, \ 617c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 3) gmock_a3, \ 618c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 4) gmock_a4, \ 619c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 5) gmock_a5, \ 620c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 6) gmock_a6, \ 621c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 7) gmock_a7, \ 622c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 8) gmock_a8, \ 623c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 9) gmock_a9, \ 624c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_MATCHER_(tn, F, 10) gmock_a10) constness { \ 625dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GMOCK_MOCKER_(10, constness, Method).RegisterOwner(this); \ 626dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return GMOCK_MOCKER_(10, constness, Method).With(gmock_a1, gmock_a2, \ 627dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, gmock_a9, \ 628c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gmock_a10); \ 629c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } \ 630c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(10, constness, Method) 631c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 632c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD0(m, F) GMOCK_METHOD0_(, , , m, F) 633c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD1(m, F) GMOCK_METHOD1_(, , , m, F) 634c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD2(m, F) GMOCK_METHOD2_(, , , m, F) 635c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD3(m, F) GMOCK_METHOD3_(, , , m, F) 636c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD4(m, F) GMOCK_METHOD4_(, , , m, F) 637c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD5(m, F) GMOCK_METHOD5_(, , , m, F) 638c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD6(m, F) GMOCK_METHOD6_(, , , m, F) 639c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD7(m, F) GMOCK_METHOD7_(, , , m, F) 640c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD8(m, F) GMOCK_METHOD8_(, , , m, F) 641c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD9(m, F) GMOCK_METHOD9_(, , , m, F) 642c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD10(m, F) GMOCK_METHOD10_(, , , m, F) 643c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 644c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD0(m, F) GMOCK_METHOD0_(, const, , m, F) 645c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD1(m, F) GMOCK_METHOD1_(, const, , m, F) 646c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD2(m, F) GMOCK_METHOD2_(, const, , m, F) 647c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD3(m, F) GMOCK_METHOD3_(, const, , m, F) 648c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD4(m, F) GMOCK_METHOD4_(, const, , m, F) 649c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD5(m, F) GMOCK_METHOD5_(, const, , m, F) 650c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD6(m, F) GMOCK_METHOD6_(, const, , m, F) 651c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD7(m, F) GMOCK_METHOD7_(, const, , m, F) 652c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD8(m, F) GMOCK_METHOD8_(, const, , m, F) 653c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD9(m, F) GMOCK_METHOD9_(, const, , m, F) 654c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD10(m, F) GMOCK_METHOD10_(, const, , m, F) 655c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 656c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD0_T(m, F) GMOCK_METHOD0_(typename, , , m, F) 657c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD1_T(m, F) GMOCK_METHOD1_(typename, , , m, F) 658c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD2_T(m, F) GMOCK_METHOD2_(typename, , , m, F) 659c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD3_T(m, F) GMOCK_METHOD3_(typename, , , m, F) 660c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD4_T(m, F) GMOCK_METHOD4_(typename, , , m, F) 661c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD5_T(m, F) GMOCK_METHOD5_(typename, , , m, F) 662c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD6_T(m, F) GMOCK_METHOD6_(typename, , , m, F) 663c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD7_T(m, F) GMOCK_METHOD7_(typename, , , m, F) 664c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD8_T(m, F) GMOCK_METHOD8_(typename, , , m, F) 665c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD9_T(m, F) GMOCK_METHOD9_(typename, , , m, F) 666c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD10_T(m, F) GMOCK_METHOD10_(typename, , , m, F) 667c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 668c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD0_T(m, F) GMOCK_METHOD0_(typename, const, , m, F) 669c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD1_T(m, F) GMOCK_METHOD1_(typename, const, , m, F) 670c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD2_T(m, F) GMOCK_METHOD2_(typename, const, , m, F) 671c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD3_T(m, F) GMOCK_METHOD3_(typename, const, , m, F) 672c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD4_T(m, F) GMOCK_METHOD4_(typename, const, , m, F) 673c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD5_T(m, F) GMOCK_METHOD5_(typename, const, , m, F) 674c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD6_T(m, F) GMOCK_METHOD6_(typename, const, , m, F) 675c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD7_T(m, F) GMOCK_METHOD7_(typename, const, , m, F) 676c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD8_T(m, F) GMOCK_METHOD8_(typename, const, , m, F) 677c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD9_T(m, F) GMOCK_METHOD9_(typename, const, , m, F) 678c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD10_T(m, F) GMOCK_METHOD10_(typename, const, , m, F) 679c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 680c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD0_(, , ct, m, F) 681c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD1_(, , ct, m, F) 682c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD2_(, , ct, m, F) 683c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD3_(, , ct, m, F) 684c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD4_(, , ct, m, F) 685c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD5_(, , ct, m, F) 686c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD6_(, , ct, m, F) 687c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD7_(, , ct, m, F) 688c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD8_(, , ct, m, F) 689c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD9_(, , ct, m, F) 690c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD10_(, , ct, m, F) 691c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 692c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, F) \ 693c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD0_(, const, ct, m, F) 694c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, F) \ 695c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD1_(, const, ct, m, F) 696c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, F) \ 697c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD2_(, const, ct, m, F) 698c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, F) \ 699c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD3_(, const, ct, m, F) 700c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, F) \ 701c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD4_(, const, ct, m, F) 702c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, F) \ 703c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD5_(, const, ct, m, F) 704c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, F) \ 705c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD6_(, const, ct, m, F) 706c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, F) \ 707c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD7_(, const, ct, m, F) 708c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, F) \ 709c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD8_(, const, ct, m, F) 710c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, F) \ 711c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD9_(, const, ct, m, F) 712c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, F) \ 713c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD10_(, const, ct, m, F) 714c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 715c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, F) \ 716c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD0_(typename, , ct, m, F) 717c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, F) \ 718c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD1_(typename, , ct, m, F) 719c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, F) \ 720c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD2_(typename, , ct, m, F) 721c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, F) \ 722c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD3_(typename, , ct, m, F) 723c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, F) \ 724c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD4_(typename, , ct, m, F) 725c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, F) \ 726c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD5_(typename, , ct, m, F) 727c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, F) \ 728c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD6_(typename, , ct, m, F) 729c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, F) \ 730c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD7_(typename, , ct, m, F) 731c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, F) \ 732c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD8_(typename, , ct, m, F) 733c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, F) \ 734c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD9_(typename, , ct, m, F) 735c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, F) \ 736c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD10_(typename, , ct, m, F) 737c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 738c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, F) \ 739c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD0_(typename, const, ct, m, F) 740c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, F) \ 741c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD1_(typename, const, ct, m, F) 742c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, F) \ 743c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD2_(typename, const, ct, m, F) 744c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, F) \ 745c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD3_(typename, const, ct, m, F) 746c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, F) \ 747c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD4_(typename, const, ct, m, F) 748c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, F) \ 749c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD5_(typename, const, ct, m, F) 750c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, F) \ 751c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD6_(typename, const, ct, m, F) 752c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, F) \ 753c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD7_(typename, const, ct, m, F) 754c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, F) \ 755c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD8_(typename, const, ct, m, F) 756c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, F) \ 757c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD9_(typename, const, ct, m, F) 758c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, F) \ 759c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GMOCK_METHOD10_(typename, const, ct, m, F) 760c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 761c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A MockFunction<F> class has one mock method whose type is F. It is 762c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// useful when you just want your test code to emit some messages and 763c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// have Google Mock verify the right messages are sent (and perhaps at 764c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the right times). For example, if you are exercising code: 765c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 766c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Foo(1); 767c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Foo(2); 768c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Foo(3); 769c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 770c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// and want to verify that Foo(1) and Foo(3) both invoke 771c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// mock.Bar("a"), but Foo(2) doesn't invoke anything, you can write: 772c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 773c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// TEST(FooTest, InvokesBarCorrectly) { 774c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// MyMock mock; 775c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// MockFunction<void(string check_point_name)> check; 776c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// { 777c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// InSequence s; 778c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 779c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// EXPECT_CALL(mock, Bar("a")); 780c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// EXPECT_CALL(check, Call("1")); 781c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// EXPECT_CALL(check, Call("2")); 782c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// EXPECT_CALL(mock, Bar("a")); 783c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// } 784c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Foo(1); 785c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// check.Call("1"); 786c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Foo(2); 787c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// check.Call("2"); 788c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Foo(3); 789c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// } 790c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 791c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The expectation spec says that the first Bar("a") must happen 792c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// before check point "1", the second Bar("a") must happen after check 793c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// point "2", and nothing should happen between the two check 794c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// points. The explicit check points make it easy to tell which 795c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Bar("a") is called by which call to Foo(). 796c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename F> 797c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction; 798c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 799c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R> 800c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R()> { 801c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 802c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 803c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 804c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD0_T(Call, R()); 805c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 806c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 807c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 808c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 809c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 810c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0> 811c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0)> { 812c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 813c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 814c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 815c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD1_T(Call, R(A0)); 816c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 817c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 818c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 819c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 820c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 821c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1> 822c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1)> { 823c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 824c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 825c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 826c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD2_T(Call, R(A0, A1)); 827c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 828c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 829c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 830c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 831c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 832c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2> 833c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2)> { 834c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 835c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 836c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 837c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD3_T(Call, R(A0, A1, A2)); 838c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 839c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 840c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 841c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 842c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 843c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2, typename A3> 844c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2, A3)> { 845c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 846c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 847c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 848c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD4_T(Call, R(A0, A1, A2, A3)); 849c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 850c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 851c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 852c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 853c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 854c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2, typename A3, 855c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A4> 856c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2, A3, A4)> { 857c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 858c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 859c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 860c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD5_T(Call, R(A0, A1, A2, A3, A4)); 861c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 862c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 863c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 864c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 865c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 866c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2, typename A3, 867c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A4, typename A5> 868c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2, A3, A4, A5)> { 869c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 870c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 871c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 872c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD6_T(Call, R(A0, A1, A2, A3, A4, A5)); 873c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 874c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 875c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 876c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 877c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 878c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2, typename A3, 879c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A4, typename A5, typename A6> 880c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2, A3, A4, A5, A6)> { 881c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 882c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 883c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 884c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD7_T(Call, R(A0, A1, A2, A3, A4, A5, A6)); 885c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 886c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 887c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 888c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 889c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 890c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2, typename A3, 891c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A4, typename A5, typename A6, typename A7> 892c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7)> { 893c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 894c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 895c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 896c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD8_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7)); 897c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 898c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 899c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 900c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 901c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 902c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2, typename A3, 903c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A4, typename A5, typename A6, typename A7, typename A8> 904c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7, A8)> { 905c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 906c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 907c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 908c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD9_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7, A8)); 909c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 910c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 911c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 912c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 913c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 914c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename R, typename A0, typename A1, typename A2, typename A3, 915c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A4, typename A5, typename A6, typename A7, typename A8, 916c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typename A9> 917c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> { 918c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 919c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockFunction() {} 920c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 921c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD10_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)); 922c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 923c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 924c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction); 925c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 926c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 927c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace testing 928c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 929c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ 930