43#include "gtest/gtest.h"
44#include "gtest/gtest-spi.h"
73using testing::make_tuple;
75using testing::tuple_element;
77#if !GTEST_OS_WINDOWS_MOBILE
81#if GTEST_HAS_PROTOBUF_
82using testing::internal::TestMessage;
86TEST(BuiltInDefaultValueTest, IsNullForPointerTypes) {
87 EXPECT_TRUE(BuiltInDefaultValue<int*>::Get() == NULL);
88 EXPECT_TRUE(BuiltInDefaultValue<const char*>::Get() == NULL);
89 EXPECT_TRUE(BuiltInDefaultValue<void*>::Get() == NULL);
93TEST(BuiltInDefaultValueTest, ExistsForPointerTypes) {
95 EXPECT_TRUE(BuiltInDefaultValue<const char*>::Exists());
101TEST(BuiltInDefaultValueTest, IsZeroForNumericTypes) {
102 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned char>::Get());
103 EXPECT_EQ(0, BuiltInDefaultValue<signed char>::Get());
104 EXPECT_EQ(0, BuiltInDefaultValue<char>::Get());
105#if GMOCK_HAS_SIGNED_WCHAR_T_
106 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned wchar_t>::Get());
107 EXPECT_EQ(0, BuiltInDefaultValue<signed wchar_t>::Get());
109#if GMOCK_WCHAR_T_IS_NATIVE_
110 EXPECT_EQ(0, BuiltInDefaultValue<wchar_t>::Get());
112 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned short>::Get());
113 EXPECT_EQ(0, BuiltInDefaultValue<signed short>::Get());
114 EXPECT_EQ(0, BuiltInDefaultValue<short>::Get());
115 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned int>::Get());
116 EXPECT_EQ(0, BuiltInDefaultValue<signed int>::Get());
117 EXPECT_EQ(0, BuiltInDefaultValue<int>::Get());
118 EXPECT_EQ(0U, BuiltInDefaultValue<unsigned long>::Get());
119 EXPECT_EQ(0, BuiltInDefaultValue<signed long>::Get());
120 EXPECT_EQ(0, BuiltInDefaultValue<long>::Get());
121 EXPECT_EQ(0U, BuiltInDefaultValue<UInt64>::Get());
122 EXPECT_EQ(0, BuiltInDefaultValue<Int64>::Get());
123 EXPECT_EQ(0, BuiltInDefaultValue<float>::Get());
124 EXPECT_EQ(0, BuiltInDefaultValue<double>::Get());
129TEST(BuiltInDefaultValueTest, ExistsForNumericTypes) {
130 EXPECT_TRUE(BuiltInDefaultValue<unsigned char>::Exists());
131 EXPECT_TRUE(BuiltInDefaultValue<signed char>::Exists());
133#if GMOCK_HAS_SIGNED_WCHAR_T_
134 EXPECT_TRUE(BuiltInDefaultValue<unsigned wchar_t>::Exists());
135 EXPECT_TRUE(BuiltInDefaultValue<signed wchar_t>::Exists());
137#if GMOCK_WCHAR_T_IS_NATIVE_
138 EXPECT_TRUE(BuiltInDefaultValue<wchar_t>::Exists());
140 EXPECT_TRUE(BuiltInDefaultValue<unsigned short>::Exists());
141 EXPECT_TRUE(BuiltInDefaultValue<signed short>::Exists());
143 EXPECT_TRUE(BuiltInDefaultValue<unsigned int>::Exists());
144 EXPECT_TRUE(BuiltInDefaultValue<signed int>::Exists());
146 EXPECT_TRUE(BuiltInDefaultValue<unsigned long>::Exists());
147 EXPECT_TRUE(BuiltInDefaultValue<signed long>::Exists());
149 EXPECT_TRUE(BuiltInDefaultValue<UInt64>::Exists());
152 EXPECT_TRUE(BuiltInDefaultValue<double>::Exists());
156TEST(BuiltInDefaultValueTest, IsFalseForBool) {
161TEST(BuiltInDefaultValueTest, BoolExists) {
167TEST(BuiltInDefaultValueTest, IsEmptyStringForString) {
168#if GTEST_HAS_GLOBAL_STRING
169 EXPECT_EQ(
"", BuiltInDefaultValue< ::string>::Get());
172 EXPECT_EQ(
"", BuiltInDefaultValue< ::std::string>::Get());
177TEST(BuiltInDefaultValueTest, ExistsForString) {
178#if GTEST_HAS_GLOBAL_STRING
179 EXPECT_TRUE(BuiltInDefaultValue< ::string>::Exists());
182 EXPECT_TRUE(BuiltInDefaultValue< ::std::string>::Exists());
187TEST(BuiltInDefaultValueTest, WorksForConstTypes) {
188 EXPECT_EQ(
"", BuiltInDefaultValue<const std::string>::Get());
189 EXPECT_EQ(0, BuiltInDefaultValue<const int>::Get());
190 EXPECT_TRUE(BuiltInDefaultValue<char* const>::Get() == NULL);
195class MyDefaultConstructible {
197 MyDefaultConstructible() : value_(42) {}
199 int value()
const {
return value_; }
206class MyNonDefaultConstructible {
209 explicit MyNonDefaultConstructible(
int a_value) : value_(a_value) {}
211 int value()
const {
return value_; }
217#if GTEST_HAS_STD_TYPE_TRAITS_
219TEST(BuiltInDefaultValueTest, ExistsForDefaultConstructibleType) {
220 EXPECT_TRUE(BuiltInDefaultValue<MyDefaultConstructible>::Exists());
223TEST(BuiltInDefaultValueTest, IsDefaultConstructedForDefaultConstructibleType) {
224 EXPECT_EQ(42, BuiltInDefaultValue<MyDefaultConstructible>::Get().
value());
229TEST(BuiltInDefaultValueTest, DoesNotExistForNonDefaultConstructibleType) {
230 EXPECT_FALSE(BuiltInDefaultValue<MyNonDefaultConstructible>::Exists());
234TEST(BuiltInDefaultValueDeathTest, IsUndefinedForReferences) {
236 BuiltInDefaultValue<int&>::Get();
239 BuiltInDefaultValue<const char&>::Get();
243TEST(BuiltInDefaultValueDeathTest, IsUndefinedForNonDefaultConstructibleType) {
245 BuiltInDefaultValue<MyNonDefaultConstructible>::Get();
250TEST(DefaultValueTest, IsInitiallyUnset) {
252 EXPECT_FALSE(DefaultValue<MyDefaultConstructible>::IsSet());
253 EXPECT_FALSE(DefaultValue<const MyNonDefaultConstructible>::IsSet());
257TEST(DefaultValueTest, CanBeSetAndUnset) {
259 EXPECT_FALSE(DefaultValue<const MyNonDefaultConstructible>::Exists());
261 DefaultValue<int>::Set(1);
262 DefaultValue<const MyNonDefaultConstructible>::Set(
263 MyNonDefaultConstructible(42));
266 EXPECT_EQ(42, DefaultValue<const MyNonDefaultConstructible>::Get().
value());
269 EXPECT_TRUE(DefaultValue<const MyNonDefaultConstructible>::Exists());
271 DefaultValue<int>::Clear();
272 DefaultValue<const MyNonDefaultConstructible>::Clear();
275 EXPECT_FALSE(DefaultValue<const MyNonDefaultConstructible>::IsSet());
278 EXPECT_FALSE(DefaultValue<const MyNonDefaultConstructible>::Exists());
284TEST(DefaultValueDeathTest, GetReturnsBuiltInDefaultValueWhenUnset) {
287 EXPECT_FALSE(DefaultValue<MyNonDefaultConstructible>::IsSet());
288 EXPECT_FALSE(DefaultValue<MyNonDefaultConstructible>::Exists());
293 DefaultValue<MyNonDefaultConstructible>::Get();
297#if GTEST_HAS_STD_UNIQUE_PTR_
298TEST(DefaultValueTest, GetWorksForMoveOnlyIfSet) {
299 EXPECT_TRUE(DefaultValue<std::unique_ptr<int>>::Exists());
300 EXPECT_TRUE(DefaultValue<std::unique_ptr<int>>::Get() == NULL);
301 DefaultValue<std::unique_ptr<int>>::SetFactory([] {
302 return std::unique_ptr<int>(
new int(42));
304 EXPECT_TRUE(DefaultValue<std::unique_ptr<int>>::Exists());
305 std::unique_ptr<int>
i = DefaultValue<std::unique_ptr<int>>::Get();
311TEST(DefaultValueTest, GetWorksForVoid) {
312 return DefaultValue<void>::Get();
318TEST(DefaultValueOfReferenceTest, IsInitiallyUnset) {
320 EXPECT_FALSE(DefaultValue<MyDefaultConstructible&>::IsSet());
321 EXPECT_FALSE(DefaultValue<MyNonDefaultConstructible&>::IsSet());
325TEST(DefaultValueOfReferenceTest, IsInitiallyNotExisting) {
327 EXPECT_FALSE(DefaultValue<MyDefaultConstructible&>::Exists());
328 EXPECT_FALSE(DefaultValue<MyNonDefaultConstructible&>::Exists());
332TEST(DefaultValueOfReferenceTest, CanBeSetAndUnset) {
334 DefaultValue<const int&>::Set(n);
335 MyNonDefaultConstructible x(42);
336 DefaultValue<MyNonDefaultConstructible&>::Set(x);
339 EXPECT_TRUE(DefaultValue<MyNonDefaultConstructible&>::Exists());
341 EXPECT_EQ(&n, &(DefaultValue<const int&>::Get()));
342 EXPECT_EQ(&x, &(DefaultValue<MyNonDefaultConstructible&>::Get()));
344 DefaultValue<const int&>::Clear();
345 DefaultValue<MyNonDefaultConstructible&>::Clear();
348 EXPECT_FALSE(DefaultValue<MyNonDefaultConstructible&>::Exists());
351 EXPECT_FALSE(DefaultValue<MyNonDefaultConstructible&>::IsSet());
357TEST(DefaultValueOfReferenceDeathTest, GetReturnsBuiltInDefaultValueWhenUnset) {
359 EXPECT_FALSE(DefaultValue<MyNonDefaultConstructible&>::IsSet());
362 DefaultValue<int&>::Get();
365 DefaultValue<MyNonDefaultConstructible>::Get();
372typedef int MyGlobalFunction(
bool,
int);
374class MyActionImpl :
public ActionInterface<MyGlobalFunction> {
376 virtual int Perform(
const tuple<bool, int>& args) {
377 return get<0>(args) ? get<1>(args) : 0;
381TEST(ActionInterfaceTest, CanBeImplementedByDefiningPerform) {
382 MyActionImpl my_action_impl;
383 (void)my_action_impl;
386TEST(ActionInterfaceTest, MakeAction) {
399TEST(ActionTest, CanBeConstructedFromActionInterface) {
400 Action<MyGlobalFunction>
action(
new MyActionImpl);
404TEST(ActionTest, DelegatesWorkToActionInterface) {
405 const Action<MyGlobalFunction>
action(
new MyActionImpl);
412TEST(ActionTest, IsCopyable) {
413 Action<MyGlobalFunction> a1(
new MyActionImpl);
414 Action<MyGlobalFunction> a2(a1);
417 EXPECT_EQ(5, a1.Perform(make_tuple(
true, 5)));
418 EXPECT_EQ(0, a1.Perform(make_tuple(
false, 1)));
421 EXPECT_EQ(5, a2.Perform(make_tuple(
true, 5)));
422 EXPECT_EQ(0, a2.Perform(make_tuple(
false, 1)));
427 EXPECT_EQ(5, a1.Perform(make_tuple(
true, 5)));
428 EXPECT_EQ(0, a1.Perform(make_tuple(
false, 1)));
431 EXPECT_EQ(5, a2.Perform(make_tuple(
true, 5)));
432 EXPECT_EQ(0, a2.Perform(make_tuple(
false, 1)));
438class IsNotZero :
public ActionInterface<bool(int)> {
440 virtual bool Perform(
const tuple<int>& arg) {
441 return get<0>(arg) != 0;
451TEST(ActionTest, CanBeConvertedToOtherActionType) {
452 const Action<
bool(
int)> a1(
new IsNotZero);
453 const Action<
int(
char)> a2 = Action<int(char)>(a1);
454 EXPECT_EQ(1, a2.Perform(make_tuple(
'a')));
455 EXPECT_EQ(0, a2.Perform(make_tuple(
'\0')));
463class ReturnSecondArgumentAction {
468 template <
typename Result,
typename ArgumentTuple>
469 Result Perform(
const ArgumentTuple& args) {
return get<1>(args); }
474class ReturnZeroFromNullaryFunctionAction {
483 template <
typename Result>
484 Result Perform(
const tuple<>&)
const {
return 0; }
490PolymorphicAction<ReturnSecondArgumentAction> ReturnSecondArgument() {
491 return MakePolymorphicAction(ReturnSecondArgumentAction());
494PolymorphicAction<ReturnZeroFromNullaryFunctionAction>
495ReturnZeroFromNullaryFunction() {
496 return MakePolymorphicAction(ReturnZeroFromNullaryFunctionAction());
501TEST(MakePolymorphicActionTest, ConstructsActionFromImpl) {
502 Action<
int(
bool,
int,
double)> a1 = ReturnSecondArgument();
503 EXPECT_EQ(5, a1.Perform(make_tuple(
false, 5, 2.0)));
508TEST(MakePolymorphicActionTest, WorksWhenPerformHasOneTemplateParameter) {
509 Action<
int()> a1 = ReturnZeroFromNullaryFunction();
512 Action<
void*()> a2 = ReturnZeroFromNullaryFunction();
518TEST(ReturnTest, WorksForVoid) {
519 const Action<void(
int)> ret = Return();
520 return ret.Perform(make_tuple(1));
524TEST(ReturnTest, ReturnsGivenValue) {
525 Action<
int()> ret = Return(1);
529 EXPECT_EQ(-5, ret.Perform(make_tuple()));
533TEST(ReturnTest, AcceptsStringLiteral) {
534 Action<
const char*()> a1 = Return(
"Hello");
537 Action<std::string()> a2 = Return(
"world");
538 EXPECT_EQ(
"world", a2.Perform(make_tuple()));
543struct IntegerVectorWrapper {
544 std::vector<int> * v;
545 IntegerVectorWrapper(std::vector<int>& _v) : v(&_v) {}
549TEST(ReturnTest, SupportsWrapperReturnType) {
552 for (
int i = 0;
i < 5; ++
i) v.push_back(i);
556 Action<IntegerVectorWrapper()>
a = Return(v);
557 const std::vector<int>&
result = *(
a.Perform(make_tuple()).v);
567struct Derived :
public Base {
568 bool operator==(
const Derived&) {
return true; }
571TEST(ReturnTest, IsCovariant) {
574 Action<Base*()> ret = Return(&
base);
577 ret = Return(&derived);
578 EXPECT_EQ(&derived, ret.Perform(make_tuple()));
587 explicit FromType(
bool* is_converted) : converted_(is_converted) {}
588 bool* converted()
const {
return converted_; }
591 bool*
const converted_;
599 ToType(
const FromType& x) { *x.converted() =
true; }
602TEST(ReturnTest, ConvertsArgumentWhenConverted) {
603 bool converted =
false;
604 FromType x(&converted);
605 Action<ToType()>
action(Return(x));
606 EXPECT_TRUE(converted) <<
"Return must convert its argument in its own "
607 <<
"conversion operator.";
609 action.Perform(tuple<>());
610 EXPECT_FALSE(converted) <<
"Action must NOT convert its argument "
611 <<
"when performed.";
614class DestinationType {};
619 operator DestinationType() {
return DestinationType(); }
622TEST(ReturnTest, CanConvertArgumentUsingNonConstTypeCastOperator) {
624 Action<DestinationType()>
action(Return(
s));
628TEST(ReturnNullTest, WorksInPointerReturningFunction) {
629 const Action<
int*()> a1 = ReturnNull();
632 const Action<
const char*(
bool)> a2 = ReturnNull();
636#if GTEST_HAS_STD_UNIQUE_PTR_
639TEST(ReturnNullTest, WorksInSmartPointerReturningFunction) {
640 const Action<std::unique_ptr<const int>()> a1 = ReturnNull();
643 const Action<std::shared_ptr<int>(std::string)> a2 = ReturnNull();
644 EXPECT_TRUE(a2.Perform(make_tuple(
"foo")) ==
nullptr);
649TEST(ReturnRefTest, WorksForReference) {
651 const Action<
const int&(
bool)> ret = ReturnRef(n);
653 EXPECT_EQ(&n, &ret.Perform(make_tuple(
true)));
657TEST(ReturnRefTest, IsCovariant) {
660 Action<Base&()>
a = ReturnRef(
base);
663 a = ReturnRef(derived);
664 EXPECT_EQ(&derived, &
a.Perform(make_tuple()));
668TEST(ReturnRefOfCopyTest, WorksForReference) {
670 const Action<
const int&()> ret = ReturnRefOfCopy(n);
672 EXPECT_NE(&n, &ret.Perform(make_tuple()));
673 EXPECT_EQ(42, ret.Perform(make_tuple()));
676 EXPECT_NE(&n, &ret.Perform(make_tuple()));
677 EXPECT_EQ(42, ret.Perform(make_tuple()));
681TEST(ReturnRefOfCopyTest, IsCovariant) {
684 Action<Base&()>
a = ReturnRefOfCopy(
base);
687 a = ReturnRefOfCopy(derived);
688 EXPECT_NE(&derived, &
a.Perform(make_tuple()));
699#if GTEST_HAS_STD_UNIQUE_PTR_
702 MOCK_METHOD0(MakeVectorUnique, std::vector<std::unique_ptr<int>>());
711TEST(DoDefaultTest, ReturnsBuiltInDefaultValueByDefault) {
714 .WillOnce(DoDefault());
720TEST(DoDefaultDeathTest, DiesForUnknowType) {
723 .WillRepeatedly(DoDefault());
724#if GTEST_HAS_EXCEPTIONS
736void VoidFunc(
bool ) {}
738TEST(DoDefaultDeathTest, DiesIfUsedInCompositeAction) {
741 .WillRepeatedly(DoAll(Invoke(VoidFunc),
755TEST(DoDefaultTest, ReturnsUserSpecifiedPerTypeDefaultValueWhenThereIsOne) {
756 DefaultValue<int>::Set(1);
759 .WillOnce(DoDefault());
761 DefaultValue<int>::Clear();
765TEST(DoDefaultTest, DoesWhatOnCallSpecifies) {
768 .WillByDefault(Return(2));
770 .WillOnce(DoDefault());
775TEST(DoDefaultTest, CannotBeUsedInOnCall) {
779 .WillByDefault(DoDefault());
780 },
"DoDefault() cannot be used in ON_CALL()");
785TEST(SetArgPointeeTest, SetsTheNthPointee) {
787 Action<MyFunction>
a = SetArgPointee<1>(2);
791 a.Perform(make_tuple(
true, &n, &ch));
795 a = SetArgPointee<2>(
'a');
798 a.Perform(make_tuple(
true, &n, &ch));
803#if !((GTEST_GCC_VER_ && GTEST_GCC_VER_ < 40000) || GTEST_OS_SYMBIAN)
806TEST(SetArgPointeeTest, AcceptsStringLiteral) {
807 typedef void MyFunction(std::string*,
const char**);
808 Action<MyFunction>
a = SetArgPointee<0>(
"hi");
810 const char* ptr = NULL;
811 a.Perform(make_tuple(&
str, &ptr));
815 a = SetArgPointee<1>(
"world");
817 a.Perform(make_tuple(&
str, &ptr));
822TEST(SetArgPointeeTest, AcceptsWideStringLiteral) {
824 Action<MyFunction>
a = SetArgPointee<0>(
L"world");
825 const wchar_t* ptr = NULL;
826 a.Perform(make_tuple(&ptr));
829# if GTEST_HAS_STD_WSTRING
831 typedef void MyStringFunction(std::wstring*);
832 Action<MyStringFunction> a2 = SetArgPointee<0>(
L"world");
833 std::wstring
str =
L"";
834 a2.Perform(make_tuple(&
str));
842TEST(SetArgPointeeTest, AcceptsCharPointer) {
843 typedef void MyFunction(
bool, std::string*,
const char**);
844 const char*
const hi =
"hi";
845 Action<MyFunction>
a = SetArgPointee<1>(hi);
847 const char* ptr = NULL;
848 a.Perform(make_tuple(
true, &
str, &ptr));
852 char world_array[] =
"world";
853 char*
const world = world_array;
854 a = SetArgPointee<2>(world);
856 a.Perform(make_tuple(
true, &
str, &ptr));
861TEST(SetArgPointeeTest, AcceptsWideCharPointer) {
862 typedef void MyFunction(
bool,
const wchar_t**);
863 const wchar_t*
const hi =
L"hi";
864 Action<MyFunction>
a = SetArgPointee<1>(hi);
865 const wchar_t* ptr = NULL;
866 a.Perform(make_tuple(
true, &ptr));
869# if GTEST_HAS_STD_WSTRING
871 typedef void MyStringFunction(
bool, std::wstring*);
872 wchar_t world_array[] =
L"world";
873 wchar_t*
const world = world_array;
874 Action<MyStringFunction> a2 = SetArgPointee<1>(world);
876 a2.Perform(make_tuple(
true, &
str));
881#if GTEST_HAS_PROTOBUF_
885TEST(SetArgPointeeTest, SetsTheNthPointeeOfProtoBufferType) {
886 TestMessage*
const msg =
new TestMessage;
887 msg->set_member(
"yes");
888 TestMessage orig_msg;
889 orig_msg.CopyFrom(*msg);
891 Action<void(
bool, TestMessage*)>
a = SetArgPointee<1>(*msg);
900 a.Perform(make_tuple(
true, &
dest));
907TEST(SetArgPointeeTest, SetsTheNthPointeeOfProtoBufferBaseType) {
908 TestMessage*
const msg =
new TestMessage;
909 msg->set_member(
"yes");
910 TestMessage orig_msg;
911 orig_msg.CopyFrom(*msg);
913 Action<void(
bool, ::ProtocolMessage*)>
a = SetArgPointee<1>(*msg);
921 ::ProtocolMessage*
const dest_base = &
dest;
923 a.Perform(make_tuple(
true, dest_base));
930TEST(SetArgPointeeTest, SetsTheNthPointeeOfProto2BufferType) {
931 using testing::internal::FooMessage;
932 FooMessage*
const msg =
new FooMessage;
933 msg->set_int_field(2);
934 msg->set_string_field(
"hi");
936 orig_msg.CopyFrom(*msg);
938 Action<void(
bool, FooMessage*)>
a = SetArgPointee<1>(*msg);
946 dest.set_int_field(0);
947 a.Perform(make_tuple(
true, &
dest));
955TEST(SetArgPointeeTest, SetsTheNthPointeeOfProto2BufferBaseType) {
956 using testing::internal::FooMessage;
957 FooMessage*
const msg =
new FooMessage;
958 msg->set_int_field(2);
959 msg->set_string_field(
"hi");
961 orig_msg.CopyFrom(*msg);
963 Action<void(
bool, ::proto2::Message*)>
a = SetArgPointee<1>(*msg);
971 dest.set_int_field(0);
972 ::proto2::Message*
const dest_base = &
dest;
973 a.Perform(make_tuple(
true, dest_base));
982TEST(SetArgumentPointeeTest, SetsTheNthPointee) {
984 Action<MyFunction>
a = SetArgumentPointee<1>(2);
988 a.Perform(make_tuple(
true, &n, &ch));
992 a = SetArgumentPointee<2>(
'a');
995 a.Perform(make_tuple(
true, &n, &ch));
1000#if GTEST_HAS_PROTOBUF_
1004TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProtoBufferType) {
1005 TestMessage*
const msg =
new TestMessage;
1006 msg->set_member(
"yes");
1007 TestMessage orig_msg;
1008 orig_msg.CopyFrom(*msg);
1010 Action<void(
bool, TestMessage*)>
a = SetArgumentPointee<1>(*msg);
1019 a.Perform(make_tuple(
true, &
dest));
1026TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProtoBufferBaseType) {
1027 TestMessage*
const msg =
new TestMessage;
1028 msg->set_member(
"yes");
1029 TestMessage orig_msg;
1030 orig_msg.CopyFrom(*msg);
1032 Action<void(
bool, ::ProtocolMessage*)>
a = SetArgumentPointee<1>(*msg);
1040 ::ProtocolMessage*
const dest_base = &
dest;
1042 a.Perform(make_tuple(
true, dest_base));
1049TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProto2BufferType) {
1050 using testing::internal::FooMessage;
1051 FooMessage*
const msg =
new FooMessage;
1052 msg->set_int_field(2);
1053 msg->set_string_field(
"hi");
1054 FooMessage orig_msg;
1055 orig_msg.CopyFrom(*msg);
1057 Action<void(
bool, FooMessage*)>
a = SetArgumentPointee<1>(*msg);
1065 dest.set_int_field(0);
1066 a.Perform(make_tuple(
true, &
dest));
1074TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProto2BufferBaseType) {
1075 using testing::internal::FooMessage;
1076 FooMessage*
const msg =
new FooMessage;
1077 msg->set_int_field(2);
1078 msg->set_string_field(
"hi");
1079 FooMessage orig_msg;
1080 orig_msg.CopyFrom(*msg);
1082 Action<void(
bool, ::proto2::Message*)>
a = SetArgumentPointee<1>(*msg);
1090 dest.set_int_field(0);
1091 ::proto2::Message*
const dest_base = &
dest;
1092 a.Perform(make_tuple(
true, dest_base));
1102class NullaryFunctor {
1104 int operator()() {
return 2; }
1110class VoidNullaryFunctor {
1112 void operator()() {
g_done =
true; }
1117 Foo() : value_(123) {}
1119 int Nullary()
const {
return value_; }
1126TEST(InvokeWithoutArgsTest, Function) {
1128 Action<
int(
int)>
a = InvokeWithoutArgs(Nullary);
1132 Action<
int(
int,
double)> a2 = InvokeWithoutArgs(Nullary);
1133 EXPECT_EQ(1, a2.Perform(make_tuple(2, 3.5)));
1136 Action<void(
int)> a3 = InvokeWithoutArgs(VoidNullary);
1138 a3.Perform(make_tuple(1));
1143TEST(InvokeWithoutArgsTest, Functor) {
1145 Action<
int()>
a = InvokeWithoutArgs(NullaryFunctor());
1149 Action<
int(
int,
double,
char)> a2 =
1150 InvokeWithoutArgs(NullaryFunctor());
1151 EXPECT_EQ(2, a2.Perform(make_tuple(3, 3.5,
'a')));
1154 Action<void()> a3 = InvokeWithoutArgs(VoidNullaryFunctor());
1156 a3.Perform(make_tuple());
1163 Action<
int(
bool,
char)>
a =
1164 InvokeWithoutArgs(&
foo, &Foo::Nullary);
1165 EXPECT_EQ(123,
a.Perform(make_tuple(
true,
'a')));
1169TEST(IgnoreResultTest, PolymorphicAction) {
1170 Action<void(
int)>
a = IgnoreResult(Return(5));
1171 a.Perform(make_tuple(1));
1181TEST(IgnoreResultTest, MonomorphicAction) {
1183 Action<void()>
a = IgnoreResult(Invoke(ReturnOne));
1184 a.Perform(make_tuple());
1190MyNonDefaultConstructible ReturnMyNonDefaultConstructible(
double ) {
1192 return MyNonDefaultConstructible(42);
1195TEST(IgnoreResultTest, ActionReturningClass) {
1197 Action<void(
int)>
a =
1198 IgnoreResult(Invoke(ReturnMyNonDefaultConstructible));
1199 a.Perform(make_tuple(2));
1203TEST(AssignTest, Int) {
1205 Action<void(
int)>
a = Assign(&x, 5);
1206 a.Perform(make_tuple(0));
1210TEST(AssignTest, String) {
1212 Action<void(
void)>
a = Assign(&x,
"Hello, world");
1213 a.Perform(make_tuple());
1217TEST(AssignTest, CompatibleTypes) {
1219 Action<void(
int)>
a = Assign(&x, 5);
1220 a.Perform(make_tuple(0));
1224#if !GTEST_OS_WINDOWS_MOBILE
1228 virtual void SetUp() { errno = 0; }
1229 virtual void TearDown() { errno = 0; }
1232TEST_F(SetErrnoAndReturnTest, Int) {
1233 Action<
int(
void)>
a = SetErrnoAndReturn(ENOTTY, -5);
1238TEST_F(SetErrnoAndReturnTest, Ptr) {
1240 Action<
int*(void)>
a = SetErrnoAndReturn(ENOTTY, &x);
1245TEST_F(SetErrnoAndReturnTest, CompatibleTypes) {
1246 Action<double()>
a = SetErrnoAndReturn(EINVAL, 5);
1256TEST(ByRefTest, IsCopyable) {
1257 const std::string s1 =
"Hi";
1258 const std::string s2 =
"Hello";
1262 const std::string& r1 = ref_wrapper;
1266 ref_wrapper = ByRef(s2);
1267 const std::string& r2 = ref_wrapper;
1273 ref_wrapper = ref_wrapper1;
1274 const std::string& r3 = ref_wrapper;
1279TEST(ByRefTest, ConstValue) {
1283 const int& const_ref = ByRef(n);
1288TEST(ByRefTest, NonConstValue) {
1292 int& ref = ByRef(n);
1296 const int& const_ref = ByRef(n);
1301TEST(ByRefTest, ExplicitType) {
1303 const int& r1 = ByRef<const int>(n);
1310 Derived& r2 = ByRef<Derived>(
d);
1313 const Derived& r3 = ByRef<const Derived>(
d);
1316 Base& r4 = ByRef<Base>(
d);
1319 const Base& r5 = ByRef<const Base>(
d);
1330TEST(ByRefTest, PrintsCorrectly) {
1332 ::std::stringstream expected, actual;
1335 EXPECT_EQ(expected.str(), actual.str());
1338#if GTEST_HAS_STD_UNIQUE_PTR_
1340std::unique_ptr<int> UniquePtrSource() {
1341 return std::unique_ptr<int>(
new int(19));
1344std::vector<std::unique_ptr<int>> VectorUniquePtrSource() {
1345 std::vector<std::unique_ptr<int>>
out;
1346 out.emplace_back(
new int(7));
1350TEST(MockMethodTest, CanReturnMoveOnlyValue_Return) {
1352 std::unique_ptr<int>
i(
new int(19));
1353 EXPECT_CALL(mock, MakeUnique()).WillOnce(Return(ByMove(std::move(i))));
1355 .WillOnce(Return(ByMove(VectorUniquePtrSource())));
1356 Derived*
d =
new Derived;
1358 .WillOnce(Return(ByMove(std::unique_ptr<Derived>(
d))));
1360 std::unique_ptr<int> result1 = mock.MakeUnique();
1363 std::vector<std::unique_ptr<int>> vresult = mock.MakeVectorUnique();
1368 std::unique_ptr<Base> result2 = mock.MakeUniqueBase();
1372TEST(MockMethodTest, CanReturnMoveOnlyValue_DoAllReturn) {
1375 std::unique_ptr<int>
i(
new int(19));
1379 Return(ByMove(std::move(i)))));
1381 std::unique_ptr<int> result1 = mock.MakeUnique();
1385TEST(MockMethodTest, CanReturnMoveOnlyValue_Invoke) {
1389 DefaultValue<std::unique_ptr<int>>::SetFactory([] {
1390 return std::unique_ptr<int>(
new int(42));
1394 EXPECT_CALL(mock, MakeUnique()).WillRepeatedly(Invoke(UniquePtrSource));
1396 .WillRepeatedly(Invoke(VectorUniquePtrSource));
1397 std::unique_ptr<int> result1 = mock.MakeUnique();
1399 std::unique_ptr<int> result2 = mock.MakeUnique();
1403 std::vector<std::unique_ptr<int>> vresult = mock.MakeVectorUnique();
#define s(x, c)
Definition aesb.c:47
Definition gmock-actions.h:327
Definition gmock-actions.h:355
Definition gmock-actions.h:200
Definition gmock-generated-function-mockers.h:873
Definition gmock-actions.h:427
Definition gmock-actions.h:97
Definition gmock-actions.h:950
static void Print(const T &value, ::std::ostream *os)
Definition gtest-printers.h:698
bool operator==(expect< T > const &lhs, expect< U > const &rhs) noexcept(noexcept(lhs.equal(rhs)))
Definition expect.h:402
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex)
Definition gtest-death-test.h:286
#define EXPECT_NONFATAL_FAILURE(statement, substr)
Definition gtest-spi.h:204
#define TEST_F(test_fixture, test_name)
Definition gtest.h:2216
#define EXPECT_EQ(val1, val2)
Definition gtest.h:1922
#define EXPECT_NE(val1, val2)
Definition gtest.h:1926
#define EXPECT_ANY_THROW(statement)
Definition gtest.h:1847
#define EXPECT_DOUBLE_EQ(val1, val2)
Definition gtest.h:2031
#define EXPECT_TRUE(condition)
Definition gtest.h:1859
#define EXPECT_STREQ(s1, s2)
Definition gtest.h:1995
#define TEST(test_case_name, test_name)
Definition gtest.h:2187
#define EXPECT_FALSE(condition)
Definition gtest.h:1862
#define GTEST_DISALLOW_ASSIGN_(type)
Definition gtest-port.h:869
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
Definition gtest-port.h:874
#define MOCK_METHOD0(m,...)
Definition gmock-generated-function-mockers.h:675
#define MOCK_METHOD1(m,...)
Definition gmock-generated-function-mockers.h:676
#define EXPECT_THAT(value, matcher)
Definition gmock-matchers.h:4390
#define EXPECT_CALL(obj, call)
Definition gmock-spec-builders.h:1845
#define ON_CALL(obj, call)
Definition gmock-spec-builders.h:1841
#define Method
Definition gmock-spec-builders_test.cc:184
#define L(m0, m1, m2, m3, m4, m5, m6, m7)
Definition jh.c:116
Definition gtest-printers_test.cc:126
int i
Definition pymoduletest.py:23
int
Definition pymoduletest.py:17
bool g_done
Definition gmock-generated-actions_test.cc:78
int Nullary()
Definition gmock-generated-actions_test.cc:71
void VoidNullary()
Definition gmock-more-actions_test.cc:84
void MyFunction(int)
Definition gtest-printers_test.cc:524
void UniversalPrint(const T &value, ::std::ostream *os)
Definition gtest-printers.h:852
TypeWithSize< 8 >::Int Int64
Definition gtest-port.h:2496
TypeWithSize< 8 >::UInt UInt64
Definition gtest-port.h:2497
internal::Ne2Matcher Ne()
Definition gmock-matchers.h:4102
internal::IgnoreResultAction< A > IgnoreResult(const A &an_action)
Definition gmock-actions.h:1187
PolymorphicAction< internal::InvokeWithoutArgsAction< FunctionImpl > > InvokeWithoutArgs(FunctionImpl function_impl)
Definition gmock-actions.h:1168
internal::ByMoveWrapper< R > ByMove(R x)
Definition gmock-actions.h:1094
PolymorphicAction< Impl > MakePolymorphicAction(const Impl &impl)
Definition gmock-actions.h:475
PolymorphicAction< internal::ReturnVoidAction > Return()
Definition gmock-actions.h:1071
const internal::AnythingMatcher _
Definition gmock-matchers.h:3729
PolymorphicAction< internal::AssignAction< T1, T2 > > Assign(T1 *ptr, T2 val)
Definition gmock-actions.h:1147
PolymorphicAction< internal::SetErrnoAndReturnAction< T > > SetErrnoAndReturn(int errval, T result)
Definition gmock-actions.h:1156
internal::ElementsAreMatcher< ::testing::tuple<> > ElementsAre()
Definition gmock-generated-matchers.h:570
Action< F > MakeAction(ActionInterface< F > *impl)
Definition gmock-actions.h:463
PolymorphicAction< internal::SetArgumentPointeeAction< N, T, internal::IsAProtocolMessage< T >::value > > SetArgumentPointee(const T &x)
Definition gmock-actions.h:1140
internal::ReturnRefOfCopyAction< R > ReturnRefOfCopy(const R &x)
Definition gmock-actions.h:1085
internal::ReferenceWrapper< T > ByRef(T &l_value)
Definition gmock-actions.h:1199
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
Definition gmock-more-actions.h:114
internal::ReturnRefAction< R > ReturnRef(R &x)
Definition gmock-actions.h:1077
PolymorphicAction< internal::SetArgumentPointeeAction< N, T, internal::IsAProtocolMessage< T >::value > > SetArgPointee(const T &x)
Definition gmock-actions.h:1109
internal::DoDefaultAction DoDefault()
Definition gmock-actions.h:1099
PolymorphicAction< internal::ReturnNullAction > ReturnNull()
Definition gmock-actions.h:1066
const GenericPointer< typename T::ValueType > T2 value
Definition pointer.h:1225
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1124
const char *const str
Definition portlistingparse.c:23
tools::wallet2::message_signature_result_t result
Definition signature.cpp:62
CXA_THROW_INFO_T void(* dest)(void *))
Definition stack_trace.cpp:91
int bool
Definition stdbool.h:35
Definition fwdtest.cpp:28
Foo()
Definition fwdtest.cpp:106
Definition upnpdescgen.h:28