36 #include "gmock/gmock-more-actions.h" 41 #include "gmock/gmock.h" 42 #include "gtest/gtest.h" 43 #include "gtest/internal/gtest-linked_ptr.h" 46 namespace gmock_more_actions_test {
53 using testing::tuple_element;
57 using testing::DeleteArg;
60 using testing::ReturnArg;
61 using testing::ReturnPointee;
62 using testing::SaveArg;
63 using testing::SaveArgPointee;
64 using testing::SetArgReferee;
72 inline short Short(
short n) {
return n; }
93 const char*
Plus1(
const char*
s) {
return s + 1; }
108 const char*
Binary(
const char* input,
short n) {
return input + n; }
116 int SumOf4(
int a,
int b,
int c,
int d) {
return a + b + c + d; }
122 string Concat4(
const char* s1,
const char* s2,
const char* s3,
124 return string(s1) + s2 + s3 + s4;
127 int SumOf5(
int a,
int b,
int c,
int d,
int e) {
return a + b + c + d + e; }
131 return a + b + c + d + e;
135 string 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;
150 string 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;
155 string 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;
161 string 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;
167 string 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;
173 string 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;
186 short Unary(
long x) {
return static_cast<short>(value_ +
x); }
188 string Binary(
const string& str,
char c)
const {
return str +
c; }
190 int Ternary(
int x,
bool y,
char z) {
return value_ + x + y*z; }
193 return a + b + c + d + value_;
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";
283 Action<
string(
const char*,
const char*,
const char*,
const char*,
284 const char*,
const char*,
const char*)>
a =
294 Action<
string(
const char*,
const char*,
const char*,
const char*,
295 const char*,
const char*,
const char*,
const char*)>
a =
305 Action<
string(
const char*,
const char*,
const char*,
const char*,
306 const char*,
const char*,
const char*,
const char*,
316 Action<
string(
const char*,
const char*,
const char*,
const char*,
317 const char*,
const char*,
const char*,
const char*,
332 tuple<int, int, double, const string&>(10, 2, 5.6, s)));
385 tuple<const string&, char>(s,
'o')));
396 TEST(InvokeMethodTest, MethodThatTakes4Arguments) {
403 TEST(InvokeMethodTest, MethodThatTakes5Arguments) {
410 TEST(InvokeMethodTest, MethodThatTakes6Arguments) {
418 TEST(InvokeMethodTest, MethodThatTakes7Arguments) {
420 Action<
string(
const char*,
const char*,
const char*,
const char*,
421 const char*,
const char*,
const char*)>
a =
430 TEST(InvokeMethodTest, MethodThatTakes8Arguments) {
432 Action<
string(
const char*,
const char*,
const char*,
const char*,
433 const char*,
const char*,
const char*,
const char*)>
a =
442 TEST(InvokeMethodTest, MethodThatTakes9Arguments) {
444 Action<
string(
const char*,
const char*,
const char*,
const char*,
445 const char*,
const char*,
const char*,
const char*,
454 TEST(InvokeMethodTest, MethodThatTakes10Arguments) {
456 Action<
string(
const char*,
const char*,
const char*,
const char*,
457 const char*,
const char*,
const char*,
const char*,
467 TEST(InvokeMethodTest, MethodWithCompatibleType) {
487 TEST(ReturnArgActionTest, WorksForOneArgIntArg0) {
492 TEST(ReturnArgActionTest, WorksForMultiArgBoolArg0) {
497 TEST(ReturnArgActionTest, WorksForMultiArgStringArg2) {
502 TEST(SaveArgActionTest, WorksForSameType) {
509 TEST(SaveArgActionTest, WorksForCompatibleType) {
516 TEST(SaveArgPointeeActionTest, WorksForSameType) {
524 TEST(SaveArgPointeeActionTest, WorksForCompatibleType) {
532 TEST(SaveArgPointeeActionTest, WorksForLinkedPtr) {
540 TEST(SetArgRefereeActionTest, WorksForSameType) {
543 a1.
Perform(tuple<int&>(value));
547 TEST(SetArgRefereeActionTest, WorksForCompatibleType) {
550 a1.
Perform(tuple<int, int&>(0, value));
554 TEST(SetArgRefereeActionTest, WorksWithExtraArguments) {
557 a1.
Perform(tuple<bool, int, int&, const char*>(
true, 0, value,
"hi"));
566 : is_deleted_(is_deleted) {
568 *is_deleted_ =
false;
579 TEST(DeleteArgActionTest, OneArg) {
580 bool is_deleted =
false;
588 TEST(DeleteArgActionTest, TenArgs) {
589 bool is_deleted =
false;
591 const Action<void(
bool,
int,
int,
const char*,
bool,
598 #if GTEST_HAS_EXCEPTIONS 600 TEST(ThrowActionTest, ThrowsGivenExceptionInVoidFunction) {
607 TEST(ThrowActionTest, ThrowsGivenExceptionInNonVoidFunction) {
612 TEST(ThrowActionTest, ThrowsGivenExceptionInNullaryFunction) {
617 #endif // GTEST_HAS_EXCEPTIONS 621 TEST(SetArrayArgumentTest, SetsTheNthArray) {
623 int numbers[] = { 1, 2, 3 };
642 a = SetArrayArgument<2>(letters.begin(), letters.end());
643 std::fill_n(n, 4, 0);
644 std::fill_n(ch, 4,
'\0');
657 TEST(SetArrayArgumentTest, SetsTheNthArrayWithEmptyRange) {
659 int numbers[] = { 1, 2, 3 };
673 TEST(SetArrayArgumentTest, SetsTheNthArrayWithConvertibleType) {
675 char chars[] = { 97, 98, 99 };
678 int codes[4] = { 111, 222, 333, 444 };
688 TEST(SetArrayArgumentTest, SetsTheNthArrayWithIteratorArgument) {
689 typedef void MyFunction(
bool, std::back_insert_iterator<std::string>);
698 TEST(ReturnPointeeTest, Works) {
TEST(InvokeTest, Nullary)
string Binary(const string &str, char c) const
string Concat7(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7)
void VoidFunctionWithFourArguments(char, int, float, double)
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)
internal::IgnoredValue Unused
void VoidTernary(int, char, bool)
#define EXPECT_THROW(statement, expected_exception)
const char * Binary(const char *input, short n)
string ByNonConstRef(string &s)
int SumOf4(int a, int b, int c, int d)
int operator()(int a, int b, int c, int d, int e)
bool ByConstRef(const string &s)
string Concat4(const char *s1, const char *s2, const char *s3, const char *s4)
int operator()(int a, int b, int c, int d, int e, int f)
#define EXPECT_EQ(val1, val2)
int SumOf6(int a, int b, int c, int d, int e, int f)
int SumOfLast2(Unused, Unused, int a, int b) const
int SumOf5(int a, int b, int c, int d, int e)
internal::WithArgsAction< InnerAction > WithoutArgs(const InnerAction &action)
const char * CharPtr(const char *s)
string Concat7(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7)
int Ternary(int x, bool y, char z)
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)
void VoidBinary(int, char)
boost::variant< DeliverAppData, WriteToSocket, ReportHandshakeSuccess, ReportEarlyHandshakeSuccess, ReportEarlyWriteFailed, ReportError, MutateState, WaitForData, NewCachedPsk > Action
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)
DeletionTester(bool *is_deleted)
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
int SumOf5(int a, int b, int c, int d, int e)
int SumOf6(int a, int b, int c, int d, int e, int f)
string Concat6(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6)
int SumOf4(int a, int b, int c, int d) const
int SumOfFirst2(int a, int b, Unused, Unused)
static const char *const value
#define EXPECT_TRUE(condition)
int Ternary(int x, char y, short z)
Result Perform(const ArgumentTuple &args) const
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)
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)
bool StaticAssertTypeEq()
const internal::AnythingMatcher _
#define EXPECT_FALSE(condition)
internal::WithArgsAction< InnerAction, k > WithArg(const InnerAction &action)
PUSHMI_INLINE_VAR constexpr detail::get_fn< T > get
bool ReferencesGlobalDouble(const double &x)
string Concat5(const char *s1, const char *s2, const char *s3, const char *s4, const char *s5)
const char * Plus1(const char *s)
internal::ReturnAction< R > Return(R value)
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)