102 #if GTEST_HAS_STREAM_REDIRECTION
110 class MockIncomplete {
118 void PrintTo(
const Incomplete&
x, ::std::ostream*
os);
120 TEST(MockMethodTest, CanInstantiateWithIncompleteArgType) {
125 MockIncomplete incomplete;
132 void PrintTo(
const Incomplete& , ::std::ostream*
os) {
139 class NonDefaultConstructible {
141 explicit NonDefaultConstructible(
int ) {}
150 MOCK_METHOD0(ReturnNonDefaultConstructible, NonDefaultConstructible());
169 class ReferenceHoldingMock {
171 ReferenceHoldingMock() {}
173 MOCK_METHOD1(AcceptReference,
void(linked_ptr<MockA>*));
184 #define Method MethodW
191 class MockCC :
public CC {
202 TEST(OnCallSyntaxTest, CompilesWithMethodNameExpandedFromMacro) {
209 TEST(OnCallSyntaxTest, WorksWithMethodNameExpandedFromMacro) {
216 TEST(ExpectCallSyntaxTest, CompilesWithMethodNameExpandedFromMacro) {
223 TEST(ExpectCallSyntaxTest, WorksWithMethodNameExpandedFromMacro) {
229 #undef Method // Done with macro redefinition tests.
233 TEST(OnCallSyntaxTest, EvaluatesFirstArgumentOnce) {
241 TEST(OnCallSyntaxTest, EvaluatesSecondArgumentOnce) {
251 TEST(OnCallSyntaxTest, WithIsOptional) {
261 TEST(OnCallSyntaxTest, WithCanAppearAtMostOnce) {
268 .WillByDefault(
Return(Result()));
269 },
".With() cannot appear more than once in an ON_CALL()");
272 TEST(OnCallSyntaxTest, WillByDefaultIsMandatory) {
281 TEST(OnCallSyntaxTest, WillByDefaultCanAppearAtMostOnce) {
288 },
".WillByDefault() must appear exactly once in an ON_CALL()");
293 TEST(ExpectCallSyntaxTest, EvaluatesFirstArgumentOnce) {
302 TEST(ExpectCallSyntaxTest, EvaluatesSecondArgumentOnce) {
313 TEST(ExpectCallSyntaxTest, WithIsOptional) {
323 TEST(ExpectCallSyntaxTest, WithCanAppearAtMostOnce) {
330 },
".With() cannot appear more than once in an EXPECT_CALL()");
335 TEST(ExpectCallSyntaxTest, WithMustBeFirstClause) {
342 },
".With() must be the first clause in an EXPECT_CALL()");
350 },
".With() must be the first clause in an EXPECT_CALL()");
355 TEST(ExpectCallSyntaxTest, TimesCanBeInferred) {
363 .WillRepeatedly(
Return());
370 TEST(ExpectCallSyntaxTest, TimesCanAppearAtMostOnce) {
377 },
".Times() cannot appear more than once in an EXPECT_CALL()");
383 TEST(ExpectCallSyntaxTest, TimesMustBeBeforeInSequence) {
391 },
".Times() cannot appear after ");
396 TEST(ExpectCallSyntaxTest, InSequenceIsOptional) {
408 TEST(ExpectCallSyntaxTest, InSequenceCanAppearMultipleTimes) {
419 TEST(ExpectCallSyntaxTest, InSequenceMustBeBeforeAfter) {
429 },
".InSequence() cannot appear after ");
434 TEST(ExpectCallSyntaxTest, InSequenceMustBeBeforeWillOnce) {
442 },
".InSequence() cannot appear after ");
447 TEST(ExpectCallSyntaxTest, AfterMustBeBeforeWillOnce) {
455 },
".After() cannot appear after ");
461 TEST(ExpectCallSyntaxTest, WillIsOptional) {
472 TEST(ExpectCallSyntaxTest, WillCanAppearMultipleTimes) {
482 TEST(ExpectCallSyntaxTest, WillMustBeBeforeWillRepeatedly) {
489 },
".WillOnce() cannot appear after ");
494 TEST(ExpectCallSyntaxTest, WillRepeatedlyIsOptional) {
501 .WillRepeatedly(
Return());
508 TEST(ExpectCallSyntaxTest, WillRepeatedlyCannotAppearMultipleTimes) {
514 .WillRepeatedly(
Return());
515 },
".WillRepeatedly() cannot appear more than once in an "
519 TEST(ExpectCallSyntaxTest, WillRepeatedlyMustBeBeforeRetiresOnSaturation) {
524 .RetiresOnSaturation()
525 .WillRepeatedly(
Return());
526 },
".WillRepeatedly() cannot appear after ");
529 TEST(ExpectCallSyntaxTest, RetiresOnSaturationIsOptional) {
534 .RetiresOnSaturation();
540 TEST(ExpectCallSyntaxTest, RetiresOnSaturationCannotAppearMultipleTimes) {
545 .RetiresOnSaturation()
546 .RetiresOnSaturation();
547 },
".RetiresOnSaturation() cannot appear more than once");
552 TEST(ExpectCallSyntaxTest, DefaultCardinalityIsOnce) {
561 },
"to be called once");
567 },
"to be called once");
570 #if GTEST_HAS_STREAM_REDIRECTION
574 TEST(ExpectCallSyntaxTest, DoesNotWarnOnAdequateActionCount) {
586 .WillRepeatedly(
Return(1));
599 .WillRepeatedly(
Return(2));
610 TEST(ExpectCallSyntaxTest, WarnsOnTooManyActions) {
627 .RetiresOnSaturation();
633 .WillRepeatedly(
Return(1));
637 .WillRepeatedly(
Return(2));
646 "Too many actions specified in EXPECT_CALL(b, DoB())...\n"
647 "Expected to be never called, but has 1 WillOnce().",
651 "Too many actions specified in EXPECT_CALL(b, DoB())...\n"
652 "Expected to be called at most once, "
653 "but has 2 WillOnce()s.",
657 "Too many actions specified in EXPECT_CALL(b, DoB(1))...\n"
658 "Expected to be called once, but has 2 WillOnce()s.",
662 "Too many actions specified in EXPECT_CALL(b, DoB())...\n"
663 "Expected to be never called, but has 0 WillOnce()s "
664 "and a WillRepeatedly().",
668 "Too many actions specified in EXPECT_CALL(b, DoB(2))...\n"
669 "Expected to be called once, but has 1 WillOnce() "
670 "and a WillRepeatedly().",
676 TEST(ExpectCallSyntaxTest, WarnsOnTooFewActions) {
688 "Too few actions specified in EXPECT_CALL(b, DoB())...\n"
689 "Expected to be called between 2 and 3 times, "
690 "but has only 1 WillOnce().",
695 #endif // GTEST_HAS_STREAM_REDIRECTION
701 TEST(OnCallTest, TakesBuiltInDefaultActionWhenNoOnCall) {
710 TEST(OnCallTest, TakesBuiltInDefaultActionWhenNoOnCallMatches) {
713 .WillByDefault(
Return(1));
720 TEST(OnCallTest, PicksLastMatchingOnCall) {
723 .WillByDefault(
Return(3));
725 .WillByDefault(
Return(2));
727 .WillByDefault(
Return(1));
736 TEST(ExpectCallTest, AllowsAnyCallWhenNoSpec) {
749 TEST(ExpectCallTest, PicksLastMatchingExpectCall) {
752 .WillRepeatedly(
Return(2));
754 .WillRepeatedly(
Return(1));
760 TEST(ExpectCallTest, CatchesTooFewCalls) {
767 },
"Actual function call count doesn't match EXPECT_CALL(b, DoB(5))...\n"
768 " Expected: to be called at least twice\n"
769 " Actual: called once - unsatisfied and active");
774 TEST(ExpectCallTest, InfersCardinalityWhenThereIsNoWillRepeatedly) {
792 },
"to be called twice");
806 TEST(ExpectCallTest, InfersCardinality1WhenThereIsWillRepeatedly) {
811 .WillRepeatedly(
Return(2));
820 .WillRepeatedly(
Return(2));
831 .WillRepeatedly(
Return(2));
832 },
"to be called at least once");
837 TEST(ExpectCallTest, NthMatchTakesNthAction) {
851 TEST(ExpectCallTest, TakesRepeatedActionWhenWillListIsExhausted) {
855 .WillRepeatedly(
Return(2));
862 #if GTEST_HAS_STREAM_REDIRECTION
866 TEST(ExpectCallTest, TakesDefaultActionWhenWillListIsExhausted) {
888 HasSubstr(
"Actions ran out in EXPECT_CALL(b, DoB())...\n"
889 "Called 3 times, but only 2 WillOnce()s are specified"
890 " - returning default value."));
892 HasSubstr(
"Actions ran out in EXPECT_CALL(b, DoB())...\n"
893 "Called 4 times, but only 2 WillOnce()s are specified"
894 " - returning default value."));
897 TEST(FunctionMockerMessageTest, ReportsExpectCallLocationForExhausedActions) {
911 TEST(FunctionMockerMessageTest,
912 ReportsDefaultActionLocationOfUninterestingCallsForNaggyMock) {
924 #endif // GTEST_HAS_STREAM_REDIRECTION
927 TEST(UninterestingCallTest, DoesDefaultAction) {
932 .WillByDefault(
Return(
true));
942 TEST(UnexpectedCallTest, DoesDefaultAction) {
947 .WillByDefault(
Return(
true));
952 "Unexpected mock function call");
962 "Unexpected mock function call");
968 TEST(UnexpectedCallTest, GeneratesFailureForVoidFunction) {
978 "Unexpected mock function call - returning directly.\n"
979 " Function call: DoA(9)\n"
980 "Google Mock tried the following 1 expectation, but it didn't match:");
983 " Expected arg #0: is equal to 1\n"
985 " Expected: to be called once\n"
986 " Actual: called once - saturated and active");
995 "Unexpected mock function call - returning directly.\n"
996 " Function call: DoA(2)\n"
997 "Google Mock tried the following 2 expectations, but none matched:");
1000 "tried expectation #0: EXPECT_CALL(a2, DoA(1))...\n"
1001 " Expected arg #0: is equal to 1\n"
1003 " Expected: to be called once\n"
1004 " Actual: called once - saturated and active");
1007 "tried expectation #1: EXPECT_CALL(a2, DoA(3))...\n"
1008 " Expected arg #0: is equal to 3\n"
1010 " Expected: to be called once\n"
1011 " Actual: never called - unsatisfied and active");
1017 TEST(UnexpectedCallTest, GeneartesFailureForNonVoidFunction) {
1023 "Unexpected mock function call - returning default value.\n"
1024 " Function call: DoB(2)\n"
1026 "Google Mock tried the following 1 expectation, but it didn't match:");
1029 " Expected arg #0: is equal to 1\n"
1031 " Expected: to be called once\n"
1032 " Actual: called once - saturated and active");
1037 TEST(UnexpectedCallTest, RetiredExpectation) {
1040 .RetiresOnSaturation();
1045 " Expected: the expectation is active\n"
1046 " Actual: it is retired");
1051 TEST(UnexpectedCallTest, UnmatchedArguments) {
1057 " Expected arg #0: is equal to 1\n"
1064 TEST(UnexpectedCallTest, UnsatisifiedPrerequisites) {
1075 .InSequence(s1, s2);
1096 "(?s)the following immediate pre-requisites are not satisfied:\n"
1097 ".*: pre-requisite #0\n"
1098 ".*: pre-requisite #1"));
1099 #elif GTEST_USES_POSIX_RE
1103 "the following immediate pre-requisites are not satisfied:\n"
1104 "(.|\n)*: pre-requisite #0\n"
1105 "(.|\n)*: pre-requisite #1"));
1109 "the following immediate pre-requisites are not satisfied:"));
1112 #endif // GTEST_USES_PCRE
1119 TEST(UndefinedReturnValueTest,
1120 ReturnValueIsMandatoryWhenNotDefaultConstructible) {
1125 #if GTEST_HAS_EXCEPTIONS
1134 TEST(ExcessiveCallTest, DoesDefaultAction) {
1139 .WillByDefault(
Return(
true));
1142 bool result =
false;
1144 "Mock function called more times than expected");
1154 "Mock function called more times than expected");
1160 TEST(ExcessiveCallTest, GeneratesFailureForVoidFunction) {
1166 "Mock function called more times than expected - returning directly.\n"
1167 " Function call: DoA(9)\n"
1168 " Expected: to be never called\n"
1169 " Actual: called once - over-saturated and active");
1174 TEST(ExcessiveCallTest, GeneratesFailureForNonVoidFunction) {
1180 "Mock function called more times than expected - "
1181 "returning default value.\n"
1182 " Function call: DoB(2)\n"
1184 " Expected: to be called once\n"
1185 " Actual: called twice - over-saturated and active");
1190 TEST(InSequenceTest, AllExpectationInScopeAreInSequence) {
1201 },
"Unexpected mock function call");
1207 TEST(InSequenceTest, NestedInSequence) {
1224 },
"Unexpected mock function call");
1230 TEST(InSequenceTest, ExpectationsOutOfScopeAreNotAffected) {
1242 },
"Unexpected mock function call");
1250 TEST(SequenceTest, AnyOrderIsOkByDefault) {
1278 TEST(SequenceTest, CallsMustBeInStrictOrderWhenSaidSo1) {
1281 .WillByDefault(
Return(Result()));
1302 TEST(SequenceTest, CallsMustBeInStrictOrderWhenSaidSo2) {
1305 .WillByDefault(
Return(Result()));
1323 PartialOrderTest() {
1325 .WillByDefault(
Return(Result()));
1349 TEST_F(PartialOrderTest, CallsMustConformToSpecifiedDag1) {
1360 TEST_F(PartialOrderTest, CallsMustConformToSpecifiedDag2) {
1370 TEST_F(PartialOrderTest, CallsMustConformToSpecifiedDag3) {
1380 TEST_F(PartialOrderTest, CallsMustConformToSpecifiedDag4) {
1390 TEST(SequenceTest, Retirement) {
1398 .RetiresOnSaturation();
1409 TEST(ExpectationTest, ConstrutorsWork) {
1419 Expectation e5 =
EXPECT_CALL(a, DoA(5)).InSequence(s);
1421 Expectation e6 =
EXPECT_CALL(a, DoA(6)).After(e2);
1424 Expectation e9 =
EXPECT_CALL(a, DoA(9)).RetiresOnSaturation();
1426 Expectation e10 = e2;
1441 TEST(ExpectationTest, AssignmentWorks) {
1456 TEST(ExpectationSetTest, MemberTypesAreCorrect) {
1457 ::testing::StaticAssertTypeEq<Expectation, ExpectationSet::value_type>();
1460 TEST(ExpectationSetTest, ConstructorsWork) {
1464 const Expectation e2;
1467 ExpectationSet es3 = e1;
1468 ExpectationSet es4(e1);
1469 ExpectationSet es5 = e2;
1470 ExpectationSet es6(e2);
1471 ExpectationSet es7 = es2;
1489 TEST(ExpectationSetTest, AssignmentWorks) {
1491 ExpectationSet es2 = Expectation();
1499 TEST(ExpectationSetTest, InsertionWorks) {
1511 ExpectationSet::const_iterator it1 = es1.begin();
1512 ExpectationSet::const_iterator it2 = it1;
1519 TEST(ExpectationSetTest, SizeWorks) {
1523 es += Expectation();
1533 TEST(ExpectationSetTest, IsEnumerable) {
1537 es += Expectation();
1538 ExpectationSet::const_iterator
it = es.begin();
1547 TEST(AfterTest, SucceedsWhenPartialOrderIsSatisfied) {
1560 TEST(AfterTest, SucceedsWhenTotalOrderIsSatisfied) {
1578 TEST(AfterTest, CallsMustBeInStrictOrderWhenSpecifiedSo1) {
1600 TEST(AfterTest, CallsMustBeInStrictOrderWhenSpecifiedSo2) {
1624 TEST(AfterTest, CallsMustSatisfyPartialOrderWhenSpecifiedSo) {
1627 .WillByDefault(
Return(Result()));
1646 TEST(AfterTest, CallsMustSatisfyPartialOrderWhenSpecifiedSo2) {
1667 TEST(AfterTest, CanBeUsedWithInSequence) {
1686 TEST(AfterTest, CanBeCalledManyTimes) {
1703 TEST(AfterTest, AcceptsUpToFiveArguments) {
1711 .After(e1, e2, e3, es1, es2);
1722 TEST(AfterTest, AcceptsDuplicatedInput) {
1725 .WillByDefault(
Return(Result()));
1736 .After(e1, e2, es, e1);
1749 TEST(AfterTest, ChangesToExpectationSetHaveNoEffectAfterwards) {
1766 TEST(DeletingMockEarlyTest, Success1) {
1767 MockB*
const b1 =
new MockB;
1768 MockA*
const a =
new MockA;
1769 MockB*
const b2 =
new MockB;
1777 .WillRepeatedly(
Return(
true));
1780 .WillRepeatedly(
Return(2));
1794 TEST(DeletingMockEarlyTest, Success2) {
1795 MockB*
const b1 =
new MockB;
1796 MockA*
const a =
new MockA;
1797 MockB*
const b2 =
new MockB;
1807 .WillRepeatedly(
Return(2));
1822 # pragma warning(push)
1823 # pragma warning(disable:4100)
1829 # pragma warning(pop)
1832 TEST(DeletingMockEarlyTest, CanDeleteSelfInActionReturningVoid) {
1833 MockA*
const a =
new MockA;
1838 TEST(DeletingMockEarlyTest, CanDeleteSelfInActionReturningValue) {
1839 MockA*
const a =
new MockA;
1842 a->ReturnResult(42);
1846 TEST(DeletingMockEarlyTest, Failure1) {
1847 MockB*
const b1 =
new MockB;
1848 MockA*
const a =
new MockA;
1849 MockB*
const b2 =
new MockB;
1859 .WillRepeatedly(
Return(2));
1865 },
"Unexpected mock function call");
1872 TEST(DeletingMockEarlyTest, Failure2) {
1873 MockB*
const b1 =
new MockB;
1874 MockA*
const a =
new MockA;
1875 MockB*
const b2 =
new MockB;
1887 "Actual: never called");
1889 "Unexpected mock function call");
1891 "Unexpected mock function call");
1896 class EvenNumberCardinality :
public CardinalityInterface {
1899 virtual bool IsSatisfiedByCallCount(
int call_count)
const {
1900 return call_count % 2 == 0;
1904 virtual bool IsSaturatedByCallCount(
int )
const {
1909 virtual void DescribeTo(::std::ostream*
os)
const {
1910 *os <<
"called even number of times";
1914 Cardinality EvenNumber() {
1915 return Cardinality(
new EvenNumberCardinality);
1918 TEST(ExpectationBaseTest,
1919 AllPrerequisitesAreSatisfiedWorksForNonMonotonicCardinality) {
1920 MockA* a =
new MockA;
1924 .Times(EvenNumber())
1944 inline void operator<<(::std::ostream&
os,
const Printable&) {
1948 struct Unprintable {
1949 Unprintable() :
value(0) {}
1957 MOCK_METHOD6(VoidMethod,
void(
bool cond,
int n,
string s,
void*
p,
1958 const Printable& x, Unprintable y));
1967 VerboseFlagPreservingFixture()
1973 const string saved_verbose_flag_;
1978 #if GTEST_HAS_STREAM_REDIRECTION
1983 TEST(FunctionCallMessageTest,
1984 UninterestingCallOnNaggyMockGeneratesNoStackTraceWhenVerboseWarning) {
1988 c.VoidMethod(
false, 5,
"Hi", NULL, Printable(), Unprintable());
1997 TEST(FunctionCallMessageTest,
1998 UninterestingCallOnNaggyMockGeneratesFyiWithStackTraceWhenVerboseInfo) {
2002 c.VoidMethod(
false, 5,
"Hi", NULL, Printable(), Unprintable());
2028 TEST(FunctionCallMessageTest,
2029 UninterestingCallOnNaggyMockPrintsArgumentsAndReturnValue) {
2037 "Uninteresting mock function call - returning default value.\n"
2038 " Function call: DoB()\n"
2039 " Returns: 0\n", output1.c_str());
2045 c.VoidMethod(
false, 5,
"Hi", NULL, Printable(), Unprintable());
2049 "Uninteresting mock function call - returning directly\\.\n"
2050 " Function call: VoidMethod"
2051 "\\(false, 5, \"Hi\", NULL, @.+ "
2052 "Printable, 4-byte object <00-00 00-00>\\)"));
2058 class GMockVerboseFlagTest :
public VerboseFlagPreservingFixture {
2064 void VerifyOutput(
const std::string& output,
bool should_print,
2065 const string& expected_substring,
2066 const string& function_name) {
2075 static_cast<void>(function_name);
2083 void TestExpectedCall(
bool should_print) {
2095 "Mock function call matches EXPECT_CALL(a, DoA(5))...\n"
2096 " Function call: DoA(5)\n"
2106 "Mock function call matches EXPECT_CALL(a, Binary(_, 1))...\n"
2107 " Function call: Binary(2, 1)\n"
2114 void TestUninterestingCallOnNaggyMock(
bool should_print) {
2117 "NOTE: You can safely ignore the above warning unless this "
2118 "call should not happen. Do not suppress it by blindly adding "
2119 "an EXPECT_CALL() if you don't mean to enforce the call. "
2120 "See https://github.com/google/googletest/blob/master/googlemock/docs/CookBook.md#"
2121 "knowing-when-to-expect for details.";
2129 "\nGMOCK WARNING:\n"
2130 "Uninteresting mock function call - returning directly.\n"
2131 " Function call: DoA(5)\n" +
2141 "\nGMOCK WARNING:\n"
2142 "Uninteresting mock function call - returning default value.\n"
2143 " Function call: Binary(2, 1)\n"
2144 " Returns: false\n" +
2152 TEST_F(GMockVerboseFlagTest, Info) {
2154 TestExpectedCall(
true);
2155 TestUninterestingCallOnNaggyMock(
true);
2160 TEST_F(GMockVerboseFlagTest, Warning) {
2162 TestExpectedCall(
false);
2163 TestUninterestingCallOnNaggyMock(
true);
2170 TestExpectedCall(
false);
2171 TestUninterestingCallOnNaggyMock(
false);
2176 TEST_F(GMockVerboseFlagTest, InvalidFlagIsTreatedAsWarning) {
2178 TestExpectedCall(
false);
2179 TestUninterestingCallOnNaggyMock(
true);
2182 #endif // GTEST_HAS_STREAM_REDIRECTION
2187 class PrintMeNot {};
2189 void PrintTo(PrintMeNot , ::std::ostream* ) {
2190 ADD_FAILURE() <<
"Google Mock is printing a value that shouldn't be "
2191 <<
"printed even to an internal buffer.";
2194 class LogTestHelper {
2204 class GMockLogTest :
public VerboseFlagPreservingFixture {
2206 LogTestHelper helper_;
2209 TEST_F(GMockLogTest, DoesNotPrintGoodCallInternallyIfVerbosityIsWarning) {
2212 .WillOnce(
Return(PrintMeNot()));
2213 helper_.Foo(PrintMeNot());
2216 TEST_F(GMockLogTest, DoesNotPrintGoodCallInternallyIfVerbosityIsError) {
2219 .WillOnce(
Return(PrintMeNot()));
2220 helper_.Foo(PrintMeNot());
2223 TEST_F(GMockLogTest, DoesNotPrintWarningInternallyIfVerbosityIsError) {
2226 .WillByDefault(
Return(PrintMeNot()));
2227 helper_.Foo(PrintMeNot());
2232 TEST(AllowLeakTest, AllowsLeakingUnusedMockObject) {
2233 MockA* a =
new MockA;
2237 TEST(AllowLeakTest, CanBeCalledBeforeOnCall) {
2238 MockA* a =
new MockA;
2244 TEST(AllowLeakTest, CanBeCalledAfterOnCall) {
2245 MockA* a =
new MockA;
2250 TEST(AllowLeakTest, CanBeCalledBeforeExpectCall) {
2251 MockA* a =
new MockA;
2257 TEST(AllowLeakTest, CanBeCalledAfterExpectCall) {
2258 MockA* a =
new MockA;
2263 TEST(AllowLeakTest, WorksWhenBothOnCallAndExpectCallArePresent) {
2264 MockA* a =
new MockA;
2272 TEST(VerifyAndClearExpectationsTest, NoMethodHasExpectations) {
2274 ASSERT_TRUE(Mock::VerifyAndClearExpectations(&b));
2285 TEST(VerifyAndClearExpectationsTest, SomeMethodsHaveExpectationsAndSucceed) {
2290 ASSERT_TRUE(Mock::VerifyAndClearExpectations(&b));
2301 TEST(VerifyAndClearExpectationsTest, SomeMethodsHaveExpectationsAndFail) {
2307 "Actual: never called");
2318 TEST(VerifyAndClearExpectationsTest, AllMethodsHaveExpectations) {
2326 ASSERT_TRUE(Mock::VerifyAndClearExpectations(&b));
2336 TEST(VerifyAndClearExpectationsTest, AMethodHasManyExpectations) {
2345 "Actual: never called");
2356 TEST(VerifyAndClearExpectationsTest, CanCallManyTimes) {
2360 Mock::VerifyAndClearExpectations(&b);
2365 Mock::VerifyAndClearExpectations(&b);
2366 Mock::VerifyAndClearExpectations(&b);
2376 TEST(VerifyAndClearTest, NoMethodHasDefaultActions) {
2379 Mock::VerifyAndClear(&b);
2385 TEST(VerifyAndClearTest, SomeMethodsHaveDefaultActions) {
2388 .WillByDefault(
Return(1));
2390 Mock::VerifyAndClear(&b);
2398 TEST(VerifyAndClearTest, AllMethodsHaveDefaultActions) {
2401 .WillByDefault(
Return(1));
2403 .WillByDefault(
Return(2));
2405 Mock::VerifyAndClear(&b);
2416 TEST(VerifyAndClearTest, AMethodHasManyDefaultActions) {
2419 .WillByDefault(
Return(1));
2421 .WillByDefault(
Return(2));
2423 Mock::VerifyAndClear(&b);
2433 TEST(VerifyAndClearTest, CanCallManyTimes) {
2436 .WillByDefault(
Return(1));
2437 Mock::VerifyAndClear(&b);
2438 Mock::VerifyAndClear(&b);
2441 .WillByDefault(
Return(1));
2442 Mock::VerifyAndClear(&b);
2449 TEST(VerifyAndClearTest, Success) {
2452 .WillByDefault(
Return(1));
2467 TEST(VerifyAndClearTest, Failure) {
2470 .WillByDefault(
Return(1));
2477 "Actual: never called");
2491 .WillByDefault(
Return(1));
2509 TEST(VerifyAndClearTest, CanSetDefaultActionsAndExpectationsAfterwards) {
2512 .WillByDefault(
Return(1));
2517 Mock::VerifyAndClear(&b);
2522 .WillByDefault(
Return(4));
2530 TEST(VerifyAndClearTest, DoesNotAffectOtherMockObjects) {
2536 .WillByDefault(
Return(
true));
2539 .WillOnce(
Return(
false));
2542 .WillByDefault(
Return(1));
2547 .WillByDefault(
Return(3));
2551 Mock::VerifyAndClear(&b2);
2562 TEST(VerifyAndClearTest,
2563 DestroyingChainedMocksDoesNotDeadlockThroughExpectations) {
2564 linked_ptr<MockA>
a(
new MockA);
2565 ReferenceHoldingMock test_mock;
2569 .WillRepeatedly(SetArgPointee<0>(a));
2582 TEST(VerifyAndClearTest,
2583 DestroyingChainedMocksDoesNotDeadlockThroughDefaultAction) {
2584 linked_ptr<MockA>
a(
new MockA);
2585 ReferenceHoldingMock test_mock;
2588 ON_CALL(test_mock, AcceptReference(
_))
2589 .WillByDefault(SetArgPointee<0>(a));
2607 TEST(SynchronizationTest, CanCallMockMethodInAction) {
2612 &MockC::NonVoidMethod)));
2615 .WillOnce(
Invoke(&a, &MockA::DoA))
2616 .RetiresOnSaturation();
2631 #if GMOCK_RENAME_MAIN
2632 int gmock_main(
int argc,
char **argv) {
2635 #endif // GMOCK_RENAME_MAIN