diff options
author | zhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386> | 2010-07-03 00:16:42 +0000 |
---|---|---|
committer | zhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386> | 2010-07-03 00:16:42 +0000 |
commit | e3bd0981ca06e682bcd03659286d7a3267c4d999 (patch) | |
tree | f5d9cad74e0398f6b18613220b5c7b0c52464a0d /test | |
parent | 02c1505ebfaadbc34b4cb85546796521d6f0e634 (diff) | |
download | googletest-e3bd0981ca06e682bcd03659286d7a3267c4d999.tar.gz googletest-e3bd0981ca06e682bcd03659286d7a3267c4d999.tar.bz2 googletest-e3bd0981ca06e682bcd03659286d7a3267c4d999.zip |
Implements ReturnPointee() and ReturnRefOfCopy().
Diffstat (limited to 'test')
-rw-r--r-- | test/gmock-actions_test.cc | 25 | ||||
-rw-r--r-- | test/gmock-more-actions_test.cc | 10 |
2 files changed, 35 insertions, 0 deletions
diff --git a/test/gmock-actions_test.cc b/test/gmock-actions_test.cc index 8391e5fe..50cc6f98 100644 --- a/test/gmock-actions_test.cc +++ b/test/gmock-actions_test.cc @@ -68,6 +68,7 @@ using testing::PolymorphicAction; using testing::Return; using testing::ReturnNull; using testing::ReturnRef; +using testing::ReturnRefOfCopy; using testing::SetArgumentPointee; #if !GTEST_OS_WINDOWS_MOBILE @@ -584,6 +585,30 @@ TEST(ReturnRefTest, IsCovariant) { EXPECT_EQ(&derived, &a.Perform(make_tuple())); } +// Tests that ReturnRefOfCopy(v) works for reference types. +TEST(ReturnRefOfCopyTest, WorksForReference) { + int n = 42; + const Action<const int&()> ret = ReturnRefOfCopy(n); + + EXPECT_NE(&n, &ret.Perform(make_tuple())); + EXPECT_EQ(42, ret.Perform(make_tuple())); + + n = 43; + EXPECT_NE(&n, &ret.Perform(make_tuple())); + EXPECT_EQ(42, ret.Perform(make_tuple())); +} + +// Tests that ReturnRefOfCopy(v) is covariant. +TEST(ReturnRefOfCopyTest, IsCovariant) { + Base base; + Derived derived; + Action<Base&()> a = ReturnRefOfCopy(base); + EXPECT_NE(&base, &a.Perform(make_tuple())); + + a = ReturnRefOfCopy(derived); + EXPECT_NE(&derived, &a.Perform(make_tuple())); +} + // Tests that DoDefault() does the default action for the mock method. class MyClass {}; diff --git a/test/gmock-more-actions_test.cc b/test/gmock-more-actions_test.cc index b3b17d33..be7b1273 100644 --- a/test/gmock-more-actions_test.cc +++ b/test/gmock-more-actions_test.cc @@ -57,6 +57,7 @@ using testing::DeleteArg; using testing::Invoke; using testing::Return; using testing::ReturnArg; +using testing::ReturnPointee; using testing::SaveArg; using testing::SetArgReferee; using testing::SetArgumentPointee; @@ -664,5 +665,14 @@ TEST(SetArrayArgumentTest, SetsTheNthArrayWithIteratorArgument) { EXPECT_EQ(letters, s); } +TEST(ReturnPointeeTest, Works) { + int n = 42; + const Action<int()> a = ReturnPointee(&n); + EXPECT_EQ(42, a.Perform(make_tuple())); + + n = 43; + EXPECT_EQ(43, a.Perform(make_tuple())); +} + } // namespace gmock_generated_actions_test } // namespace testing |