From f58eeabbfa2315313c822b9170217f8716ccd5c5 Mon Sep 17 00:00:00 2001 From: "kosak@google.com" Date: Thu, 8 Jan 2015 03:03:09 +0000 Subject: Make ReturnNull() support unique_ptr and shared_ptr. git-svn-id: http://googlemock.googlecode.com/svn/trunk@504 8415998a-534a-0410-bf83-d39667b30386 --- include/gmock/gmock-actions.h | 8 +++++++- test/gmock-actions_test.cc | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/include/gmock/gmock-actions.h b/include/gmock/gmock-actions.h index f92e479..46b7bf9 100644 --- a/include/gmock/gmock-actions.h +++ b/include/gmock/gmock-actions.h @@ -583,12 +583,18 @@ class ReturnAction { // Implements the ReturnNull() action. class ReturnNullAction { public: - // Allows ReturnNull() to be used in any pointer-returning function. + // Allows ReturnNull() to be used in any pointer-returning function. In C++11 + // this is enforced by returning nullptr, and in non-C++11 by asserting a + // pointer type on compile time. template static Result Perform(const ArgumentTuple&) { +#if GTEST_LANG_CXX11 + return nullptr; +#else GTEST_COMPILE_ASSERT_(internal::is_pointer::value, ReturnNull_can_be_used_to_return_a_pointer_only); return NULL; +#endif // GTEST_LANG_CXX11 } }; diff --git a/test/gmock-actions_test.cc b/test/gmock-actions_test.cc index 8089a81..a055194 100644 --- a/test/gmock-actions_test.cc +++ b/test/gmock-actions_test.cc @@ -604,6 +604,18 @@ TEST(ReturnNullTest, WorksInPointerReturningFunction) { EXPECT_TRUE(a2.Perform(make_tuple(true)) == NULL); } +#if GTEST_HAS_STD_UNIQUE_PTR_ +// Tests that ReturnNull() returns NULL for shared_ptr and unique_ptr returning +// functions. +TEST(ReturnNullTest, WorksInSmartPointerReturningFunction) { + const Action()> a1 = ReturnNull(); + EXPECT_TRUE(a1.Perform(make_tuple()) == nullptr); + + const Action(std::string)> a2 = ReturnNull(); + EXPECT_TRUE(a2.Perform(make_tuple("foo")) == nullptr); +} +#endif // GTEST_HAS_STD_UNIQUE_PTR_ + // Tests that ReturnRef(v) works for reference types. TEST(ReturnRefTest, WorksForReference) { const int n = 0; -- cgit v1.2.1