42#include "gtest/gtest.h"
43#include "gtest/internal/gtest-linked_ptr.h"
51using testing::make_tuple;
53using testing::tuple_element;
57using testing::DeleteArg;
60using testing::ReturnArg;
61using testing::ReturnPointee;
62using testing::SaveArg;
63using testing::SaveArgPointee;
64using testing::SetArgReferee;
72inline short Short(
short n) {
return n; }
73inline char Char(
char ch) {
return ch; }
91bool Unary(
int x) {
return x < 0; }
93const char*
Plus1(
const char*
s) {
return s + 1; }
108const char*
Binary(
const char* input,
short n) {
return input + n; }
112int Ternary(
int x,
char y,
short z) {
return x + y + z; }
122string Concat4(
const char* s1,
const char* s2,
const char* s3,
124 return string(s1) + s2 + s3 + s4;
127int SumOf5(
int a,
int b,
int c,
int d,
int e) {
return a +
b + c +
d + e; }
131 return a +
b + c +
d + e;
135string Concat5(
const char* s1,
const char* s2,
const char* s3,
136 const char* s4,
const char* s5) {
137 return string(s1) + s2 + s3 + s4 + s5;
141 return a +
b + c +
d + e + f;
146 return a +
b + c +
d + e + f;
150string Concat6(
const char* s1,
const char* s2,
const char* s3,
151 const char* s4,
const char* s5,
const char* s6) {
152 return string(s1) + s2 + s3 + s4 + s5 + s6;
155string Concat7(
const char* s1,
const char* s2,
const char* s3,
156 const char* s4,
const char* s5,
const char* s6,
158 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7;
161string Concat8(
const char* s1,
const char* s2,
const char* s3,
162 const char* s4,
const char* s5,
const char* s6,
163 const char* s7,
const char* s8) {
164 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8;
167string Concat9(
const char* s1,
const char* s2,
const char* s3,
168 const char* s4,
const char* s5,
const char* s6,
169 const char* s7,
const char* s8,
const char* s9) {
170 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9;
173string Concat10(
const char* s1,
const char* s2,
const char* s3,
174 const char* s4,
const char* s5,
const char* s6,
175 const char* s7,
const char* s8,
const char* s9,
177 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10;
198 int SumOf5(
int a,
int b,
int c,
int d,
int e) {
return a +
b + c +
d + e; }
201 return a +
b + c +
d + e + f;
204 string Concat7(
const char* s1,
const char* s2,
const char* s3,
205 const char* s4,
const char* s5,
const char* s6,
207 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7;
210 string Concat8(
const char* s1,
const char* s2,
const char* s3,
211 const char* s4,
const char* s5,
const char* s6,
212 const char* s7,
const char* s8) {
213 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8;
216 string Concat9(
const char* s1,
const char* s2,
const char* s3,
217 const char* s4,
const char* s5,
const char* s6,
218 const char* s7,
const char* s8,
const char* s9) {
219 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9;
222 string Concat10(
const char* s1,
const char* s2,
const char* s3,
223 const char* s4,
const char* s5,
const char* s6,
224 const char* s7,
const char* s8,
const char* s9,
226 return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10;
249 const char* p =
"Hello";
260TEST(InvokeTest, FunctionThatTakes4Arguments) {
262 EXPECT_EQ(1234,
a.Perform(make_tuple(1000, 200, 30, 4)));
266TEST(InvokeTest, FunctionThatTakes5Arguments) {
268 EXPECT_EQ(12345,
a.Perform(make_tuple(10000, 2000, 300, 40, 5)));
272TEST(InvokeTest, FunctionThatTakes6Arguments) {
274 EXPECT_EQ(123456,
a.Perform(make_tuple(100000, 20000, 3000, 400, 50, 6)));
282TEST(InvokeTest, FunctionThatTakes7Arguments) {
283 Action<string(
const char*,
const char*,
const char*,
const char*,
284 const char*,
const char*,
const char*)>
a =
293TEST(InvokeTest, FunctionThatTakes8Arguments) {
294 Action<string(
const char*,
const char*,
const char*,
const char*,
295 const char*,
const char*,
const char*,
const char*)>
a =
304TEST(InvokeTest, FunctionThatTakes9Arguments) {
305 Action<string(
const char*,
const char*,
const char*,
const char*,
306 const char*,
const char*,
const char*,
const char*,
315TEST(InvokeTest, FunctionThatTakes10Arguments) {
316 Action<string(
const char*,
const char*,
const char*,
const char*,
317 const char*,
const char*,
const char*,
const char*,
327TEST(InvokeTest, FunctionWithUnusedParameters) {
328 Action<int(
int,
int,
double,
const string&)> a1 =
332 tuple<int, int, double, const string&>(10, 2, 5.6,
s)));
334 Action<int(
int,
int,
bool,
int*)> a2 =
336 EXPECT_EQ(23, a2.
Perform(make_tuple(20, 3,
true,
static_cast<int*
>(NULL))));
340TEST(InvokeTest, MethodWithUnusedParameters) {
342 Action<int(
string,
bool,
int,
int)> a1 =
346 Action<int(
char,
double,
int,
int)> a2 =
358TEST(InvokeTest, FunctionWithCompatibleType) {
385 tuple<const string&, char>(
s,
'o')));
396TEST(InvokeMethodTest, MethodThatTakes4Arguments) {
399 EXPECT_EQ(1357,
a.Perform(make_tuple(1000, 200, 30, 4)));
403TEST(InvokeMethodTest, MethodThatTakes5Arguments) {
406 EXPECT_EQ(12345,
a.Perform(make_tuple(10000, 2000, 300, 40, 5)));
410TEST(InvokeMethodTest, MethodThatTakes6Arguments) {
412 Action<int(
int,
int,
int,
int,
int,
int)>
a =
414 EXPECT_EQ(123456,
a.Perform(make_tuple(100000, 20000, 3000, 400, 50, 6)));
418TEST(InvokeMethodTest, MethodThatTakes7Arguments) {
420 Action<string(
const char*,
const char*,
const char*,
const char*,
421 const char*,
const char*,
const char*)>
a =
430TEST(InvokeMethodTest, MethodThatTakes8Arguments) {
432 Action<string(
const char*,
const char*,
const char*,
const char*,
433 const char*,
const char*,
const char*,
const char*)>
a =
442TEST(InvokeMethodTest, MethodThatTakes9Arguments) {
444 Action<string(
const char*,
const char*,
const char*,
const char*,
445 const char*,
const char*,
const char*,
const char*,
454TEST(InvokeMethodTest, MethodThatTakes10Arguments) {
456 Action<string(
const char*,
const char*,
const char*,
const char*,
457 const char*,
const char*,
const char*,
const char*,
467TEST(InvokeMethodTest, MethodWithCompatibleType) {
469 Action<long(
int,
short,
char,
bool)>
a =
487TEST(ReturnArgActionTest, WorksForOneArgIntArg0) {
488 const Action<int(
int)>
a = ReturnArg<0>();
492TEST(ReturnArgActionTest, WorksForMultiArgBoolArg0) {
493 const Action<bool(
bool,
bool,
bool)>
a = ReturnArg<0>();
497TEST(ReturnArgActionTest, WorksForMultiArgStringArg2) {
498 const Action<string(
int,
int,
string,
int)>
a = ReturnArg<2>();
499 EXPECT_EQ(
"seven",
a.Perform(make_tuple(5, 6,
string(
"seven"), 8)));
502TEST(SaveArgActionTest, WorksForSameType) {
509TEST(SaveArgActionTest, WorksForCompatibleType) {
511 const Action<void(
bool,
char)> a1 = SaveArg<1>(&
result);
512 a1.
Perform(make_tuple(
true,
'a'));
516TEST(SaveArgPointeeActionTest, WorksForSameType) {
519 const Action<void(
const int*)> a1 = SaveArgPointee<0>(&
result);
524TEST(SaveArgPointeeActionTest, WorksForCompatibleType) {
527 const Action<void(
bool,
char*)> a1 = SaveArgPointee<1>(&
result);
532TEST(SaveArgPointeeActionTest, WorksForLinkedPtr) {
540TEST(SetArgRefereeActionTest, WorksForSameType) {
542 const Action<void(
int&)> a1 = SetArgReferee<0>(1);
547TEST(SetArgRefereeActionTest, WorksForCompatibleType) {
549 const Action<void(
int,
int&)> a1 = SetArgReferee<1>(
'a');
554TEST(SetArgRefereeActionTest, WorksWithExtraArguments) {
556 const Action<void(
bool,
int,
int&,
const char*)> a1 = SetArgReferee<2>(
'a');
557 a1.
Perform(tuple<bool, int, int&, const char*>(
true, 0,
value,
"hi"));
579TEST(DeleteArgActionTest, OneArg) {
580 bool is_deleted =
false;
588TEST(DeleteArgActionTest, TenArgs) {
589 bool is_deleted =
false;
591 const Action<void(
bool,
int,
int,
const char*,
bool,
594 a1.
Perform(make_tuple(
true, 5, 6,
CharPtr(
"hi"),
false, 7, 8, 9, 10, t));
598#if GTEST_HAS_EXCEPTIONS
600TEST(ThrowActionTest, ThrowsGivenExceptionInVoidFunction) {
601 const Action<void(
int n)>
a = Throw(
'a');
607TEST(ThrowActionTest, ThrowsGivenExceptionInNonVoidFunction) {
608 const Action<double(
char ch)>
a = Throw(MyException());
612TEST(ThrowActionTest, ThrowsGivenExceptionInNullaryFunction) {
613 const Action<double()>
a = Throw(MyException());
621TEST(SetArrayArgumentTest, SetsTheNthArray) {
622 typedef void MyFunction(
bool,
int*,
char*);
623 int numbers[] = { 1, 2, 3 };
630 a.Perform(make_tuple(
true, pn, pch));
641 std::string letters =
"abc";
642 a = SetArrayArgument<2>(letters.begin(), letters.end());
643 std::fill_n(n, 4, 0);
644 std::fill_n(ch, 4,
'\0');
645 a.Perform(make_tuple(
true, pn, pch));
657TEST(SetArrayArgumentTest, SetsTheNthArrayWithEmptyRange) {
658 typedef void MyFunction(
bool,
int*);
659 int numbers[] = { 1, 2, 3 };
664 a.Perform(make_tuple(
true, pn));
673TEST(SetArrayArgumentTest, SetsTheNthArrayWithConvertibleType) {
674 typedef void MyFunction(
bool,
int*);
675 char chars[] = { 97, 98, 99 };
678 int codes[4] = { 111, 222, 333, 444 };
680 a.Perform(make_tuple(
true, pcodes));
688TEST(SetArrayArgumentTest, SetsTheNthArrayWithIteratorArgument) {
689 typedef void MyFunction(
bool, std::back_insert_iterator<std::string>);
690 std::string letters =
"abc";
694 a.Perform(make_tuple(
true, back_inserter(
s)));
698TEST(ReturnPointeeTest, Works) {
700 const Action<int()>
a = ReturnPointee(&n);
#define s(x, c)
Definition aesb.c:47
cryptonote::block b
Definition block.cpp:40
Definition gmock-actions.h:327
Definition gmock-actions.h:355
Result Perform(const ArgumentTuple &args) const
Definition gmock-actions.h:387
Definition gmock-more-actions_test.cc:563
DeletionTester(bool *is_deleted)
Definition gmock-more-actions_test.cc:565
bool * is_deleted_
Definition gmock-more-actions_test.cc:576
~DeletionTester()
Definition gmock-more-actions_test.cc:571
Definition gmock-more-actions_test.cc:180
string Binary(const string &str, char c) const
Definition gmock-more-actions_test.cc:188
string Concat7(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7)
Definition gmock-more-actions_test.cc:204
int SumOf6(int a, int b, int c, int d, int e, int f)
Definition gmock-more-actions_test.cc:200
int SumOf5(int a, int b, int c, int d, int e)
Definition gmock-more-actions_test.cc:198
short Unary(long x)
Definition gmock-more-actions_test.cc:186
int SumOf4(int a, int b, int c, int d) const
Definition gmock-more-actions_test.cc:192
string Concat8(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7, const char *s8)
Definition gmock-more-actions_test.cc:210
int value_
Definition gmock-more-actions_test.cc:230
string Concat9(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7, const char *s8, const char *s9)
Definition gmock-more-actions_test.cc:216
int SumOfLast2(Unused, Unused, int a, int b) const
Definition gmock-more-actions_test.cc:196
string Concat10(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7, const char *s8, const char *s9, const char *s10)
Definition gmock-more-actions_test.cc:222
Foo()
Definition gmock-more-actions_test.cc:182
int Nullary() const
Definition gmock-more-actions_test.cc:184
int Ternary(int x, bool y, char z)
Definition gmock-more-actions_test.cc:190
Definition gmock-more-actions_test.cc:78
int operator()()
Definition gmock-more-actions_test.cc:80
Definition gmock-more-actions_test.cc:86
void operator()()
Definition gmock-more-actions_test.cc:88
Definition gtest-linked_ptr.h:146
#define EXPECT_EQ(val1, val2)
Definition gtest.h:1922
#define EXPECT_THROW(statement, expected_exception)
Definition gtest.h:1843
#define EXPECT_TRUE(condition)
Definition gtest.h:1859
#define TEST(test_case_name, test_name)
Definition gtest.h:2187
#define EXPECT_FALSE(condition)
Definition gtest.h:1862
Definition gtest-printers_test.cc:126
tuple make_tuple()
Definition gtest-tuple.h:675
Definition gmock-more-actions_test.cc:46
short Short(short n)
Definition gmock-more-actions_test.cc:72
void VoidNullary()
Definition gmock-more-actions_test.cc:84
internal::WithArgsAction< InnerAction, k > WithArg(const InnerAction &action)
Definition gmock-more-actions.h:146
string Concat8(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7, const char *s8)
Definition gmock-more-actions_test.cc:161
int SumOf6(int a, int b, int c, int d, int e, int f)
Definition gmock-more-actions_test.cc:140
void VoidUnary(int)
Definition gmock-more-actions_test.cc:95
const char * CharPtr(const char *s)
Definition gmock-more-actions_test.cc:279
string Concat5(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5)
Definition gmock-more-actions_test.cc:135
int SumOf5(int a, int b, int c, int d, int e)
Definition gmock-more-actions_test.cc:127
int SumOf4(int a, int b, int c, int d)
Definition gmock-more-actions_test.cc:116
string Concat6(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6)
Definition gmock-more-actions_test.cc:150
string Concat7(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7)
Definition gmock-more-actions_test.cc:155
const double g_double
Definition gmock-more-actions_test.cc:99
const char * Plus1(const char *s)
Definition gmock-more-actions_test.cc:93
void VoidFunctionWithFourArguments(char, int, float, double)
Definition gmock-more-actions_test.cc:120
string Concat9(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7, const char *s8, const char *s9)
Definition gmock-more-actions_test.cc:167
string Concat4(const char *s1, const char *s2, const char *s3, const char *s4)
Definition gmock-more-actions_test.cc:122
int SumOfFirst2(int a, int b, Unused, Unused)
Definition gmock-more-actions_test.cc:118
bool Unary(int x)
Definition gmock-more-actions_test.cc:91
bool ByConstRef(const string &s)
Definition gmock-more-actions_test.cc:97
bool g_done
Definition gmock-more-actions_test.cc:83
int Ternary(int x, char y, short z)
Definition gmock-more-actions_test.cc:112
string Concat10(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7, const char *s8, const char *s9, const char *s10)
Definition gmock-more-actions_test.cc:173
internal::WithArgsAction< InnerAction > WithoutArgs(const InnerAction &action)
Definition gmock-more-actions.h:135
string ByNonConstRef(string &s)
Definition gmock-more-actions_test.cc:102
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
Definition gmock-more-actions.h:114
void VoidTernary(int, char, bool)
Definition gmock-more-actions_test.cc:114
int Nullary()
Definition gmock-more-actions_test.cc:76
const char * Binary(const char *input, short n)
Definition gmock-more-actions_test.cc:108
bool ReferencesGlobalDouble(const double &x)
Definition gmock-more-actions_test.cc:100
void VoidBinary(int, char)
Definition gmock-more-actions_test.cc:110
char Char(char ch)
Definition gmock-more-actions_test.cc:73
Definition gmock-actions.h:53
internal::WithArgsAction< InnerAction, k > WithArg(const InnerAction &action)
Definition gmock-more-actions.h:146
const internal::AnythingMatcher _
Definition gmock-matchers.h:3729
internal::IgnoredValue Unused
Definition gmock-actions.h:1046
bool StaticAssertTypeEq()
Definition gtest.h:2150
internal::WithArgsAction< InnerAction > WithoutArgs(const InnerAction &action)
Definition gmock-more-actions.h:135
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
Definition gmock-more-actions.h:114
internal::ReturnAction< R > Return(R value)
Definition gmock-actions.h:1061
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
Definition gmock-more-actions_test.cc:129
int operator()(int a, int b, int c, int d, int e)
Definition gmock-more-actions_test.cc:130
Definition gmock-more-actions_test.cc:144
int operator()(int a, int b, int c, int d, int e, int f)
Definition gmock-more-actions_test.cc:145
Definition gmock-more-actions_test.cc:104
int operator()(bool x)
Definition gmock-more-actions_test.cc:105