Change IsNull and NotNull to use ==/!= nullptr in C++11.

Also update gmock_doctor due to Clang wording change.
This commit is contained in:
kosak 2015-04-28 22:36:31 +00:00
parent 5625dd333a
commit 6305ff5a92
3 changed files with 27 additions and 1 deletions

View File

@ -979,7 +979,11 @@ class IsNullMatcher {
template <typename Pointer>
bool MatchAndExplain(const Pointer& p,
MatchResultListener* /* listener */) const {
#if GTEST_LANG_CXX11
return p == nullptr;
#else // GTEST_LANG_CXX11
return GetRawPointer(p) == NULL;
#endif // GTEST_LANG_CXX11
}
void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
@ -995,7 +999,11 @@ class NotNullMatcher {
template <typename Pointer>
bool MatchAndExplain(const Pointer& p,
MatchResultListener* /* listener */) const {
#if GTEST_LANG_CXX11
return p != nullptr;
#else // GTEST_LANG_CXX11
return GetRawPointer(p) != NULL;
#endif // GTEST_LANG_CXX11
}
void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; }

View File

@ -362,7 +362,7 @@ def _MockObjectPointerDiagnoser(msg):
r'which is of non-class type \'(.*::)*(?P<class_name>.+)\*\'')
clang_regex = (_CLANG_FILE_LINE_RE + r'error: member reference type '
r'\'(?P<class_name>.*?) *\' is a pointer; '
r'maybe you meant to use \'->\'\?')
r'(did you mean|maybe you meant) to use \'->\'\?')
diagnosis = """
The first argument to ON_CALL() and EXPECT_CALL() must be a mock *object*,
not a *pointer* to it. Please write '*(%(mock_object)s)' instead of

View File

@ -1025,6 +1025,15 @@ TEST(IsNullTest, ReferenceToConstLinkedPtr) {
EXPECT_FALSE(m.Matches(non_null_p));
}
#if GTEST_LANG_CXX11
TEST(IsNullTest, StdFunction) {
const Matcher<std::function<void()>> m = IsNull();
EXPECT_TRUE(m.Matches(std::function<void()>()));
EXPECT_FALSE(m.Matches([]{}));
}
#endif // GTEST_LANG_CXX11
TEST(IsNullTest, ReferenceToConstScopedPtr) {
const Matcher<const scoped_ptr<double>&> m = IsNull();
const scoped_ptr<double> null_p;
@ -1073,6 +1082,15 @@ TEST(NotNullTest, ReferenceToConstLinkedPtr) {
EXPECT_TRUE(m.Matches(non_null_p));
}
#if GTEST_LANG_CXX11
TEST(NotNullTest, StdFunction) {
const Matcher<std::function<void()>> m = NotNull();
EXPECT_TRUE(m.Matches([]{}));
EXPECT_FALSE(m.Matches(std::function<void()>()));
}
#endif // GTEST_LANG_CXX11
TEST(NotNullTest, ReferenceToConstScopedPtr) {
const Matcher<const scoped_ptr<double>&> m = NotNull();
const scoped_ptr<double> null_p;