diff options
author | zhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386> | 2009-03-03 06:44:08 +0000 |
---|---|---|
committer | zhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386> | 2009-03-03 06:44:08 +0000 |
commit | 6f14769e86f17a9997809ee2a9c149b57fdc4b21 (patch) | |
tree | 493eb0995f1a9448641c2aaee87d464b6b601f5e /test | |
parent | 652540a278e56528e576f9ea77515f386698a326 (diff) | |
download | googletest-6f14769e86f17a9997809ee2a9c149b57fdc4b21.tar.gz googletest-6f14769e86f17a9997809ee2a9c149b57fdc4b21.tar.bz2 googletest-6f14769e86f17a9997809ee2a9c149b57fdc4b21.zip |
Allows a mock object to delete itself in an action. By Simon Bowden.
Diffstat (limited to 'test')
-rw-r--r-- | test/gmock-spec-builders_test.cc | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/test/gmock-spec-builders_test.cc b/test/gmock-spec-builders_test.cc index 4e330f0b..287a63e2 100644 --- a/test/gmock-spec-builders_test.cc +++ b/test/gmock-spec-builders_test.cc @@ -1304,7 +1304,24 @@ TEST(DeletingMockEarlyTest, Success2) { delete b2; } -// Tests that calls that violates the original spec yield failures. +// Tests that it's OK to delete a mock object itself in its action. + +ACTION_P(Delete, ptr) { delete ptr; } + +TEST(DeletingMockEarlyTest, CanDeleteSelfInActionReturningVoid) { + MockA* const a = new MockA; + EXPECT_CALL(*a, DoA(_)).WillOnce(Delete(a)); + a->DoA(42); // This will cause a to be deleted. +} + +TEST(DeletingMockEarlyTest, CanDeleteSelfInActionReturningValue) { + MockA* const a = new MockA; + EXPECT_CALL(*a, ReturnResult(_)) + .WillOnce(DoAll(Delete(a), Return(Result()))); + a->ReturnResult(42); // This will cause a to be deleted. +} + +// Tests that calls that violate the original spec yield failures. TEST(DeletingMockEarlyTest, Failure1) { MockB* const b1 = new MockB; MockA* const a = new MockA; @@ -1330,7 +1347,7 @@ TEST(DeletingMockEarlyTest, Failure1) { delete b2; } -// Tests that calls that violates the original spec yield failures. +// Tests that calls that violate the original spec yield failures. TEST(DeletingMockEarlyTest, Failure2) { MockB* const b1 = new MockB; MockA* const a = new MockA; |