aboutsummaryrefslogtreecommitdiffstats
path: root/test/gmock-actions_test.cc
diff options
context:
space:
mode:
authorzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2010-07-03 00:16:42 +0000
committerzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2010-07-03 00:16:42 +0000
commite3bd0981ca06e682bcd03659286d7a3267c4d999 (patch)
treef5d9cad74e0398f6b18613220b5c7b0c52464a0d /test/gmock-actions_test.cc
parent02c1505ebfaadbc34b4cb85546796521d6f0e634 (diff)
downloadgoogletest-e3bd0981ca06e682bcd03659286d7a3267c4d999.tar.gz
googletest-e3bd0981ca06e682bcd03659286d7a3267c4d999.tar.bz2
googletest-e3bd0981ca06e682bcd03659286d7a3267c4d999.zip
Implements ReturnPointee() and ReturnRefOfCopy().
Diffstat (limited to 'test/gmock-actions_test.cc')
-rw-r--r--test/gmock-actions_test.cc25
1 files changed, 25 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 {};