diff options
author | kosak <kosak@google.com> | 2014-11-17 02:04:46 +0000 |
---|---|---|
committer | kosak <kosak@google.com> | 2014-11-17 02:04:46 +0000 |
commit | 7123d831328321e854b78047effe7a57192a764f (patch) | |
tree | b04a49d7e0bc84e20b74fb245d8496a580a8c284 /test/gmock-actions_test.cc | |
parent | 506340a66b7814b741b4b4a032ca4b059086f1bb (diff) | |
download | googletest-7123d831328321e854b78047effe7a57192a764f.tar.gz googletest-7123d831328321e854b78047effe7a57192a764f.tar.bz2 googletest-7123d831328321e854b78047effe7a57192a764f.zip |
Fix gmock Action behaviour when return type is Wrapper
Diffstat (limited to 'test/gmock-actions_test.cc')
-rw-r--r-- | test/gmock-actions_test.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/gmock-actions_test.cc b/test/gmock-actions_test.cc index 28b48f16..8089a81d 100644 --- a/test/gmock-actions_test.cc +++ b/test/gmock-actions_test.cc @@ -509,6 +509,26 @@ TEST(ReturnTest, AcceptsStringLiteral) { EXPECT_EQ("world", a2.Perform(make_tuple())); } +// Test struct which wraps a vector of integers. Used in +// 'SupportsWrapperReturnType' test. +struct IntegerVectorWrapper { + std::vector<int> * v; + IntegerVectorWrapper(std::vector<int>& _v) : v(&_v) {} // NOLINT +}; + +// Tests that Return() works when return type is a wrapper type. +TEST(ReturnTest, SupportsWrapperReturnType) { + // Initialize vector of integers. + std::vector<int> v; + for (int i = 0; i < 5; ++i) v.push_back(i); + + // Return() called with 'v' as argument. The Action will return the same data + // as 'v' (copy) but it will be wrapped in an IntegerVectorWrapper. + Action<IntegerVectorWrapper()> a = Return(v); + const std::vector<int>& result = *(a.Perform(make_tuple()).v); + EXPECT_THAT(result, ::testing::ElementsAre(0, 1, 2, 3, 4)); +} + // Tests that Return(v) is covaraint. struct Base { |