| Index: testing/gmock/include/gmock/gmock-generated-function-mockers.h.pump
|
| diff --git a/testing/gmock/include/gmock/gmock-generated-function-mockers.h.pump b/testing/gmock/include/gmock/gmock-generated-function-mockers.h.pump
|
| deleted file mode 100644
|
| index 20a445413fe00de58a85b7baafd08f2ea4775e45..0000000000000000000000000000000000000000
|
| --- a/testing/gmock/include/gmock/gmock-generated-function-mockers.h.pump
|
| +++ /dev/null
|
| @@ -1,257 +0,0 @@
|
| -$$ -*- mode: c++; -*-
|
| -$$ This is a Pump source file. Please use Pump to convert it to
|
| -$$ gmock-generated-function-mockers.h.
|
| -$$
|
| -$var n = 10 $$ The maximum arity we support.
|
| -// Copyright 2007, Google Inc.
|
| -// All rights reserved.
|
| -//
|
| -// Redistribution and use in source and binary forms, with or without
|
| -// modification, are permitted provided that the following conditions are
|
| -// met:
|
| -//
|
| -// * Redistributions of source code must retain the above copyright
|
| -// notice, this list of conditions and the following disclaimer.
|
| -// * Redistributions in binary form must reproduce the above
|
| -// copyright notice, this list of conditions and the following disclaimer
|
| -// in the documentation and/or other materials provided with the
|
| -// distribution.
|
| -// * Neither the name of Google Inc. nor the names of its
|
| -// contributors may be used to endorse or promote products derived from
|
| -// this software without specific prior written permission.
|
| -//
|
| -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| -//
|
| -// Author: wan@google.com (Zhanyong Wan)
|
| -
|
| -// Google Mock - a framework for writing C++ mock classes.
|
| -//
|
| -// This file implements function mockers of various arities.
|
| -
|
| -#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
|
| -#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
|
| -
|
| -#include <gmock/gmock-spec-builders.h>
|
| -#include <gmock/internal/gmock-internal-utils.h>
|
| -
|
| -namespace testing {
|
| -namespace internal {
|
| -
|
| -template <typename F>
|
| -class FunctionMockerBase;
|
| -
|
| -// Note: class FunctionMocker really belongs to the ::testing
|
| -// namespace. However if we define it in ::testing, MSVC will
|
| -// complain when classes in ::testing::internal declare it as a
|
| -// friend class template. To workaround this compiler bug, we define
|
| -// FunctionMocker in ::testing::internal and import it into ::testing.
|
| -template <typename F>
|
| -class FunctionMocker;
|
| -
|
| -
|
| -$range i 0..n
|
| -$for i [[
|
| -$range j 1..i
|
| -$var typename_As = [[$for j [[, typename A$j]]]]
|
| -$var As = [[$for j, [[A$j]]]]
|
| -$var as = [[$for j, [[a$j]]]]
|
| -$var Aas = [[$for j, [[A$j a$j]]]]
|
| -$var ms = [[$for j, [[m$j]]]]
|
| -$var matchers = [[$for j, [[const Matcher<A$j>& m$j]]]]
|
| -template <typename R$typename_As>
|
| -class FunctionMocker<R($As)> : public
|
| - internal::FunctionMockerBase<R($As)> {
|
| - public:
|
| - typedef R F($As);
|
| - typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
|
| -
|
| - MockSpec<F>& With($matchers) {
|
| -
|
| -$if i >= 1 [[
|
| - this->current_spec().SetMatchers(::std::tr1::make_tuple($ms));
|
| -
|
| -]]
|
| - return this->current_spec();
|
| - }
|
| -
|
| - R Invoke($Aas) {
|
| - // Even though gcc and MSVC don't enforce it, 'this->' is required
|
| - // by the C++ standard [14.6.4] here, as the base class type is
|
| - // dependent on the template argument (and thus shouldn't be
|
| - // looked into when resolving InvokeWith).
|
| - return this->InvokeWith(ArgumentTuple($as));
|
| - }
|
| -};
|
| -
|
| -
|
| -]]
|
| -} // namespace internal
|
| -
|
| -// The style guide prohibits "using" statements in a namespace scope
|
| -// inside a header file. However, the FunctionMocker class template
|
| -// is meant to be defined in the ::testing namespace. The following
|
| -// line is just a trick for working around a bug in MSVC 8.0, which
|
| -// cannot handle it if we define FunctionMocker in ::testing.
|
| -using internal::FunctionMocker;
|
| -
|
| -// The result type of function type F.
|
| -// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
|
| -#define GMOCK_RESULT_(tn, F) tn ::testing::internal::Function<F>::Result
|
| -
|
| -// The type of argument N of function type F.
|
| -// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
|
| -#define GMOCK_ARG_(tn, F, N) tn ::testing::internal::Function<F>::Argument##N
|
| -
|
| -// The matcher type for argument N of function type F.
|
| -// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
|
| -#define GMOCK_MATCHER_(tn, F, N) const ::testing::Matcher<GMOCK_ARG_(tn, F, N)>&
|
| -
|
| -// The variable for mocking the given method.
|
| -// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
|
| -#define GMOCK_MOCKER_(arity, constness, Method) \
|
| - GMOCK_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
|
| -
|
| -
|
| -$for i [[
|
| -$range j 1..i
|
| -$var arg_as = [[$for j, \
|
| - [[GMOCK_ARG_(tn, F, $j) gmock_a$j]]]]
|
| -$var as = [[$for j, [[gmock_a$j]]]]
|
| -$var matcher_as = [[$for j, \
|
| - [[GMOCK_MATCHER_(tn, F, $j) gmock_a$j]]]]
|
| -// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
|
| -#define GMOCK_METHOD$i[[]]_(tn, constness, ct, Method, F) \
|
| - GMOCK_RESULT_(tn, F) ct Method($arg_as) constness { \
|
| - GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
|
| - tn ::testing::internal::Function<F>::ArgumentTuple>::value == $i, \
|
| - this_method_does_not_take_$i[[]]_argument[[$if i != 1 [[s]]]]); \
|
| - GMOCK_MOCKER_($i, constness, Method).SetOwnerAndName(this, #Method); \
|
| - return GMOCK_MOCKER_($i, constness, Method).Invoke($as); \
|
| - } \
|
| - ::testing::MockSpec<F>& \
|
| - gmock_##Method($matcher_as) constness { \
|
| - return GMOCK_MOCKER_($i, constness, Method).RegisterOwner(this).With($as); \
|
| - } \
|
| - mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_($i, constness, Method)
|
| -
|
| -
|
| -]]
|
| -$for i [[
|
| -#define MOCK_METHOD$i(m, F) GMOCK_METHOD$i[[]]_(, , , m, F)
|
| -
|
| -]]
|
| -
|
| -
|
| -$for i [[
|
| -#define MOCK_CONST_METHOD$i(m, F) GMOCK_METHOD$i[[]]_(, const, , m, F)
|
| -
|
| -]]
|
| -
|
| -
|
| -$for i [[
|
| -#define MOCK_METHOD$i[[]]_T(m, F) GMOCK_METHOD$i[[]]_(typename, , , m, F)
|
| -
|
| -]]
|
| -
|
| -
|
| -$for i [[
|
| -#define MOCK_CONST_METHOD$i[[]]_T(m, F) [[]]
|
| -GMOCK_METHOD$i[[]]_(typename, const, , m, F)
|
| -
|
| -]]
|
| -
|
| -
|
| -$for i [[
|
| -#define MOCK_METHOD$i[[]]_WITH_CALLTYPE(ct, m, F) [[]]
|
| -GMOCK_METHOD$i[[]]_(, , ct, m, F)
|
| -
|
| -]]
|
| -
|
| -
|
| -$for i [[
|
| -#define MOCK_CONST_METHOD$i[[]]_WITH_CALLTYPE(ct, m, F) \
|
| - GMOCK_METHOD$i[[]]_(, const, ct, m, F)
|
| -
|
| -]]
|
| -
|
| -
|
| -$for i [[
|
| -#define MOCK_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, F) \
|
| - GMOCK_METHOD$i[[]]_(typename, , ct, m, F)
|
| -
|
| -]]
|
| -
|
| -
|
| -$for i [[
|
| -#define MOCK_CONST_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, F) \
|
| - GMOCK_METHOD$i[[]]_(typename, const, ct, m, F)
|
| -
|
| -]]
|
| -
|
| -// A MockFunction<F> class has one mock method whose type is F. It is
|
| -// useful when you just want your test code to emit some messages and
|
| -// have Google Mock verify the right messages are sent (and perhaps at
|
| -// the right times). For example, if you are exercising code:
|
| -//
|
| -// Foo(1);
|
| -// Foo(2);
|
| -// Foo(3);
|
| -//
|
| -// and want to verify that Foo(1) and Foo(3) both invoke
|
| -// mock.Bar("a"), but Foo(2) doesn't invoke anything, you can write:
|
| -//
|
| -// TEST(FooTest, InvokesBarCorrectly) {
|
| -// MyMock mock;
|
| -// MockFunction<void(string check_point_name)> check;
|
| -// {
|
| -// InSequence s;
|
| -//
|
| -// EXPECT_CALL(mock, Bar("a"));
|
| -// EXPECT_CALL(check, Call("1"));
|
| -// EXPECT_CALL(check, Call("2"));
|
| -// EXPECT_CALL(mock, Bar("a"));
|
| -// }
|
| -// Foo(1);
|
| -// check.Call("1");
|
| -// Foo(2);
|
| -// check.Call("2");
|
| -// Foo(3);
|
| -// }
|
| -//
|
| -// The expectation spec says that the first Bar("a") must happen
|
| -// before check point "1", the second Bar("a") must happen after check
|
| -// point "2", and nothing should happen between the two check
|
| -// points. The explicit check points make it easy to tell which
|
| -// Bar("a") is called by which call to Foo().
|
| -template <typename F>
|
| -class MockFunction;
|
| -
|
| -
|
| -$for i [[
|
| -$range j 0..i-1
|
| -template <typename R$for j [[, typename A$j]]>
|
| -class MockFunction<R($for j, [[A$j]])> {
|
| - public:
|
| - MockFunction() {}
|
| -
|
| - MOCK_METHOD$i[[]]_T(Call, R($for j, [[A$j]]));
|
| -
|
| - private:
|
| - GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
|
| -};
|
| -
|
| -
|
| -]]
|
| -} // namespace testing
|
| -
|
| -#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
|
|
|