diff options
| author | Gennadiy Civil <misterg@google.com> | 2018-04-10 15:57:16 -0400 | 
|---|---|---|
| committer | Gennadiy Civil <misterg@google.com> | 2018-04-10 15:57:16 -0400 | 
| commit | e1071eb9497304a38e69737e90a88b4877b8b736 (patch) | |
| tree | a3f997e6412a22622588cb7e7468920678774054 /googlemock | |
| parent | d0de1180e44bb279361ebe3ce9ba3d860bdad4b2 (diff) | |
| download | googletest-e1071eb9497304a38e69737e90a88b4877b8b736.tar.gz googletest-e1071eb9497304a38e69737e90a88b4877b8b736.tar.bz2 googletest-e1071eb9497304a38e69737e90a88b4877b8b736.zip | |
RE-Doing the merge, this time with gcc on mac in the PR so I can catch errors before merging the PR
Diffstat (limited to 'googlemock')
| -rw-r--r-- | googlemock/include/gmock/gmock-generated-actions.h | 328 | ||||
| -rw-r--r-- | googlemock/include/gmock/gmock-generated-actions.h.pump | 49 | ||||
| -rw-r--r-- | googlemock/include/gmock/gmock-generated-matchers.h.pump | 4 | ||||
| -rw-r--r-- | googlemock/include/gmock/gmock-generated-nice-strict.h.pump | 4 | ||||
| -rw-r--r-- | googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump | 2 | ||||
| -rw-r--r-- | googlemock/src/gmock-spec-builders.cc | 17 | ||||
| -rw-r--r-- | googlemock/test/gmock-actions_test.cc | 16 | ||||
| -rw-r--r-- | googlemock/test/gmock-generated-actions_test.cc | 11 | ||||
| -rw-r--r-- | googlemock/test/gmock_output_test_.cc | 4 | 
9 files changed, 342 insertions, 93 deletions
| diff --git a/googlemock/include/gmock/gmock-generated-actions.h b/googlemock/include/gmock/gmock-generated-actions.h index be4ebe4f..7728d745 100644 --- a/googlemock/include/gmock/gmock-generated-actions.h +++ b/googlemock/include/gmock/gmock-generated-actions.h @@ -1,4 +1,6 @@ -// This file was GENERATED by a script.  DO NOT EDIT BY HAND!!! +// This file was GENERATED by command: +//     pump.py gmock-generated-actions.h.pump +// DO NOT EDIT BY HAND!!!  // Copyright 2007, Google Inc.  // All rights reserved. @@ -45,8 +47,8 @@ namespace testing {  namespace internal {  // InvokeHelper<F> knows how to unpack an N-tuple and invoke an N-ary -// function or method with the unpacked values, where F is a function -// type that takes N arguments. +// function, method, or callback with the unpacked values, where F is +// a function type that takes N arguments.  template <typename Result, typename ArgumentTuple>  class InvokeHelper; @@ -64,6 +66,12 @@ class InvokeHelper<R, ::testing::tuple<> > {                          const ::testing::tuple<>&) {             return (obj_ptr->*method_ptr)();    } + +  template <typename CallbackType> +  static R InvokeCallback(CallbackType* callback, +                          const ::testing::tuple<>&) { +           return callback->Run(); +  }  };  template <typename R, typename A1> @@ -80,6 +88,12 @@ class InvokeHelper<R, ::testing::tuple<A1> > {                          const ::testing::tuple<A1>& args) {             return (obj_ptr->*method_ptr)(get<0>(args));    } + +  template <typename CallbackType> +  static R InvokeCallback(CallbackType* callback, +                          const ::testing::tuple<A1>& args) { +           return callback->Run(get<0>(args)); +  }  };  template <typename R, typename A1, typename A2> @@ -96,6 +110,12 @@ class InvokeHelper<R, ::testing::tuple<A1, A2> > {                          const ::testing::tuple<A1, A2>& args) {             return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args));    } + +  template <typename CallbackType> +  static R InvokeCallback(CallbackType* callback, +                          const ::testing::tuple<A1, A2>& args) { +           return callback->Run(get<0>(args), get<1>(args)); +  }  };  template <typename R, typename A1, typename A2, typename A3> @@ -113,6 +133,12 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3> > {             return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args),                 get<2>(args));    } + +  template <typename CallbackType> +  static R InvokeCallback(CallbackType* callback, +                          const ::testing::tuple<A1, A2, A3>& args) { +           return callback->Run(get<0>(args), get<1>(args), get<2>(args)); +  }  };  template <typename R, typename A1, typename A2, typename A3, typename A4> @@ -132,6 +158,13 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3, A4> > {             return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args),                 get<2>(args), get<3>(args));    } + +  template <typename CallbackType> +  static R InvokeCallback(CallbackType* callback, +                          const ::testing::tuple<A1, A2, A3, A4>& args) { +           return callback->Run(get<0>(args), get<1>(args), get<2>(args), +               get<3>(args)); +  }  };  template <typename R, typename A1, typename A2, typename A3, typename A4, @@ -152,6 +185,13 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3, A4, A5> > {             return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args),                 get<2>(args), get<3>(args), get<4>(args));    } + +  template <typename CallbackType> +  static R InvokeCallback(CallbackType* callback, +                          const ::testing::tuple<A1, A2, A3, A4, A5>& args) { +           return callback->Run(get<0>(args), get<1>(args), get<2>(args), +               get<3>(args), get<4>(args)); +  }  };  template <typename R, typename A1, typename A2, typename A3, typename A4, @@ -172,6 +212,9 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3, A4, A5, A6> > {             return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args),                 get<2>(args), get<3>(args), get<4>(args), get<5>(args));    } + +  // There is no InvokeCallback() for 6-tuples, as google3 callbacks +  // support 5 arguments at most.  };  template <typename R, typename A1, typename A2, typename A3, typename A4, @@ -194,6 +237,9 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3, A4, A5, A6, A7> > {                 get<2>(args), get<3>(args), get<4>(args), get<5>(args),                 get<6>(args));    } + +  // There is no InvokeCallback() for 7-tuples, as google3 callbacks +  // support 5 arguments at most.  };  template <typename R, typename A1, typename A2, typename A3, typename A4, @@ -217,6 +263,9 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8> > {                 get<2>(args), get<3>(args), get<4>(args), get<5>(args),                 get<6>(args), get<7>(args));    } + +  // There is no InvokeCallback() for 8-tuples, as google3 callbacks +  // support 5 arguments at most.  };  template <typename R, typename A1, typename A2, typename A3, typename A4, @@ -240,6 +289,9 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> > {                 get<2>(args), get<3>(args), get<4>(args), get<5>(args),                 get<6>(args), get<7>(args), get<8>(args));    } + +  // There is no InvokeCallback() for 9-tuples, as google3 callbacks +  // support 5 arguments at most.  };  template <typename R, typename A1, typename A2, typename A3, typename A4, @@ -265,6 +317,34 @@ class InvokeHelper<R, ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9,                 get<2>(args), get<3>(args), get<4>(args), get<5>(args),                 get<6>(args), get<7>(args), get<8>(args), get<9>(args));    } + +  // There is no InvokeCallback() for 10-tuples, as google3 callbacks +  // support 5 arguments at most. +}; + +// Implements the Invoke(callback) action. +template <typename CallbackType> +class InvokeCallbackAction { + public: +  // The c'tor takes ownership of the callback. +  explicit InvokeCallbackAction(CallbackType* callback) +      : callback_(callback) { +    callback->CheckIsRepeatable();  // Makes sure the callback is permanent. +  } + +  // This type conversion operator template allows Invoke(callback) to +  // be used wherever the callback's type is compatible with that of +  // the mock function, i.e. if the mock function's arguments can be +  // implicitly converted to the callback's arguments and the +  // callback's result can be implicitly converted to the mock +  // function's result. +  template <typename Result, typename ArgumentTuple> +  Result Perform(const ArgumentTuple& args) const { +    return InvokeHelper<Result, ArgumentTuple>::InvokeCallback( +        callback_.get(), args); +  } + private: +  const linked_ptr<CallbackType> callback_;  };  // An INTERNAL macro for extracting the type of a tuple field.  It's @@ -1073,52 +1153,90 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,  #define GMOCK_INTERNAL_INIT_AND_0_VALUE_PARAMS()\      ()  #define GMOCK_INTERNAL_INIT_AND_1_VALUE_PARAMS(p0)\ -    (p0##_type gmock_p0) : p0(gmock_p0) +    (p0##_type gmock_p0) : p0(::testing::internal::move(gmock_p0))  #define GMOCK_INTERNAL_INIT_AND_2_VALUE_PARAMS(p0, p1)\ -    (p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), p1(gmock_p1) +    (p0##_type gmock_p0, \ +        p1##_type gmock_p1) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1))  #define GMOCK_INTERNAL_INIT_AND_3_VALUE_PARAMS(p0, p1, p2)\      (p0##_type gmock_p0, p1##_type gmock_p1, \ -        p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) +        p2##_type gmock_p2) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2))  #define GMOCK_INTERNAL_INIT_AND_4_VALUE_PARAMS(p0, p1, p2, p3)\      (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ -        p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3) +        p3##_type gmock_p3) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2)), \ +        p3(::testing::internal::move(gmock_p3))  #define GMOCK_INTERNAL_INIT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)\      (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ -        p3##_type gmock_p3, p4##_type gmock_p4) : p0(gmock_p0), p1(gmock_p1), \ -        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4) +        p3##_type gmock_p3, \ +        p4##_type gmock_p4) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2)), \ +        p3(::testing::internal::move(gmock_p3)), \ +        p4(::testing::internal::move(gmock_p4))  #define GMOCK_INTERNAL_INIT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)\      (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \          p3##_type gmock_p3, p4##_type gmock_p4, \ -        p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) +        p5##_type gmock_p5) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2)), \ +        p3(::testing::internal::move(gmock_p3)), \ +        p4(::testing::internal::move(gmock_p4)), \ +        p5(::testing::internal::move(gmock_p5))  #define GMOCK_INTERNAL_INIT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)\      (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ -        p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6) +        p6##_type gmock_p6) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2)), \ +        p3(::testing::internal::move(gmock_p3)), \ +        p4(::testing::internal::move(gmock_p4)), \ +        p5(::testing::internal::move(gmock_p5)), \ +        p6(::testing::internal::move(gmock_p6))  #define GMOCK_INTERNAL_INIT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)\      (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ -        p6##_type gmock_p6, p7##_type gmock_p7) : p0(gmock_p0), p1(gmock_p1), \ -        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \ -        p7(gmock_p7) +        p6##_type gmock_p6, \ +        p7##_type gmock_p7) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2)), \ +        p3(::testing::internal::move(gmock_p3)), \ +        p4(::testing::internal::move(gmock_p4)), \ +        p5(::testing::internal::move(gmock_p5)), \ +        p6(::testing::internal::move(gmock_p6)), \ +        p7(::testing::internal::move(gmock_p7))  #define GMOCK_INTERNAL_INIT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \      p7, p8)\      (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \          p6##_type gmock_p6, p7##_type gmock_p7, \ -        p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \ -        p8(gmock_p8) +        p8##_type gmock_p8) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2)), \ +        p3(::testing::internal::move(gmock_p3)), \ +        p4(::testing::internal::move(gmock_p4)), \ +        p5(::testing::internal::move(gmock_p5)), \ +        p6(::testing::internal::move(gmock_p6)), \ +        p7(::testing::internal::move(gmock_p7)), \ +        p8(::testing::internal::move(gmock_p8))  #define GMOCK_INTERNAL_INIT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \      p7, p8, p9)\      (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \          p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \ -        p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \ -        p8(gmock_p8), p9(gmock_p9) +        p9##_type gmock_p9) : p0(::testing::internal::move(gmock_p0)), \ +        p1(::testing::internal::move(gmock_p1)), \ +        p2(::testing::internal::move(gmock_p2)), \ +        p3(::testing::internal::move(gmock_p3)), \ +        p4(::testing::internal::move(gmock_p4)), \ +        p5(::testing::internal::move(gmock_p5)), \ +        p6(::testing::internal::move(gmock_p6)), \ +        p7(::testing::internal::move(gmock_p7)), \ +        p8(::testing::internal::move(gmock_p8)), \ +        p9(::testing::internal::move(gmock_p9))  // Declares the fields for storing the value parameters.  #define GMOCK_INTERNAL_DEFN_AND_0_VALUE_PARAMS() @@ -1354,7 +1472,8 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,    template <typename p0##_type>\    class name##ActionP {\     public:\ -    explicit name##ActionP(p0##_type gmock_p0) : p0(gmock_p0) {}\ +    explicit name##ActionP(p0##_type gmock_p0) : \ +        p0(::testing::internal::forward<p0##_type>(gmock_p0)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1362,7 +1481,8 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,        typedef typename ::testing::internal::Function<F>::Result return_type;\        typedef typename ::testing::internal::Function<F>::ArgumentTuple\            args_type;\ -      explicit gmock_Impl(p0##_type gmock_p0) : p0(gmock_p0) {}\ +      explicit gmock_Impl(p0##_type gmock_p0) : \ +          p0(::testing::internal::forward<p0##_type>(gmock_p0)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1404,8 +1524,9 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,    template <typename p0##_type, typename p1##_type>\    class name##ActionP2 {\     public:\ -    name##ActionP2(p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), \ -        p1(gmock_p1) {}\ +    name##ActionP2(p0##_type gmock_p0, \ +        p1##_type gmock_p1) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1413,8 +1534,9 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,        typedef typename ::testing::internal::Function<F>::Result return_type;\        typedef typename ::testing::internal::Function<F>::ArgumentTuple\            args_type;\ -      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), \ -          p1(gmock_p1) {}\ +      gmock_Impl(p0##_type gmock_p0, \ +          p1##_type gmock_p1) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1460,7 +1582,9 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,    class name##ActionP3 {\     public:\      name##ActionP3(p0##_type gmock_p0, p1##_type gmock_p1, \ -        p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {}\ +        p2##_type gmock_p2) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1469,7 +1593,9 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,        typedef typename ::testing::internal::Function<F>::ArgumentTuple\            args_type;\        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, \ -          p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {}\ +          p2##_type gmock_p2) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1519,8 +1645,11 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,    class name##ActionP4 {\     public:\      name##ActionP4(p0##_type gmock_p0, p1##_type gmock_p1, \ -        p2##_type gmock_p2, p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), \ -        p2(gmock_p2), p3(gmock_p3) {}\ +        p2##_type gmock_p2, \ +        p3##_type gmock_p3) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +        p3(::testing::internal::forward<p3##_type>(gmock_p3)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1529,8 +1658,10 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,        typedef typename ::testing::internal::Function<F>::ArgumentTuple\            args_type;\        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ -          p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -          p3(gmock_p3) {}\ +          p3##_type gmock_p3) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +          p3(::testing::internal::forward<p3##_type>(gmock_p3)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1587,8 +1718,11 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,     public:\      name##ActionP5(p0##_type gmock_p0, p1##_type gmock_p1, \          p2##_type gmock_p2, p3##_type gmock_p3, \ -        p4##_type gmock_p4) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4) {}\ +        p4##_type gmock_p4) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +        p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +        p4(::testing::internal::forward<p4##_type>(gmock_p4)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1597,8 +1731,12 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,        typedef typename ::testing::internal::Function<F>::ArgumentTuple\            args_type;\        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ -          p3##_type gmock_p3, p4##_type gmock_p4) : p0(gmock_p0), \ -          p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), p4(gmock_p4) {}\ +          p3##_type gmock_p3, \ +          p4##_type gmock_p4) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +          p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +          p4(::testing::internal::forward<p4##_type>(gmock_p4)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1657,8 +1795,12 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,     public:\      name##ActionP6(p0##_type gmock_p0, p1##_type gmock_p1, \          p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ -        p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) {}\ +        p5##_type gmock_p5) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +        p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +        p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +        p5(::testing::internal::forward<p5##_type>(gmock_p5)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1668,8 +1810,12 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,            args_type;\        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \            p3##_type gmock_p3, p4##_type gmock_p4, \ -          p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) {}\ +          p5##_type gmock_p5) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +          p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +          p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +          p5(::testing::internal::forward<p5##_type>(gmock_p5)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1731,9 +1877,14 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,     public:\      name##ActionP7(p0##_type gmock_p0, p1##_type gmock_p1, \          p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ -        p5##_type gmock_p5, p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), \ -        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), \ -        p6(gmock_p6) {}\ +        p5##_type gmock_p5, \ +        p6##_type gmock_p6) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +        p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +        p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +        p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +        p6(::testing::internal::forward<p6##_type>(gmock_p6)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1743,8 +1894,13 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,            args_type;\        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \            p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ -          p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6) {}\ +          p6##_type gmock_p6) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +          p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +          p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +          p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +          p6(::testing::internal::forward<p6##_type>(gmock_p6)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1813,9 +1969,14 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,      name##ActionP8(p0##_type gmock_p0, p1##_type gmock_p1, \          p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \          p5##_type gmock_p5, p6##_type gmock_p6, \ -        p7##_type gmock_p7) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \ -        p7(gmock_p7) {}\ +        p7##_type gmock_p7) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +        p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +        p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +        p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +        p6(::testing::internal::forward<p6##_type>(gmock_p6)), \ +        p7(::testing::internal::forward<p7##_type>(gmock_p7)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1825,9 +1986,15 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,            args_type;\        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \            p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ -          p6##_type gmock_p6, p7##_type gmock_p7) : p0(gmock_p0), \ -          p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), \ -          p5(gmock_p5), p6(gmock_p6), p7(gmock_p7) {}\ +          p6##_type gmock_p6, \ +          p7##_type gmock_p7) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +          p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +          p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +          p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +          p6(::testing::internal::forward<p6##_type>(gmock_p6)), \ +          p7(::testing::internal::forward<p7##_type>(gmock_p7)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1900,9 +2067,15 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,      name##ActionP9(p0##_type gmock_p0, p1##_type gmock_p1, \          p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \          p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ -        p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \ -        p8(gmock_p8) {}\ +        p8##_type gmock_p8) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +        p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +        p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +        p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +        p6(::testing::internal::forward<p6##_type>(gmock_p6)), \ +        p7(::testing::internal::forward<p7##_type>(gmock_p7)), \ +        p8(::testing::internal::forward<p8##_type>(gmock_p8)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -1913,9 +2086,15 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \            p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \            p6##_type gmock_p6, p7##_type gmock_p7, \ -          p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \ -          p7(gmock_p7), p8(gmock_p8) {}\ +          p8##_type gmock_p8) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +          p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +          p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +          p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +          p6(::testing::internal::forward<p6##_type>(gmock_p6)), \ +          p7(::testing::internal::forward<p7##_type>(gmock_p7)), \ +          p8(::testing::internal::forward<p8##_type>(gmock_p8)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -1992,9 +2171,17 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,      name##ActionP10(p0##_type gmock_p0, p1##_type gmock_p1, \          p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \          p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ -        p8##_type gmock_p8, p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), \ -        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \ -        p7(gmock_p7), p8(gmock_p8), p9(gmock_p9) {}\ +        p8##_type gmock_p8, \ +        p9##_type gmock_p9) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +        p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +        p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +        p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +        p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +        p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +        p6(::testing::internal::forward<p6##_type>(gmock_p6)), \ +        p7(::testing::internal::forward<p7##_type>(gmock_p7)), \ +        p8(::testing::internal::forward<p8##_type>(gmock_p8)), \ +        p9(::testing::internal::forward<p9##_type>(gmock_p9)) {}\      template <typename F>\      class gmock_Impl : public ::testing::ActionInterface<F> {\       public:\ @@ -2005,9 +2192,16 @@ DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,        gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \            p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \            p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \ -          p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ -          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \ -          p7(gmock_p7), p8(gmock_p8), p9(gmock_p9) {}\ +          p9##_type gmock_p9) : p0(::testing::internal::forward<p0##_type>(gmock_p0)), \ +          p1(::testing::internal::forward<p1##_type>(gmock_p1)), \ +          p2(::testing::internal::forward<p2##_type>(gmock_p2)), \ +          p3(::testing::internal::forward<p3##_type>(gmock_p3)), \ +          p4(::testing::internal::forward<p4##_type>(gmock_p4)), \ +          p5(::testing::internal::forward<p5##_type>(gmock_p5)), \ +          p6(::testing::internal::forward<p6##_type>(gmock_p6)), \ +          p7(::testing::internal::forward<p7##_type>(gmock_p7)), \ +          p8(::testing::internal::forward<p8##_type>(gmock_p8)), \ +          p9(::testing::internal::forward<p9##_type>(gmock_p9)) {}\        virtual return_type Perform(const args_type& args) {\          return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\              Perform(this, args);\ @@ -2369,7 +2563,7 @@ ACTION_TEMPLATE(ReturnNew,  }  // namespace testing -// Include any custom actions added by the local installation. +// Include any custom callback actions added by the local installation.  // We must include this header at the end to make sure it can use the  // declarations from this file.  #include "gmock/internal/custom/gmock-generated-actions.h" diff --git a/googlemock/include/gmock/gmock-generated-actions.h.pump b/googlemock/include/gmock/gmock-generated-actions.h.pump index 712f65d6..8bafa478 100644 --- a/googlemock/include/gmock/gmock-generated-actions.h.pump +++ b/googlemock/include/gmock/gmock-generated-actions.h.pump @@ -1,5 +1,5 @@  $$ -*- mode: c++; -*- -$$ This is a Pump source file.  Please use Pump to convert it to +$$ This is a Pump source file. Please use Pump to convert it to  $$ gmock-generated-actions.h.  $$  $var n = 10  $$ The maximum arity we support. @@ -49,12 +49,13 @@ namespace testing {  namespace internal {  // InvokeHelper<F> knows how to unpack an N-tuple and invoke an N-ary -// function or method with the unpacked values, where F is a function -// type that takes N arguments. +// function, method, or callback with the unpacked values, where F is +// a function type that takes N arguments.  template <typename Result, typename ArgumentTuple>  class InvokeHelper; +$var max_callback_arity = 5  $range i 0..n  $for i [[  $range j 1..i @@ -76,10 +77,48 @@ class InvokeHelper<R, ::testing::tuple<$as> > {                          const ::testing::tuple<$as>&$args) {             return (obj_ptr->*method_ptr)($gets);    } + + +$if i <= max_callback_arity [[ +  template <typename CallbackType> +  static R InvokeCallback(CallbackType* callback, +                          const ::testing::tuple<$as>&$args) { +           return callback->Run($gets); +  } +]] $else [[ +  // There is no InvokeCallback() for $i-tuples, as google3 callbacks +  // support $max_callback_arity arguments at most. +]] +  };  ]] +// Implements the Invoke(callback) action. +template <typename CallbackType> +class InvokeCallbackAction { + public: +  // The c'tor takes ownership of the callback. +  explicit InvokeCallbackAction(CallbackType* callback) +      : callback_(callback) { +    callback->CheckIsRepeatable();  // Makes sure the callback is permanent. +  } + +  // This type conversion operator template allows Invoke(callback) to +  // be used wherever the callback's type is compatible with that of +  // the mock function, i.e. if the mock function's arguments can be +  // implicitly converted to the callback's arguments and the +  // callback's result can be implicitly converted to the mock +  // function's result. +  template <typename Result, typename ArgumentTuple> +  Result Perform(const ArgumentTuple& args) const { +    return InvokeHelper<Result, ArgumentTuple>::InvokeCallback( +        callback_.get(), args); +  } + private: +  const linked_ptr<CallbackType> callback_; +}; +  // An INTERNAL macro for extracting the type of a tuple field.  It's  // subject to change without notice - DO NOT USE IN USER CODE!  #define GMOCK_FIELD_(Tuple, N) \ @@ -486,7 +525,7 @@ _VALUE_PARAMS($for j, [[p$j]]) $for j [[, typename p$j##_type]]  $for i [[  $range j 0..i-1  #define GMOCK_INTERNAL_INIT_AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]])\ -    ($for j, [[p$j##_type gmock_p$j]])$if i>0 [[ : ]]$for j, [[p$j(gmock_p$j)]] +    ($for j, [[p$j##_type gmock_p$j]])$if i>0 [[ : ]]$for j, [[p$j(::testing::internal::move(gmock_p$j))]]  ]] @@ -619,7 +658,7 @@ $var class_name = [[name##Action[[$if i==0 [[]] $elif i==1 [[P]]  $range j 0..i-1  $var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]  $var param_types_and_names = [[$for j, [[p$j##_type p$j]]]] -$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(gmock_p$j)]]]]]] +$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::testing::internal::forward<p$j##_type>(gmock_p$j))]]]]]]  $var param_field_decls = [[$for j  [[ diff --git a/googlemock/include/gmock/gmock-generated-matchers.h.pump b/googlemock/include/gmock/gmock-generated-matchers.h.pump index 25d2da99..4fe0a61c 100644 --- a/googlemock/include/gmock/gmock-generated-matchers.h.pump +++ b/googlemock/include/gmock/gmock-generated-matchers.h.pump @@ -1,6 +1,6 @@  $$ -*- mode: c++; -*- -$$ This is a Pump source file.  Please use Pump to convert it to -$$ gmock-generated-actions.h. +$$ This is a Pump source file. Please use Pump to convert +$$ it to gmock-generated-matchers.h.  $$  $var n = 10  $$ The maximum arity we support.  $$ }} This line fixes auto-indentation of the following code in Emacs. diff --git a/googlemock/include/gmock/gmock-generated-nice-strict.h.pump b/googlemock/include/gmock/gmock-generated-nice-strict.h.pump index 4973c356..378c40f1 100644 --- a/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +++ b/googlemock/include/gmock/gmock-generated-nice-strict.h.pump @@ -1,6 +1,6 @@  $$ -*- mode: c++; -*- -$$ This is a Pump source file.  Please use Pump to convert it to -$$ gmock-generated-nice-strict.h. +$$ This is a Pump source file. Please use Pump to convert +$$ it to gmock-generated-nice-strict.h.  $$  $var n = 10  $$ The maximum arity we support.  // Copyright 2008, Google Inc. diff --git a/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump b/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump index d26c8a08..03cfd8c5 100644 --- a/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +++ b/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump @@ -1,5 +1,5 @@  $$ -*- mode: c++; -*- -$$ This is a Pump source file (http://go/pump).  Please use Pump to convert +$$ This is a Pump source file. Please use Pump to convert  $$ it to callback-actions.h.  $$  $var max_callback_arity = 5 diff --git a/googlemock/src/gmock-spec-builders.cc b/googlemock/src/gmock-spec-builders.cc index 39a3fe74..22d002fe 100644 --- a/googlemock/src/gmock-spec-builders.cc +++ b/googlemock/src/gmock-spec-builders.cc @@ -50,12 +50,13 @@  #endif  // Silence C4800 (C4800: 'int *const ': forcing value -// to bool 'true' or 'false') for MSVC 14 -#ifdef _MSC_VER && _MSC_VER == 1900 -# pragma warning(push) -# pragma warning(disable:4800) +// to bool 'true' or 'false') for MSVC 14,15 +#ifdef _MSC_VER +#if _MSC_VER <= 1900 +#  pragma warning(push) +#  pragma warning(disable:4800) +#endif  #endif -  namespace testing {  namespace internal { @@ -875,6 +876,8 @@ InSequence::~InSequence() {  }  // namespace testing -#ifdef _MSC_VER && _MSC_VER == 1900 -# pragma warning(pop) +#ifdef _MSC_VER +#if _MSC_VER <= 1900 +#  pragma warning(pop) +#endif  #endif diff --git a/googlemock/test/gmock-actions_test.cc b/googlemock/test/gmock-actions_test.cc index ea6129d7..5dd48460 100644 --- a/googlemock/test/gmock-actions_test.cc +++ b/googlemock/test/gmock-actions_test.cc @@ -33,6 +33,15 @@  //  // This file tests the built-in actions. +// Silence C4800 (C4800: 'int *const ': forcing value +// to bool 'true' or 'false') for MSVC 14,15 +#ifdef _MSC_VER +#if _MSC_VER <= 1900 +#  pragma warning(push) +#  pragma warning(disable:4800) +#endif +#endif +  #include "gmock/gmock-actions.h"  #include <algorithm>  #include <iterator> @@ -1556,3 +1565,10 @@ TEST(MoveOnlyArgumentsTest, ReturningActions) {  #endif  // GTEST_LANG_CXX11  }  // Unnamed namespace + +#ifdef _MSC_VER +#if _MSC_VER == 1900 +#  pragma warning(pop) +#endif +#endif + diff --git a/googlemock/test/gmock-generated-actions_test.cc b/googlemock/test/gmock-generated-actions_test.cc index 80bcb31c..b821e5a2 100644 --- a/googlemock/test/gmock-generated-actions_test.cc +++ b/googlemock/test/gmock-generated-actions_test.cc @@ -374,10 +374,9 @@ class SubstractAction : public ActionInterface<int(int, int)> {  // NOLINT  };  TEST(WithArgsTest, NonInvokeAction) { -  Action<int(const string&, int, int)> a =  // NOLINT +  Action<int(const std::string&, int, int)> a =  // NOLINT        WithArgs<2, 1>(MakeAction(new SubstractAction)); -  string s("hello"); -  EXPECT_EQ(8, a.Perform(tuple<const string&, int, int>(s, 2, 10))); +  EXPECT_EQ(8, a.Perform(make_tuple(std::string("hi"), 2, 10)));  }  // Tests using WithArgs to pass all original arguments in the original order. @@ -754,7 +753,7 @@ TEST(ActionPMacroTest, CanReferenceArgumentAndParameterTypes) {  TEST(ActionPMacroTest, WorksInCompatibleMockFunction) {    Action<std::string(const std::string& s)> a1 = Plus("tail");    const std::string re = "re"; -  EXPECT_EQ("retail", a1.Perform(tuple<const std::string&>(re))); +  EXPECT_EQ("retail", a1.Perform(make_tuple(re)));  }  // Tests that we can use ACTION*() to define actions overloaded on the @@ -796,7 +795,7 @@ TEST(ActionPnMacroTest, WorksFor3Parameters) {    Action<std::string(const std::string& s)> a2 = Plus("tail", "-", ">");    const std::string re = "re"; -  EXPECT_EQ("retail->", a2.Perform(tuple<const std::string&>(re))); +  EXPECT_EQ("retail->", a2.Perform(make_tuple(re)));  }  ACTION_P4(Plus, p0, p1, p2, p3) { return arg0 + p0 + p1 + p2 + p3; } @@ -1120,7 +1119,7 @@ TEST(ActionTemplateTest, WorksForIntegralTemplateParams) {    EXPECT_FALSE(b);  // Verifies that resetter is deleted.  } -// Tests that ACTION_TEMPLATE works for a template with template parameters. +// Tests that ACTION_TEMPLATES works for template template parameters.  ACTION_TEMPLATE(ReturnSmartPointer,                  HAS_1_TEMPLATE_PARAMS(template <typename Pointee> class,                                        Pointer), diff --git a/googlemock/test/gmock_output_test_.cc b/googlemock/test/gmock_output_test_.cc index d5f909d9..1b59eb3f 100644 --- a/googlemock/test/gmock_output_test_.cc +++ b/googlemock/test/gmock_output_test_.cc @@ -39,14 +39,12 @@  #include "gtest/gtest.h" - -// Silence C4100 (unreferenced formal parameter) for MSVC +// Silence C4100 (unreferenced formal parameter)  #ifdef _MSC_VER  # pragma warning(push)  # pragma warning(disable:4100)  #endif -  using testing::_;  using testing::AnyNumber;  using testing::Ge; | 
