56#if defined(_MSC_VER) && (_MSC_VER == 1900)
65using ::testing::internal::BuiltInDefaultValue;
67TEST(TypeTraits, Negation) {
69 static_assert(std::is_base_of<std::false_type,
70 internal::negation<std::true_type>>
::value,
73 static_assert(std::is_base_of<std::true_type,
74 internal::negation<std::false_type>>
::value,
79 static_assert(std::is_base_of<
81 internal::negation<std::integral_constant<int, 0>>>
::value,
84 static_assert(std::is_base_of<
86 internal::negation<std::integral_constant<int, 1>>>
::value,
89 static_assert(std::is_base_of<
91 internal::negation<std::integral_constant<int, -1>>>
::value,
104struct MyFalse : std::integral_constant<int, 0> {};
107struct MyTrue : std::integral_constant<int, -1> {};
109TEST(TypeTraits, Conjunction) {
111 static_assert(std::is_base_of<std::true_type, internal::conjunction<>>
::value,
116 std::is_base_of<MyFalse<0>, internal::conjunction<MyFalse<0>>>
::value,
120 std::is_base_of<MyTrue<0>, internal::conjunction<MyTrue<0>>>
::value,
"");
124 std::is_base_of<MyFalse<1>, internal::conjunction<MyTrue<0>, MyFalse<1>,
129 std::is_base_of<MyFalse<1>, internal::conjunction<MyTrue<0>, MyFalse<1>,
137 std::is_base_of<MyFalse<1>, internal::conjunction<MyTrue<0>, MyFalse<1>,
143 std::is_base_of<MyTrue<2>, internal::conjunction<MyTrue<0>, MyTrue<1>,
148TEST(TypeTraits, Disjunction) {
151 std::is_base_of<std::false_type, internal::disjunction<>>
::value,
"");
155 std::is_base_of<MyFalse<0>, internal::disjunction<MyFalse<0>>>
::value,
159 std::is_base_of<MyTrue<0>, internal::disjunction<MyTrue<0>>>
::value,
"");
163 std::is_base_of<MyTrue<1>, internal::disjunction<MyFalse<0>, MyTrue<1>,
168 std::is_base_of<MyTrue<1>, internal::disjunction<MyFalse<0>, MyTrue<1>,
176 std::is_base_of<MyTrue<1>, internal::disjunction<MyFalse<0>, MyTrue<1>,
182 std::is_base_of<MyFalse<2>, internal::disjunction<MyFalse<0>, MyFalse<1>,
187TEST(TypeTraits, IsInvocableRV) {
189 int operator()()
const {
return 0; }
190 void operator()(
int) & {}
191 std::string operator()(
int) && {
return ""; };
197 static_assert(internal::is_callable_r<int, C>::value,
"");
198 static_assert(internal::is_callable_r<int, C&>::value,
"");
199 static_assert(internal::is_callable_r<int, const C>::value,
"");
200 static_assert(internal::is_callable_r<int, const C&>::value,
"");
202 static_assert(internal::is_callable_r<void, C>::value,
"");
203 static_assert(internal::is_callable_r<const volatile void, C>::value,
"");
204 static_assert(internal::is_callable_r<char, C>::value,
"");
209 static_assert(internal::is_callable_r<void, C&, int>::value,
"");
210 static_assert(!internal::is_callable_r<int, C&, int>::value,
"");
211 static_assert(!internal::is_callable_r<std::string, C&, int>::value,
"");
212 static_assert(!internal::is_callable_r<void, const C&, int>::value,
"");
214 static_assert(internal::is_callable_r<std::string, C, int>::value,
"");
215 static_assert(internal::is_callable_r<void, C, int>::value,
"");
216 static_assert(!internal::is_callable_r<int, C, int>::value,
"");
219 static_assert(!internal::is_callable_r<void, C, std::string>::value,
"");
220 static_assert(!internal::is_callable_r<void, C, int, int>::value,
"");
225#if defined(GTEST_INTERNAL_CPLUSPLUS_LANG) && \
226 GTEST_INTERNAL_CPLUSPLUS_LANG >= 201703L
229 NonMoveable() =
default;
230 NonMoveable(NonMoveable&&) =
delete;
233 static_assert(!std::is_move_constructible_v<NonMoveable>);
236 NonMoveable operator()() {
return NonMoveable(); }
239 static_assert(internal::is_callable_r<NonMoveable, Callable>::value);
240 static_assert(internal::is_callable_r<void, Callable>::value);
242 internal::is_callable_r<const volatile void, Callable>::value);
244 static_assert(!internal::is_callable_r<int, Callable>::value);
245 static_assert(!internal::is_callable_r<NonMoveable, Callable, int>::value);
251 static_assert(!internal::is_callable_r<void, int>::value,
"");
257TEST(BuiltInDefaultValueTest, IsNullForPointerTypes) {
258 EXPECT_TRUE(BuiltInDefaultValue<int*>::Get() ==
nullptr);
259 EXPECT_TRUE(BuiltInDefaultValue<const char*>::Get() ==
nullptr);
260 EXPECT_TRUE(BuiltInDefaultValue<void*>::Get() ==
nullptr);
264TEST(BuiltInDefaultValueTest, ExistsForPointerTypes) {
266 EXPECT_TRUE(BuiltInDefaultValue<const char*>::Exists());
272TEST(BuiltInDefaultValueTest, IsZeroForNumericTypes) {
273 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned char>::Get());
274 EXPECT_EQ(0, BuiltInDefaultValue<signed char>::Get());
275 EXPECT_EQ(0, BuiltInDefaultValue<char>::Get());
276#if GMOCK_WCHAR_T_IS_NATIVE_
277#if !defined(__WCHAR_UNSIGNED__)
278 EXPECT_EQ(0, BuiltInDefaultValue<wchar_t>::Get());
280 EXPECT_EQ(0U, BuiltInDefaultValue<wchar_t>::Get());
283 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned short>::Get());
284 EXPECT_EQ(0, BuiltInDefaultValue<signed short>::Get());
285 EXPECT_EQ(0, BuiltInDefaultValue<short>::Get());
286 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned int>::Get());
287 EXPECT_EQ(0, BuiltInDefaultValue<signed int>::Get());
288 EXPECT_EQ(0, BuiltInDefaultValue<int>::Get());
289 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned long>::Get());
290 EXPECT_EQ(0, BuiltInDefaultValue<signed long>::Get());
291 EXPECT_EQ(0, BuiltInDefaultValue<long>::Get());
292 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned long long>::Get());
293 EXPECT_EQ(0, BuiltInDefaultValue<signed long long>::Get());
294 EXPECT_EQ(0, BuiltInDefaultValue<long long>::Get());
295 EXPECT_EQ(0, BuiltInDefaultValue<float>::Get());
296 EXPECT_EQ(0, BuiltInDefaultValue<double>::Get());
301TEST(BuiltInDefaultValueTest, ExistsForNumericTypes) {
302 EXPECT_TRUE(BuiltInDefaultValue<unsigned char>::Exists());
303 EXPECT_TRUE(BuiltInDefaultValue<signed char>::Exists());
305#if GMOCK_WCHAR_T_IS_NATIVE_
306 EXPECT_TRUE(BuiltInDefaultValue<wchar_t>::Exists());
308 EXPECT_TRUE(BuiltInDefaultValue<unsigned short>::Exists());
309 EXPECT_TRUE(BuiltInDefaultValue<signed short>::Exists());
311 EXPECT_TRUE(BuiltInDefaultValue<unsigned int>::Exists());
312 EXPECT_TRUE(BuiltInDefaultValue<signed int>::Exists());
314 EXPECT_TRUE(BuiltInDefaultValue<unsigned long>::Exists());
315 EXPECT_TRUE(BuiltInDefaultValue<signed long>::Exists());
317 EXPECT_TRUE(BuiltInDefaultValue<unsigned long long>::Exists());
318 EXPECT_TRUE(BuiltInDefaultValue<signed long long>::Exists());
319 EXPECT_TRUE(BuiltInDefaultValue<long long>::Exists());
321 EXPECT_TRUE(BuiltInDefaultValue<double>::Exists());
325TEST(BuiltInDefaultValueTest, IsFalseForBool) {
330TEST(BuiltInDefaultValueTest, BoolExists) {
336TEST(BuiltInDefaultValueTest, IsEmptyStringForString) {
337 EXPECT_EQ(
"", BuiltInDefaultValue<::std::string>::Get());
342TEST(BuiltInDefaultValueTest, ExistsForString) {
343 EXPECT_TRUE(BuiltInDefaultValue<::std::string>::Exists());
348TEST(BuiltInDefaultValueTest, WorksForConstTypes) {
349 EXPECT_EQ(
"", BuiltInDefaultValue<const std::string>::Get());
350 EXPECT_EQ(0, BuiltInDefaultValue<const int>::Get());
351 EXPECT_TRUE(BuiltInDefaultValue<char* const>::Get() ==
nullptr);
356class MyDefaultConstructible {
358 MyDefaultConstructible() : value_(42) {}
360 int value()
const {
return value_; }
367class MyNonDefaultConstructible {
370 explicit MyNonDefaultConstructible(
int a_value) : value_(a_value) {}
372 int value()
const {
return value_; }
378TEST(BuiltInDefaultValueTest, ExistsForDefaultConstructibleType) {
379 EXPECT_TRUE(BuiltInDefaultValue<MyDefaultConstructible>::Exists());
382TEST(BuiltInDefaultValueTest, IsDefaultConstructedForDefaultConstructibleType) {
383 EXPECT_EQ(42, BuiltInDefaultValue<MyDefaultConstructible>::Get().
value());
386TEST(BuiltInDefaultValueTest, DoesNotExistForNonDefaultConstructibleType) {
387 EXPECT_FALSE(BuiltInDefaultValue<MyNonDefaultConstructible>::Exists());
391TEST(BuiltInDefaultValueDeathTest, IsUndefinedForReferences) {
396TEST(BuiltInDefaultValueDeathTest, IsUndefinedForNonDefaultConstructibleType) {
398 { BuiltInDefaultValue<MyNonDefaultConstructible>::Get(); },
"");
402TEST(DefaultValueTest, IsInitiallyUnset) {
409TEST(DefaultValueTest, CanBeSetAndUnset) {
415 MyNonDefaultConstructible(42));
436TEST(DefaultValueDeathTest, GetReturnsBuiltInDefaultValueWhenUnset) {
448TEST(DefaultValueTest, GetWorksForMoveOnlyIfSet) {
449 EXPECT_TRUE(DefaultValue<std::unique_ptr<int>>::Exists());
450 EXPECT_TRUE(DefaultValue<std::unique_ptr<int>>::Get() ==
nullptr);
451 DefaultValue<std::unique_ptr<int>>::SetFactory(
452 [] {
return std::make_unique<int>(42); });
453 EXPECT_TRUE(DefaultValue<std::unique_ptr<int>>::Exists());
454 std::unique_ptr<int>
i = DefaultValue<std::unique_ptr<int>>::Get();
464TEST(DefaultValueOfReferenceTest, IsInitiallyUnset) {
471TEST(DefaultValueOfReferenceTest, IsInitiallyNotExisting) {
478TEST(DefaultValueOfReferenceTest, CanBeSetAndUnset) {
481 MyNonDefaultConstructible
x(42);
503TEST(DefaultValueOfReferenceDeathTest, GetReturnsBuiltInDefaultValueWhenUnset) {
515typedef int MyGlobalFunction(
bool,
int);
517class MyActionImpl :
public ActionInterface<MyGlobalFunction> {
519 int Perform(
const std::tuple<bool, int>& args)
override {
520 return std::get<0>(args) ? std::get<1>(args) : 0;
524TEST(ActionInterfaceTest, CanBeImplementedByDefiningPerform) {
525 MyActionImpl my_action_impl;
526 (void)my_action_impl;
530 Action<MyGlobalFunction> action =
MakeAction(
new MyActionImpl);
537 EXPECT_EQ(5, action.Perform(std::make_tuple(
true, 5)));
542TEST(ActionTest, CanBeConstructedFromActionInterface) {
543 Action<MyGlobalFunction> action(
new MyActionImpl);
547TEST(ActionTest, DelegatesWorkToActionInterface) {
548 const Action<MyGlobalFunction> action(
new MyActionImpl);
550 EXPECT_EQ(5, action.Perform(std::make_tuple(
true, 5)));
551 EXPECT_EQ(0, action.Perform(std::make_tuple(
false, 1)));
555TEST(ActionTest, IsCopyable) {
556 Action<MyGlobalFunction> a1(
new MyActionImpl);
557 Action<MyGlobalFunction> a2(a1);
560 EXPECT_EQ(5, a1.Perform(std::make_tuple(
true, 5)));
561 EXPECT_EQ(0, a1.Perform(std::make_tuple(
false, 1)));
564 EXPECT_EQ(5, a2.Perform(std::make_tuple(
true, 5)));
565 EXPECT_EQ(0, a2.Perform(std::make_tuple(
false, 1)));
570 EXPECT_EQ(5, a1.Perform(std::make_tuple(
true, 5)));
571 EXPECT_EQ(0, a1.Perform(std::make_tuple(
false, 1)));
574 EXPECT_EQ(5, a2.Perform(std::make_tuple(
true, 5)));
575 EXPECT_EQ(0, a2.Perform(std::make_tuple(
false, 1)));
581class IsNotZero :
public ActionInterface<bool(int)> {
583 bool Perform(
const std::tuple<int>& arg)
override {
584 return std::get<0>(arg) != 0;
588TEST(ActionTest, CanBeConvertedToOtherActionType) {
589 const Action<bool(
int)> a1(
new IsNotZero);
590 const Action<int(
char)> a2 = Action<int(char)>(a1);
591 EXPECT_EQ(1, a2.Perform(std::make_tuple(
'a')));
592 EXPECT_EQ(0, a2.Perform(std::make_tuple(
'\0')));
599class ReturnSecondArgumentAction {
604 template <
typename Result,
typename ArgumentTuple>
605 Result Perform(
const ArgumentTuple& args) {
606 return std::get<1>(args);
612class ReturnZeroFromNullaryFunctionAction {
621 template <
typename Result>
622 Result Perform(
const std::tuple<>&)
const {
630PolymorphicAction<ReturnSecondArgumentAction> ReturnSecondArgument() {
634PolymorphicAction<ReturnZeroFromNullaryFunctionAction>
635ReturnZeroFromNullaryFunction() {
641TEST(MakePolymorphicActionTest, ConstructsActionFromImpl) {
642 Action<int(
bool,
int,
double)> a1 = ReturnSecondArgument();
643 EXPECT_EQ(5, a1.Perform(std::make_tuple(
false, 5, 2.0)));
648TEST(MakePolymorphicActionTest, WorksWhenPerformHasOneTemplateParameter) {
649 Action<int()> a1 = ReturnZeroFromNullaryFunction();
650 EXPECT_EQ(0, a1.Perform(std::make_tuple()));
652 Action<
void*()> a2 = ReturnZeroFromNullaryFunction();
653 EXPECT_TRUE(a2.Perform(std::make_tuple()) ==
nullptr);
658TEST(ReturnTest, WorksForVoid) {
659 const Action<void(
int)> ret =
Return();
660 return ret.Perform(std::make_tuple(1));
664TEST(ReturnTest, ReturnsGivenValue) {
665 Action<int()> ret =
Return(1);
666 EXPECT_EQ(1, ret.Perform(std::make_tuple()));
669 EXPECT_EQ(-5, ret.Perform(std::make_tuple()));
673TEST(ReturnTest, AcceptsStringLiteral) {
674 Action<
const char*()> a1 =
Return(
"Hello");
677 Action<std::string()> a2 =
Return(
"world");
678 EXPECT_EQ(
"world", a2.Perform(std::make_tuple()));
684TEST(ReturnTest, SupportsReferenceLikeReturnType) {
687 const std::vector<int>* v;
688 Result(
const std::vector<int>& vec) : v(&vec) {}
699 MockFunction<Result()> mock;
701 .WillOnce(
Return(std::vector<int>{17, 19, 23}))
702 .WillRepeatedly(
Return(std::vector<int>{29, 31, 37}));
705 Field(&Result::v, Pointee(ElementsAre(17, 19, 23))));
708 Field(&Result::v, Pointee(ElementsAre(29, 31, 37))));
711TEST(ReturnTest, PrefersConversionOperator) {
721 explicit Out(
const int val) :
x(val) {}
722 explicit Out(
const In&) :
x(0) {}
726 operator Out()
const {
return Out{19}; }
732 EXPECT_THAT([]() -> Out {
return In(); }(), Field(&Out::x, 19));
737 MockFunction<Out()> mock;
739 EXPECT_THAT(mock.AsStdFunction()(), Field(&Out::x, 19));
746TEST(ReturnTest, ConversionRequiresConstLvalueReference) {
748 using U = std::reference_wrapper<const int>;
750 static_assert(std::is_convertible<const R&, U>::value,
"");
751 static_assert(!std::is_convertible<R, U>::value,
"");
753 MockFunction<U()> mock;
764TEST(ReturnTest, ConversionRequiresMutableLvalueReference) {
774 static_assert(std::is_convertible<std::string&, S>::value,
"");
776 static_assert(!std::is_convertible<std::string&&, S>::value,
"");
778 static_assert(!std::is_convertible<const std::string&, S>::value,
"");
785 using RA =
decltype(
Return(std::string()));
787 static_assert(!std::is_convertible<RA, Action<
S()>>
::value,
"");
789 static_assert(!std::is_convertible<RA, OnceAction<
S()>>
::value,
"");
793TEST(ReturnTest, MoveOnlyResultType) {
796 MockFunction<std::unique_ptr<int>()> mock;
799 .WillOnce(
Return(std::unique_ptr<int>(
new int(17))));
806 static_assert(!std::is_convertible<decltype(Return(std::unique_ptr<int>())),
807 Action<std::unique_ptr<int>()>>
::value,
817struct Derived :
public Base {
818 bool operator==(
const Derived&) {
return true; }
821TEST(ReturnTest, IsCovariant) {
825 EXPECT_EQ(&base, ret.Perform(std::make_tuple()));
828 EXPECT_EQ(&derived, ret.Perform(std::make_tuple()));
837 explicit FromType(
bool* is_converted) : converted_(is_converted) {}
838 bool* converted()
const {
return converted_; }
841 bool*
const converted_;
847 ToType(
const FromType&
x) { *
x.converted() =
true; }
850TEST(ReturnTest, ConvertsArgumentWhenConverted) {
851 bool converted =
false;
852 FromType
x(&converted);
853 Action<ToType()> action(
Return(
x));
854 EXPECT_TRUE(converted) <<
"Return must convert its argument in its own "
855 <<
"conversion operator.";
857 action.Perform(std::tuple<>());
858 EXPECT_FALSE(converted) <<
"Action must NOT convert its argument "
859 <<
"when performed.";
863TEST(ReturnNullTest, WorksInPointerReturningFunction) {
865 EXPECT_TRUE(a1.Perform(std::make_tuple()) ==
nullptr);
867 const Action<
const char*(bool)> a2 =
ReturnNull();
868 EXPECT_TRUE(a2.Perform(std::make_tuple(
true)) ==
nullptr);
873TEST(ReturnNullTest, WorksInSmartPointerReturningFunction) {
874 const Action<std::unique_ptr<const int>()> a1 =
ReturnNull();
875 EXPECT_TRUE(a1.Perform(std::make_tuple()) ==
nullptr);
877 const Action<std::shared_ptr<int>(std::string)> a2 =
ReturnNull();
878 EXPECT_TRUE(a2.Perform(std::make_tuple(
"foo")) ==
nullptr);
882TEST(ReturnRefTest, WorksForReference) {
884 const Action<
const int&(bool)> ret =
ReturnRef(n);
886 EXPECT_EQ(&n, &ret.Perform(std::make_tuple(
true)));
890TEST(ReturnRefTest, IsCovariant) {
894 EXPECT_EQ(&base, &a.Perform(std::make_tuple()));
897 EXPECT_EQ(&derived, &a.Perform(std::make_tuple()));
900template <typename T, typename = decltype(ReturnRef(std::declval<T&&>()))>
901bool CanCallReturnRef(
T&&) {
904bool CanCallReturnRef(
Unused) {
return false; }
907TEST(ReturnRefTest, WorksForNonTemporary) {
908 int scalar_value = 123;
911 std::string non_scalar_value(
"ABC");
914 const int const_scalar_value{321};
917 const std::string const_non_scalar_value(
"CBA");
918 EXPECT_TRUE(CanCallReturnRef(const_non_scalar_value));
922TEST(ReturnRefTest, DoesNotWorkForTemporary) {
923 auto scalar_value = []() ->
int {
return 123; };
926 auto non_scalar_value = []() -> std::string {
return "ABC"; };
931 EXPECT_FALSE(CanCallReturnRef(
static_cast<const int>(321)));
933 auto const_non_scalar_value = []() ->
const std::string {
return "CBA"; };
934 EXPECT_FALSE(CanCallReturnRef(const_non_scalar_value()));
938TEST(ReturnRefOfCopyTest, WorksForReference) {
942 EXPECT_NE(&n, &ret.Perform(std::make_tuple()));
943 EXPECT_EQ(42, ret.Perform(std::make_tuple()));
946 EXPECT_NE(&n, &ret.Perform(std::make_tuple()));
947 EXPECT_EQ(42, ret.Perform(std::make_tuple()));
951TEST(ReturnRefOfCopyTest, IsCovariant) {
955 EXPECT_NE(&base, &a.Perform(std::make_tuple()));
958 EXPECT_NE(&derived, &a.Perform(std::make_tuple()));
962TEST(ReturnRoundRobinTest, WorksForInitList) {
965 EXPECT_EQ(1, ret.Perform(std::make_tuple()));
966 EXPECT_EQ(2, ret.Perform(std::make_tuple()));
967 EXPECT_EQ(3, ret.Perform(std::make_tuple()));
968 EXPECT_EQ(1, ret.Perform(std::make_tuple()));
969 EXPECT_EQ(2, ret.Perform(std::make_tuple()));
970 EXPECT_EQ(3, ret.Perform(std::make_tuple()));
974TEST(ReturnRoundRobinTest, WorksForVector) {
975 std::vector<double> v = {4.4, 5.5, 6.6};
978 EXPECT_EQ(4.4, ret.Perform(std::make_tuple()));
979 EXPECT_EQ(5.5, ret.Perform(std::make_tuple()));
980 EXPECT_EQ(6.6, ret.Perform(std::make_tuple()));
981 EXPECT_EQ(4.4, ret.Perform(std::make_tuple()));
982 EXPECT_EQ(5.5, ret.Perform(std::make_tuple()));
983 EXPECT_EQ(6.6, ret.Perform(std::make_tuple()));
990 MockClass() =
default;
996 MOCK_METHOD0(MakeVectorUnique, std::vector<std::unique_ptr<int>>());
999 int(
const std::unique_ptr<int>&, std::unique_ptr<int>));
1002 MockClass(
const MockClass&) =
delete;
1003 MockClass& operator=(
const MockClass&) =
delete;
1008TEST(DoDefaultTest, ReturnsBuiltInDefaultValueByDefault) {
1016TEST(DoDefaultDeathTest, DiesForUnknowType) {
1019#if GTEST_HAS_EXCEPTIONS
1029void VoidFunc(
bool ) {}
1031TEST(DoDefaultDeathTest, DiesIfUsedInCompositeAction) {
1045TEST(DoDefaultTest, ReturnsUserSpecifiedPerTypeDefaultValueWhenThereIsOne) {
1054TEST(DoDefaultTest, DoesWhatOnCallSpecifies) {
1062TEST(DoDefaultTest, CannotBeUsedInOnCall) {
1068 "DoDefault() cannot be used in ON_CALL()");
1073TEST(SetArgPointeeTest, SetsTheNthPointee) {
1079 a.Perform(std::make_tuple(
true, &n, &
ch));
1086 a.Perform(std::make_tuple(
true, &n, &
ch));
1092TEST(SetArgPointeeTest, AcceptsStringLiteral) {
1093 typedef void MyFunction(std::string*,
const char**);
1096 const char* ptr =
nullptr;
1097 a.Perform(std::make_tuple(&str, &ptr));
1103 a.Perform(std::make_tuple(&str, &ptr));
1108TEST(SetArgPointeeTest, AcceptsWideStringLiteral) {
1111 const wchar_t* ptr =
nullptr;
1112 a.Perform(std::make_tuple(&ptr));
1115#if GTEST_HAS_STD_WSTRING
1117 typedef void MyStringFunction(std::wstring*);
1119 std::wstring str = L
"";
1120 a2.Perform(std::make_tuple(&str));
1127TEST(SetArgPointeeTest, AcceptsCharPointer) {
1128 typedef void MyFunction(
bool, std::string*,
const char**);
1129 const char*
const hi =
"hi";
1132 const char* ptr =
nullptr;
1133 a.Perform(std::make_tuple(
true, &str, &ptr));
1137 char world_array[] =
"world";
1138 char*
const world = world_array;
1141 a.Perform(std::make_tuple(
true, &str, &ptr));
1146TEST(SetArgPointeeTest, AcceptsWideCharPointer) {
1147 typedef void MyFunction(
bool,
const wchar_t**);
1148 const wchar_t*
const hi = L
"hi";
1150 const wchar_t* ptr =
nullptr;
1151 a.Perform(std::make_tuple(
true, &ptr));
1154#if GTEST_HAS_STD_WSTRING
1156 typedef void MyStringFunction(
bool, std::wstring*);
1157 wchar_t world_array[] = L
"world";
1158 wchar_t*
const world = world_array;
1161 a2.Perform(std::make_tuple(
true, &str));
1168TEST(SetArgumentPointeeTest, SetsTheNthPointee) {
1174 a.Perform(std::make_tuple(
true, &n, &
ch));
1181 a.Perform(std::make_tuple(
true, &n, &
ch));
1189class NullaryFunctor {
1191 int operator()() {
return 2; }
1195void VoidNullary() {
g_done =
true; }
1197class VoidNullaryFunctor {
1199 void operator()() {
g_done =
true; }
1202short Short(
short n) {
return n; }
1205const char*
CharPtr(
const char* s) {
return s; }
1207bool Unary(
int x) {
return x < 0; }
1209const char*
Binary(
const char* input,
short n) {
return input + n; }
1211void VoidBinary(
int,
char) {
g_done =
true; }
1215int SumOf4(
int a,
int b,
int c,
int d) {
return a + b + c + d; }
1219 Foo() : value_(123) {}
1221 int Nullary()
const {
return value_; }
1228TEST(InvokeWithoutArgsTest, Function) {
1231 EXPECT_EQ(1, a.Perform(std::make_tuple(2)));
1235 EXPECT_EQ(1, a2.Perform(std::make_tuple(2, 3.5)));
1240 a3.Perform(std::make_tuple(1));
1245TEST(InvokeWithoutArgsTest, Functor) {
1248 EXPECT_EQ(2, a.Perform(std::make_tuple()));
1251 Action<int(
int,
double,
char)> a2 =
1253 EXPECT_EQ(2, a2.Perform(std::make_tuple(3, 3.5,
'a')));
1258 a3.Perform(std::make_tuple());
1265 Action<int(
bool,
char)> a =
1267 EXPECT_EQ(123, a.Perform(std::make_tuple(
true,
'a')));
1271TEST(IgnoreResultTest, PolymorphicAction) {
1273 a.Perform(std::make_tuple(1));
1283TEST(IgnoreResultTest, MonomorphicAction) {
1286 a.Perform(std::make_tuple());
1292MyNonDefaultConstructible ReturnMyNonDefaultConstructible(
double ) {
1294 return MyNonDefaultConstructible(42);
1297TEST(IgnoreResultTest, ActionReturningClass) {
1299 Action<void(
int)> a =
1301 a.Perform(std::make_tuple(2));
1305TEST(AssignTest, Int) {
1307 Action<void(
int)> a =
Assign(&
x, 5);
1308 a.Perform(std::make_tuple(0));
1312TEST(AssignTest, String) {
1314 Action<void(
void)> a =
Assign(&
x,
"Hello, world");
1315 a.Perform(std::make_tuple());
1319TEST(AssignTest, CompatibleTypes) {
1321 Action<void(
int)> a =
Assign(&
x, 5);
1322 a.Perform(std::make_tuple(0));
1327TEST(DoAll, SupportsRefQualifiedActions) {
1328 struct InitialAction {
1329 void operator()(
const int arg) && {
EXPECT_EQ(17, arg); }
1332 struct FinalAction {
1333 int operator()() && {
return 19; }
1336 MockFunction<int(
int)> mock;
1338 EXPECT_EQ(19, mock.AsStdFunction()(17));
1345TEST(DoAll, ProvidesLvalueReferencesToInitialActions) {
1351 struct InitialAction {
1352 void operator()(Obj&)
const {
FAIL() <<
"Unexpected call"; }
1353 void operator()(
const Obj&)
const {}
1354 void operator()(Obj&&)
const {
FAIL() <<
"Unexpected call"; }
1355 void operator()(
const Obj&&)
const {
FAIL() <<
"Unexpected call"; }
1358 MockFunction<void(Obj)> mock;
1360 .WillOnce(
DoAll(InitialAction{}, InitialAction{}, [](Obj&&) {}))
1361 .WillRepeatedly(
DoAll(InitialAction{}, InitialAction{}, [](Obj&&) {}));
1363 mock.AsStdFunction()(Obj{});
1364 mock.AsStdFunction()(Obj{});
1370 struct InitialAction {
1371 void operator()(Obj&)
const {
FAIL() <<
"Unexpected call"; }
1372 void operator()(
const Obj&)
const {}
1373 void operator()(Obj&&)
const {
FAIL() <<
"Unexpected call"; }
1374 void operator()(
const Obj&&)
const {
FAIL() <<
"Unexpected call"; }
1377 MockFunction<void(
const Obj&)> mock;
1379 .WillOnce(
DoAll(InitialAction{}, InitialAction{}, [](
const Obj&) {}))
1381 DoAll(InitialAction{}, InitialAction{}, [](
const Obj&) {}));
1383 mock.AsStdFunction()(Obj{});
1384 mock.AsStdFunction()(Obj{});
1390 struct InitialAction {
1391 void operator()(Obj&)
const {}
1392 void operator()(Obj&&)
const {
FAIL() <<
"Unexpected call"; }
1395 MockFunction<void(Obj&)> mock;
1397 .WillOnce(
DoAll(InitialAction{}, InitialAction{}, [](Obj&) {}))
1398 .WillRepeatedly(
DoAll(InitialAction{}, InitialAction{}, [](Obj&) {}));
1401 mock.AsStdFunction()(obj);
1402 mock.AsStdFunction()(obj);
1409 struct InitialAction {
1410 void operator()(Obj&)
const {}
1411 void operator()(Obj&&)
const {
FAIL() <<
"Unexpected call"; }
1414 MockFunction<void(Obj&&)> mock;
1416 .WillOnce(
DoAll(InitialAction{}, InitialAction{}, [](Obj&&) {}))
1417 .WillRepeatedly(
DoAll(InitialAction{}, InitialAction{}, [](Obj&&) {}));
1419 mock.AsStdFunction()(Obj{});
1420 mock.AsStdFunction()(Obj{});
1425 struct InitialAction {
1426 void operator()(Obj&) && {}
1429 MockFunction<void(Obj&)> mock;
1431 .WillOnce(
DoAll(InitialAction{}, InitialAction{}, [](Obj&) {}));
1434 mock.AsStdFunction()(obj);
1438 struct InitialAction {
1439 void operator()(Obj&) && {}
1442 MockFunction<void(Obj&&)> mock;
1444 .WillOnce(
DoAll(InitialAction{}, InitialAction{}, [](Obj&&) {}));
1446 mock.AsStdFunction()(Obj{});
1452TEST(DoAll, SupportsTypeErasedActions) {
1454 const Action<void()> initial_action = [] {};
1455 const Action<int()> final_action = [] {
return 17; };
1457 MockFunction<int()> mock;
1459 .WillOnce(
DoAll(initial_action, initial_action, final_action))
1460 .WillRepeatedly(
DoAll(initial_action, initial_action, final_action));
1466 struct FinalAction {
1467 FinalAction() =
default;
1468 FinalAction(FinalAction&&) =
default;
1470 int operator()() && {
return 17; }
1474 .WillOnce(
DoAll(initial_action, initial_action, FinalAction{}));
1481TEST(WithArgsTest, OneArg) {
1488TEST(WithArgsTest, TwoArgs) {
1489 Action<
const char*(
const char* s,
double x,
short n)> a =
1490 WithArgs<0, 2>(
Invoke(Binary));
1491 const char s[] =
"Hello";
1496 std::string operator()()
const {
return {}; }
1497 template <
typename... I>
1498 std::string operator()(
const char* a, I...
i)
const {
1499 return a + ConcatAll()(
i...);
1504TEST(WithArgsTest, TenArgs) {
1505 Action<std::string(
const char*,
const char*,
const char*,
const char*)> a =
1513class SubtractAction :
public ActionInterface<int(int, int)> {
1515 int Perform(
const std::tuple<int, int>& args)
override {
1516 return std::get<0>(args) - std::get<1>(args);
1520TEST(WithArgsTest, NonInvokeAction) {
1521 Action<int(
const std::string&,
int,
int)> a =
1523 std::tuple<std::string, int, int> dummy =
1524 std::make_tuple(std::string(
"hi"), 2, 10);
1529TEST(WithArgsTest, Identity) {
1530 Action<int(
int x,
char y,
short z)> a =
1536TEST(WithArgsTest, RepeatedArguments) {
1537 Action<int(
bool,
int m,
int n)> a =
1539 EXPECT_EQ(4, a.Perform(std::make_tuple(
false, 1, 10)));
1543TEST(WithArgsTest, ReversedArgumentOrder) {
1544 Action<
const char*(
short n,
const char* input)> a =
1545 WithArgs<1, 0>(
Invoke(Binary));
1546 const char s[] =
"Hello";
1551TEST(WithArgsTest, ArgsOfCompatibleTypes) {
1552 Action<long(
short x,
char y,
double z,
char c)> a =
1555 a.Perform(std::make_tuple(
Short(100),
Char(20), 5.6,
Char(3))));
1559TEST(WithArgsTest, VoidAction) {
1562 a.Perform(std::make_tuple(1.5,
'a', 3));
1566TEST(WithArgsTest, ReturnReference) {
1567 Action<
int&(
int&,
void*)> aa = WithArgs<0>([](
int& a) ->
int& {
return a; });
1569 const int& res = aa.Perform(std::forward_as_tuple(
i,
nullptr));
1573TEST(WithArgsTest, InnerActionWithConversion) {
1574 Action<Derived*()> inner = [] {
return nullptr; };
1576 MockFunction<
Base*(double)> mock;
1581 EXPECT_EQ(
nullptr, mock.AsStdFunction()(1.1));
1582 EXPECT_EQ(
nullptr, mock.AsStdFunction()(1.1));
1587TEST(WithArgsTest, RefQualifiedInnerAction) {
1589 int operator()(
const int arg) && {
1595 MockFunction<int(
int,
int)> mock;
1596 EXPECT_CALL(mock, Call).WillOnce(WithArg<1>(SomeAction{}));
1597 EXPECT_EQ(19, mock.AsStdFunction()(0, 17));
1600#ifndef GTEST_OS_WINDOWS_MOBILE
1604 void SetUp()
override { errno = 0; }
1605 void TearDown()
override { errno = 0; }
1608TEST_F(SetErrnoAndReturnTest, Int) {
1610 EXPECT_EQ(-5, a.Perform(std::make_tuple()));
1614TEST_F(SetErrnoAndReturnTest, Ptr) {
1621TEST_F(SetErrnoAndReturnTest, CompatibleTypes) {
1632TEST(ByRefTest, IsCopyable) {
1633 const std::string s1 =
"Hi";
1634 const std::string s2 =
"Hello";
1636 auto ref_wrapper =
ByRef(s1);
1637 const std::string& r1 = ref_wrapper;
1641 ref_wrapper =
ByRef(s2);
1642 const std::string& r2 = ref_wrapper;
1645 auto ref_wrapper1 =
ByRef(s1);
1647 ref_wrapper = ref_wrapper1;
1648 const std::string& r3 = ref_wrapper;
1653TEST(ByRefTest, ConstValue) {
1657 const int& const_ref =
ByRef(n);
1662TEST(ByRefTest, NonConstValue) {
1666 int& ref =
ByRef(n);
1670 const int& const_ref =
ByRef(n);
1675TEST(ByRefTest, ExplicitType) {
1704TEST(ByRefTest, PrintsCorrectly) {
1706 ::std::stringstream expected, actual;
1709 EXPECT_EQ(expected.str(), actual.str());
1712struct UnaryConstructorClass {
1713 explicit UnaryConstructorClass(
int v) :
value(v) {}
1718TEST(ReturnNewTest, Unary) {
1720 UnaryConstructorClass* c = a.Perform(std::make_tuple());
1725TEST(ReturnNewTest, UnaryWorksWhenMockMethodHasArgs) {
1726 Action<UnaryConstructorClass*(bool, int)> a =
1728 UnaryConstructorClass* c = a.Perform(std::make_tuple(
false, 5));
1733TEST(ReturnNewTest, UnaryWorksWhenMockMethodReturnsPointerToConst) {
1734 Action<
const UnaryConstructorClass*()> a =
1736 const UnaryConstructorClass* c = a.Perform(std::make_tuple());
1741class TenArgConstructorClass {
1743 TenArgConstructorClass(
int a1,
int a2,
int a3,
int a4,
int a5,
int a6,
int a7,
1744 int a8,
int a9,
int a10)
1745 : value_(a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10) {}
1750TEST(ReturnNewTest, ConstructorThatTakes10Arguments) {
1752 1000000000, 200000000, 30000000, 4000000, 500000, 60000, 7000, 800, 90,
1754 TenArgConstructorClass* c = a.Perform(std::make_tuple());
1759std::unique_ptr<int> UniquePtrSource() {
return std::make_unique<int>(19); }
1761std::vector<std::unique_ptr<int>> VectorUniquePtrSource() {
1762 std::vector<std::unique_ptr<int>> out;
1763 out.emplace_back(
new int(7));
1767TEST(MockMethodTest, CanReturnMoveOnlyValue_Return) {
1769 std::unique_ptr<int>
i(
new int(19));
1773 Derived* d =
new Derived;
1775 .WillOnce(
Return(
ByMove(std::unique_ptr<Derived>(d))));
1777 std::unique_ptr<int> result1 = mock.MakeUnique();
1780 std::vector<std::unique_ptr<int>> vresult = mock.MakeVectorUnique();
1785 std::unique_ptr<Base> result2 = mock.MakeUniqueBase();
1789TEST(MockMethodTest, CanReturnMoveOnlyValue_DoAllReturn) {
1790 testing::MockFunction<void()> mock_function;
1792 std::unique_ptr<int>
i(
new int(19));
1796 &testing::MockFunction<
void()>::Call),
1799 std::unique_ptr<int> result1 = mock.MakeUnique();
1803TEST(MockMethodTest, CanReturnMoveOnlyValue_Invoke) {
1807 DefaultValue<std::unique_ptr<int>>::SetFactory(
1808 [] {
return std::make_unique<int>(42); });
1813 .WillRepeatedly(
Invoke(VectorUniquePtrSource));
1814 std::unique_ptr<int> result1 = mock.MakeUnique();
1816 std::unique_ptr<int> result2 = mock.MakeUnique();
1820 std::vector<std::unique_ptr<int>> vresult = mock.MakeVectorUnique();
1826TEST(MockMethodTest, CanTakeMoveOnlyValue) {
1828 auto make = [](
int i) {
return std::make_unique<int>(
i); };
1830 EXPECT_CALL(mock, TakeUnique(_)).WillRepeatedly([](std::unique_ptr<int>
i) {
1837 EXPECT_CALL(mock, TakeUnique(testing::Pointee(7)))
1839 .RetiresOnSaturation();
1842 .RetiresOnSaturation();
1845 EXPECT_EQ(-7, mock.TakeUnique(make(7)));
1851 auto lvalue = make(6);
1853 .WillOnce([](
const std::unique_ptr<int>&
i, std::unique_ptr<int> j) {
1856 EXPECT_EQ(42, mock.TakeUnique(lvalue, make(7)));
1859 std::unique_ptr<int> saved;
1860 EXPECT_CALL(mock, TakeUnique(_)).WillOnce([&saved](std::unique_ptr<int>
i) {
1861 saved = std::move(
i);
1864 EXPECT_EQ(0, mock.TakeUnique(make(42)));
1871TEST(MockMethodTest, ActionHasRvalueRefQualifiedCallOperator) {
1873 int operator()() && {
return 17; }
1878 MockFunction<int()> mock;
1886 MockFunction<int(
int)> mock;
1897TEST(MockMethodTest, ActionHasMultipleCallOperators) {
1899 int operator()() && {
return 17; }
1900 int operator()() const& {
return 19; }
1905 MockFunction<int()> mock;
1906 EXPECT_CALL(mock, Call).WillOnce(ReturnInt()).WillRepeatedly(ReturnInt());
1915 MockFunction<int(
int)> mock;
1916 EXPECT_CALL(mock, Call).WillOnce(ReturnInt()).WillRepeatedly(ReturnInt());
1926TEST(MockMethodTest, MoveOnlyAction) {
1930 Return17() =
default;
1931 Return17(Return17&&) =
default;
1933 Return17(
const Return17&) =
delete;
1934 Return17 operator=(
const Return17&) =
delete;
1936 int operator()() && {
return 17; }
1939 MockFunction<int()> mock;
1947 Return17() =
default;
1948 Return17(Return17&&) =
default;
1950 Return17(
const Return17&) =
delete;
1951 Return17 operator=(
const Return17&) =
delete;
1953 int operator()()
const {
return 17; }
1956 MockFunction<int()> mock;
1964TEST(MockMethodTest, ActionReturnsIgnoredValue) {
1966 int operator()()
const {
return 0; }
1969 MockFunction<void()> mock;
1970 EXPECT_CALL(mock, Call).WillOnce(ReturnInt()).WillRepeatedly(ReturnInt());
1972 mock.AsStdFunction()();
1973 mock.AsStdFunction()();
1978TEST(MockMethodTest, WillOnceCanAcceptLvalueReference) {
1979 MockFunction<int()> mock;
1981 const auto action = [] {
return 17; };
1989struct StaticAssertSingleArgument {
1990 template <
typename... Args>
1991 static constexpr bool CheckArgs() {
1992 static_assert(
sizeof...(Args) == 1,
"");
1996 template <
typename... Args,
bool = CheckArgs<Args...>()>
1997 int operator()(Args...)
const {
2006TEST(MockMethodTest, ActionSwallowsAllArguments) {
2007 MockFunction<int(
int)> mock;
2009 .WillOnce(StaticAssertSingleArgument{})
2010 .WillRepeatedly(StaticAssertSingleArgument{});
2016struct ActionWithTemplatedConversionOperators {
2017 template <
typename... Args>
2018 operator OnceAction<int(Args...)>() && {
2019 return [] {
return 17; };
2022 template <
typename... Args>
2023 operator Action<int(Args...)>()
const {
2024 return [] {
return 19; };
2031TEST(MockMethodTest, ActionHasTemplatedConversionOperators) {
2032 MockFunction<int()> mock;
2034 .WillOnce(ActionWithTemplatedConversionOperators{})
2035 .WillRepeatedly(ActionWithTemplatedConversionOperators{});
2043int Add(
int val,
int& ref,
int* ptr) {
2044 int result = val + ref + *ptr;
2050int Deref(std::unique_ptr<int> ptr) {
return *ptr; }
2053 template <
typename T>
2059std::unique_ptr<int> UniqueInt(
int i) {
return std::make_unique<int>(
i); }
2061TEST(FunctorActionTest, ActionFromFunction) {
2062 Action<int(
int,
int&,
int*)> a = &Add;
2063 int x = 1,
y = 2,
z = 3;
2064 EXPECT_EQ(6, a.Perform(std::forward_as_tuple(
x,
y, &
z)));
2068 Action<int(std::unique_ptr<int>)> a1 = &Deref;
2069 EXPECT_EQ(7, a1.Perform(std::make_tuple(UniqueInt(7))));
2072TEST(FunctorActionTest, ActionFromLambda) {
2073 Action<int(
bool,
int)> a1 = [](
bool b,
int i) {
return b ?
i : 0; };
2074 EXPECT_EQ(5, a1.Perform(std::make_tuple(
true, 5)));
2075 EXPECT_EQ(0, a1.Perform(std::make_tuple(
false, 5)));
2077 std::unique_ptr<int> saved;
2078 Action<void(std::unique_ptr<int>)> a2 = [&saved](std::unique_ptr<int>
p) {
2079 saved = std::move(
p);
2081 a2.Perform(std::make_tuple(UniqueInt(5)));
2085TEST(FunctorActionTest, PolymorphicFunctor) {
2086 Action<int(
int)> ai =
Double();
2087 EXPECT_EQ(2, ai.Perform(std::make_tuple(1)));
2088 Action<double(
double)> ad =
Double();
2089 EXPECT_EQ(3.0, ad.Perform(std::make_tuple(1.5)));
2092TEST(FunctorActionTest, TypeConversion) {
2094 const Action<bool(
int)> a1 = [](
int i) {
return i > 1; };
2095 const Action<int(
bool)> a2 = Action<int(bool)>(a1);
2096 EXPECT_EQ(1, a1.Perform(std::make_tuple(42)));
2097 EXPECT_EQ(0, a2.Perform(std::make_tuple(42)));
2100 const Action<bool(std::string)> s1 = [](std::string s) {
return !s.empty(); };
2101 const Action<int(
const char*)> s2 = Action<int(const char*)>(s1);
2102 EXPECT_EQ(0, s2.Perform(std::make_tuple(
"")));
2103 EXPECT_EQ(1, s2.Perform(std::make_tuple(
"hello")));
2106 const Action<bool(std::string)> x1 = [](
Unused) {
return 42; };
2107 const Action<bool(std::string)> x2 = [] {
return 42; };
2108 EXPECT_TRUE(x1.Perform(std::make_tuple(
"hello")));
2109 EXPECT_TRUE(x2.Perform(std::make_tuple(
"hello")));
2112 std::function<int()> f = [] {
return 7; };
2113 Action<int(
int)> d = f;
2115 EXPECT_EQ(7, d.Perform(std::make_tuple(1)));
2118 Action<void(int)>(
nullptr);
2121TEST(FunctorActionTest, UnusedArguments) {
2126 std::tuple<int, double, double> dummy = std::make_tuple(3, 7.3, 9.44);
2131TEST(MoveOnlyArgumentsTest, ReturningActions) {
2132 Action<int(std::unique_ptr<int>)> a =
Return(1);
2133 EXPECT_EQ(1, a.Perform(std::make_tuple(
nullptr)));
2136 EXPECT_EQ(7, a.Perform(std::make_tuple(
nullptr)));
2140 a2.Perform(std::make_tuple(
nullptr, &
x));
2144ACTION(ReturnArity) {
return std::tuple_size<args_type>::value; }
2146TEST(ActionMacro, LargeArity) {
2148 1,
testing::Action<
int(
int)>(ReturnArity()).Perform(std::make_tuple(0)));
2151 testing::Action<
int(
int,
int,
int,
int,
int,
int,
int,
int,
int,
int)>(
2153 .Perform(std::make_tuple(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)));
2156 testing::Action<
int(
int,
int,
int,
int,
int,
int,
int,
int,
int,
int,
int,
2157 int,
int,
int,
int,
int,
int,
int,
int,
int)>(
2159 .Perform(std::make_tuple(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
2160 14, 15, 16, 17, 18, 19)));
2166#if defined(_MSC_VER) && (_MSC_VER == 1900)
Definition gtest_unittest.cc:5120
Definition gmock-actions.h:717
static T Get()
Definition gmock-actions.h:606
static void Set(T x)
Definition gmock-actions.h:574
static void Clear()
Definition gmock-actions.h:589
static bool IsSet()
Definition gmock-actions.h:595
static bool Exists()
Definition gmock-actions.h:599
static void Print(const T &value, ::std::ostream *os)
Definition gtest-printers.h:799
TN::Subscripts S
Definition externs_nonTT.hpp:9
#define ACTION(name)
Definition gmock-actions.h:2238
int value
Definition gmock-actions_test.cc:1714
#define MOCK_METHOD0(m,...)
Definition gmock-function-mocker.h:356
#define MOCK_METHOD2(m,...)
Definition gmock-function-mocker.h:358
#define MOCK_METHOD1(m,...)
Definition gmock-function-mocker.h:357
int i
Definition gmock-matchers-comparisons_test.cc:603
Uncopyable z
Definition gmock-matchers-containers_test.cc:378
const double y
Definition gmock-matchers-containers_test.cc:377
int x
Definition gmock-matchers-containers_test.cc:376
const char * p
Definition gmock-matchers-containers_test.cc:379
char ch
Definition gmock-matchers-containers_test.cc:384
#define EXPECT_THAT(value, matcher)
#define EXPECT_CALL(obj, call)
Definition gmock-spec-builders.h:2145
#define ON_CALL(obj, call)
Definition gmock-spec-builders.h:2142
#define Method
Definition gmock-spec-builders_test.cc:142
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex)
Definition gtest-death-test.h:337
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
Definition gtest-port.h:360
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
Definition gtest-port.h:361
#define EXPECT_NONFATAL_FAILURE(statement, substr)
Definition gtest-spi.h:217
#define TEST_F(test_fixture, test_name)
Definition gtest.h:2208
#define FAIL()
Definition gtest.h:1754
#define EXPECT_EQ(val1, val2)
Definition gtest.h:1868
#define EXPECT_NE(val1, val2)
Definition gtest.h:1870
#define EXPECT_ANY_THROW(statement)
Definition gtest.h:1779
#define EXPECT_DOUBLE_EQ(val1, val2)
Definition gtest.h:1973
#define TEST(test_suite_name, test_name)
Definition gtest.h:2176
#define EXPECT_TRUE(condition)
Definition gtest.h:1807
#define EXPECT_STREQ(s1, s2)
Definition gtest.h:1937
#define EXPECT_FALSE(condition)
Definition gtest.h:1811
Definition googletest-output-test_.cc:471
constexpr auto operator==(GaussianDistribution< T > const &lhs, GaussianDistribution< T > const &rhs)
Definition gaussian.hpp:96
short Short(short n)
Definition gmock-more-actions_test.cc:69
const char * CharPtr(const char *s)
Definition gmock-more-actions_test.cc:239
int SumOf4(int a, int b, int c, int d)
Definition gmock-more-actions_test.cc:92
bool Unary(int x)
Definition gmock-more-actions_test.cc:77
bool g_done
Definition gmock-more-actions_test.cc:75
int Ternary(int x, char y, short z)
Definition gmock-more-actions_test.cc:90
int Nullary()
Definition gmock-more-actions_test.cc:73
const char * Binary(const char *input, short n)
Definition gmock-more-actions_test.cc:88
char Char(char ch)
Definition gmock-more-actions_test.cc:70
void MyFunction(int)
Definition googletest-printers-test.cc:740
void UniversalPrint(const T &value, ::std::ostream *os)
Definition gtest-printers.h:1108
FloatingPoint< double > Double
Definition gtest-internal.h:393
is_callable_r_impl< void, R, F, Args... > is_callable_r
Definition gmock-actions.h:367
Definition gmock-actions.h:151
internal::WithArgsAction< typename std::decay< InnerAction >::type > WithoutArgs(InnerAction &&action)
Definition gmock-actions.h:1815
internal::ReturnRoundRobinAction< T > ReturnRoundRobin(std::vector< T > vals)
Definition gmock-actions.h:1892
internal::IgnoreResultAction< A > IgnoreResult(const A &an_action)
Definition gmock-actions.h:1979
inline ::std::reference_wrapper< T > ByRef(T &l_value)
Definition gmock-actions.h:1994
internal::DoAllAction< typename std::decay< Action >::type... > DoAll(Action &&... action)
Definition gmock-actions.h:1783
internal::ByMoveWrapper< R > ByMove(R x)
Definition gmock-actions.h:1884
PolymorphicAction< Impl > MakePolymorphicAction(const Impl &impl)
Definition gmock-actions.h:905
PolymorphicAction< internal::ReturnVoidAction > Return()
Definition gmock-actions.h:1855
internal::WithArgsAction< typename std::decay< InnerAction >::type, k, ks... > WithArgs(InnerAction &&action)
Definition gmock-actions.h:1806
internal::IgnoredValue Unused
Definition gmock-actions.h:1777
PolymorphicAction< internal::AssignAction< T1, T2 > > Assign(T1 *ptr, T2 val)
Definition gmock-actions.h:1925
internal::SetArgumentPointeeAction< N, T > SetArgPointee(T value)
Definition gmock-actions.h:1913
PolymorphicAction< internal::SetErrnoAndReturnAction< T > > SetErrnoAndReturn(int errval, T result)
Definition gmock-actions.h:1933
Action< F > MakeAction(ActionInterface< F > *impl)
Definition gmock-actions.h:893
internal::InvokeWithoutArgsAction< typename std::decay< FunctionImpl >::type > InvokeWithoutArgs(FunctionImpl function_impl)
Definition gmock-actions.h:1963
internal::ReturnRefOfCopyAction< R > ReturnRefOfCopy(const R &x)
Definition gmock-actions.h:1873
internal::ReturnRefAction< R > ReturnRef(R &x)
Definition gmock-actions.h:1861
internal::SetArgumentPointeeAction< N, T > SetArgumentPointee(T value)
Definition gmock-actions.h:1919
internal::ReturnNewAction< T, typename std::decay< Params >::type... > ReturnNew(Params &&... params)
Definition gmock-actions.h:2002
internal::DoDefaultAction DoDefault()
Definition gmock-actions.h:1906
PolymorphicAction< internal::ReturnNullAction > ReturnNull()
Definition gmock-actions.h:1850
std::decay< FunctionImpl >::type Invoke(FunctionImpl &&function_impl)
Definition gmock-actions.h:1948