Go to the documentation of this file.
37 #ifndef GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
38 #define GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
48 #include <type_traits>
51 #include "gmock/internal/gmock-internal-utils.h"
52 #include "gmock/internal/gmock-port.h"
55 # pragma warning(push)
56 # pragma warning(disable:4100)
77 template <
typename T,
bool kDefaultConstructible>
84 Assert(
false, __FILE__, __LINE__,
85 "Default action undefined for the function return type.");
86 return internal::Invalid<T>();
115 template <
typename T>
124 template <
typename T>
128 static T*
Get() {
return nullptr; }
133 #define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \
135 class BuiltInDefaultValue<type> { \
137 static bool Exists() { return true; } \
138 static type Get() { return value; } \
154 #if GMOCK_WCHAR_T_IS_NATIVE_
169 #undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_
186 template <
typename T>
261 template <
typename T>
303 template <
typename T>
307 template <
typename T>
311 template <
typename F>
337 template <
typename F>
343 ::std::shared_ptr<ActionInterface<F>>
impl_;
345 template <
typename...
Args>
347 return impl_->Perform(
348 ::std::forward_as_tuple(::std::forward<Args>(
args)...));
363 template <
typename G,
364 typename = typename ::std::enable_if<
370 :
fun_(ActionAdapter{::std::shared_ptr<ActionInterface<F>>(impl)}) {}
375 template <
typename Func>
395 template <
typename G>
423 template <
typename Impl>
428 template <
typename F>
434 template <
typename F>
443 return impl_.template Perform<Result>(
args);
459 template <
typename F>
471 template <
typename Impl>
480 template <
typename T>
513 template <
typename R>
523 template <
typename F>
536 use_ReturnRef_instead_of_Return_to_return_a_reference);
538 "Can't use Return() on an action expected to return `void`.");
544 template <
typename R_,
typename F>
565 Result_cannot_be_a_reference_type);
576 template <
typename R_,
typename F>
587 <<
"A ByMove() action should only be performed once.";
610 template <
typename Result,
typename ArgumentTuple>
620 template <
typename Result,
typename ArgumentTuple>
629 template <
typename T>
637 template <
typename F>
644 use_Return_instead_of_ReturnRef_to_return_a_value);
650 template <
typename F>
674 template <
typename T>
683 template <
typename F>
691 use_Return_instead_of_ReturnRefOfCopy_to_return_a_value);
697 template <
typename F>
723 template <
typename F>
729 template <
typename T1,
typename T2>
734 template <
typename Result,
typename ArgumentTuple>
746 #if !GTEST_OS_WINDOWS_MOBILE
750 template <
typename T>
756 template <
typename Result,
typename ArgumentTuple>
769 #endif // !GTEST_OS_WINDOWS_MOBILE
773 template <
size_t N,
typename A,
typename =
void>
777 template <
typename...
Args>
779 *::std::get<N>(std::tie(
args...)) =
value;
784 template <
class Class,
typename MethodPtr>
789 template <
typename...
Args>
800 template <
typename FunctionImpl>
806 template <
typename...
Args>
813 template <
class Class,
typename MethodPtr>
820 template <
typename...
Args>
827 template <
typename A>
832 template <
typename F>
851 template <
typename F>
880 template <
typename InnerAction,
size_t...
I>
886 template <
typename R,
typename...
Args>
888 Action<R(
typename std::tuple_element<
I, std::tuple<Args...>>::
type...)>
891 return [converted](
Args...
args) -> R {
892 return converted.
Perform(std::forward_as_tuple(
893 std::get<I>(std::forward_as_tuple(std::forward<Args>(
args)...))...));
898 template <
typename... Actions>
901 template <
typename...
Args,
size_t...
I>
903 return {std::get<I>(
actions)...};
909 template <
typename R,
typename...
Args>
915 auto tuple_args = std::forward_as_tuple(std::forward<Args>(
args)...);
916 for (
auto&
a : converted) {
917 a.Perform(tuple_args);
919 return last.
Perform(tuple_args);
963 template <
typename...
Action>
966 return {std::forward_as_tuple(std::forward<Action>(
action)...)};
974 template <
size_t k,
typename InnerAction>
977 return {std::forward<InnerAction>(
action)};
984 template <
size_t k,
size_t... ks,
typename InnerAction>
987 return {std::forward<InnerAction>(
action)};
994 template <
typename InnerAction>
997 return {std::forward<InnerAction>(
action)};
1003 template <
typename R>
1019 template <
typename R>
1027 template <
typename R>
1036 template <
typename R>
1048 template <
size_t N,
typename T>
1054 template <
size_t N,
typename T>
1060 template <
typename T1,
typename T2>
1065 #if !GTEST_OS_WINDOWS_MOBILE
1068 template <
typename T>
1069 PolymorphicAction<internal::SetErrnoAndReturnAction<T> >
1075 #endif // !GTEST_OS_WINDOWS_MOBILE
1083 template <
typename FunctionImpl>
1085 return std::forward<FunctionImpl>(function_impl);
1090 template <
class Class,
typename MethodPtr>
1092 MethodPtr method_ptr) {
1093 return {obj_ptr, method_ptr};
1097 template <
typename FunctionImpl>
1105 template <
class Class,
typename MethodPtr>
1107 Class* obj_ptr, MethodPtr method_ptr) {
1108 return {obj_ptr, method_ptr};
1114 template <
typename A>
1129 template <
typename T>
1130 inline ::std::reference_wrapper<T>
ByRef(
T& l_value) {
1131 return ::std::reference_wrapper<T>(l_value);
1137 # pragma warning(pop)
1141 #endif // GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
internal::ReturnRefOfCopyAction< R > ReturnRefOfCopy(const R &x)
Result Perform(const ArgumentTuple &) override
Function< F >::ArgumentTuple ArgumentTuple
Function< F >::ArgumentTuple ArgumentTuple
WeakRefCountedPtr< ChildPolicyWrapper > wrapper_
GTEST_DISALLOW_ASSIGN_(ReturnAction)
internal::Function< F >::ArgumentTuple ArgumentTuple
GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionInterface)
GTEST_API_ void IllegalDoDefault(const char *file, int line)
absl::string_view get(const Cont &c)
std::tuple< Actions... > actions
GTEST_DISALLOW_ASSIGN_(Impl)
static void Perform(const ArgumentTuple &)
internal::Function< F >::MakeResultIgnoredValue OriginalFunction
GTEST_DISALLOW_ASSIGN_(AssignAction)
internal::Function< F >::ArgumentTuple ArgumentTuple
::std::function< F > fun_
GTEST_DISALLOW_ASSIGN_(ReturnRefOfCopyAction)
internal::ReturnAction< R > Return(R value)
PolymorphicAction(const Impl &impl)
GTEST_DISALLOW_COPY_AND_ASSIGN_(FactoryValueProducer)
Function< F >::Result Result
GTEST_DISALLOW_ASSIGN_(PolymorphicAction)
Result Perform(const ArgumentTuple &) override
Function< F >::Result Result
GTEST_DISALLOW_ASSIGN_(MonomorphicImpl)
GTEST_COMPILE_ASSERT_(!std::is_reference< Result >::value, Result_cannot_be_a_reference_type)
static void SetFactory(FactoryFunction factory)
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
TypeWithSize< 8 >::UInt UInt64
SetErrnoAndReturnAction(int errno_value, T result)
#define GTEST_COMPILE_ASSERT_(expr, msg)
internal::Function< F >::Result Result
Function< F >::ArgumentTuple ArgumentTuple
GTEST_DISALLOW_ASSIGN_(Impl)
inline ::std::reference_wrapper< T > ByRef(T &l_value)
Action< F > MakeAction(ActionInterface< F > *impl)
PolymorphicAction< Impl > MakePolymorphicAction(const Impl &impl)
internal::ReturnRefAction< R > ReturnRef(R &x)
Impl(const std::shared_ptr< R > &wrapper)
#define T(upbtypeconst, upbtype, ctype, default_value)
Function< F >::ArgumentTuple ArgumentTuple
Result Perform(const ArgumentTuple &) override
internal::WithArgsAction< typename std::decay< InnerAction >::type, k > WithArg(InnerAction &&action)
ReturnType operator()(const Args &...) const
GTEST_DISALLOW_ASSIGN_(ReturnRefAction)
internal::Function< F >::Result Result
FactoryValueProducer(FactoryFunction factory)
Result Perform(const ArgumentTuple &) override
Action(const Action< Func > &action)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
const MethodPtr method_ptr
std::result_of< F > result_of
TestInstance::Result Result
ReturnRefOfCopyAction(const T &value)
internal::DoAllAction< typename std::decay< Action >::type... > DoAll(Action &&... action)
void operator()(const Args &... args) const
internal::Function< F >::ArgumentTuple ArgumentTuple
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void,)
internal::ByMoveWrapper< R > ByMove(R x)
const std::shared_ptr< R > wrapper_
Action(ActionInterface< F > *impl)
static Result Perform(const ArgumentTuple &)
Function< F >::Result Result
void Perform(const ArgumentTuple &) const
grpc_channel_wrapper * wrapper
std::vector< Action< void(Args...)> > Convert(IndexSequence< I... >) const
Function< F >::Result Result
virtual ~ActionInterface()
FunctionImpl function_impl
GTEST_DISALLOW_ASSIGN_(Impl)
GTEST_DISALLOW_ASSIGN_(IgnoreResultAction)
auto Apply(F &&f, Tuple &&args) -> decltype(ApplyImpl(std::forward< F >(f), std::forward< Tuple >(args), MakeIndexSequence< std::tuple_size< Tuple >::value >()))
internal::Function< F >::Result Result
AssignAction(T1 *ptr, T2 value)
FixedValueProducer(T value)
#define GTEST_CHECK_(condition)
internal::Function< F >::ArgumentTuple ArgumentTuple
virtual Result Perform(const ArgumentTuple &args)=0
void Assert(bool condition, const char *file, int line)
Impl(const std::shared_ptr< R > &value)
PolymorphicAction< internal::SetErrnoAndReturnAction< T > > SetErrnoAndReturn(int errval, T result)
internal::IgnoreResultAction< A > IgnoreResult(const A &an_action)
const FactoryFunction factory_
auto operator()(Args &&... args) const -> decltype((obj_ptr-> *method_ptr)(std::forward< Args >(args)...))
void Perform(const ArgumentTuple &args) override
IgnoreResultAction(const A &action)
static ValueProducer * producer_
internal::WithArgsAction< typename std::decay< InnerAction >::type, k, ks... > WithArgs(InnerAction &&action)
const std::shared_ptr< R > value_
std::decay< FunctionImpl >::type Invoke(FunctionImpl &&function_impl)
Result Perform(ArgumentTuple args) const
PolymorphicAction< internal::ReturnNullAction > ReturnNull()
GTEST_DISALLOW_COPY_AND_ASSIGN_(FixedValueProducer)
Result Perform(const ArgumentTuple &) const
internal::Function< F >::Result operator()(Args &&... args)
internal::SetArgumentPointeeAction< N, T > SetArgumentPointee(T x)
TypeWithSize< 8 >::Int Int64
auto operator()(const Args &...) -> decltype(function_impl())
constexpr T && forward(absl::remove_reference_t< T > &t) noexcept
internal::DoDefaultAction DoDefault()
GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl)
const T & move(const T &t)
internal::WithArgsAction< typename std::decay< InnerAction >::type > WithoutArgs(InnerAction &&action)
GTEST_DISALLOW_ASSIGN_(SetErrnoAndReturnAction)
const Action< OriginalFunction > action_
typename std::result_of< MethodPtr(Class *)>::type ReturnType
PolymorphicAction< internal::AssignAction< T1, T2 > > Assign(T1 *ptr, T2 val)
MonomorphicImpl(const Impl &impl)
internal::SetArgumentPointeeAction< N, T > SetArgPointee(T x)
internal::IgnoredValue Unused
::std::shared_ptr< ActionInterface< F > > impl_
internal::Function< F >::Result Result
internal::InvokeWithoutArgsAction< typename std::decay< FunctionImpl >::type > InvokeWithoutArgs(FunctionImpl function_impl)
Result Perform(const ArgumentTuple &args) override
const MethodPtr method_ptr
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:28