Updates IsNull and NotNull matchers to work with smart pointers.
This commit is contained in:
parent
a63be0bd91
commit
79b83505bc
|
@ -633,12 +633,12 @@ GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Ne, !=, "not equal to");
|
||||||
|
|
||||||
#undef GMOCK_IMPLEMENT_COMPARISON_MATCHER_
|
#undef GMOCK_IMPLEMENT_COMPARISON_MATCHER_
|
||||||
|
|
||||||
// Implements the polymorphic IsNull() matcher, which matches any
|
// Implements the polymorphic IsNull() matcher, which matches any raw or smart
|
||||||
// pointer that is NULL.
|
// pointer that is NULL.
|
||||||
class IsNullMatcher {
|
class IsNullMatcher {
|
||||||
public:
|
public:
|
||||||
template <typename T>
|
template <typename Pointer>
|
||||||
bool Matches(T* p) const { return p == NULL; }
|
bool Matches(const Pointer& p) const { return GetRawPointer(p) == NULL; }
|
||||||
|
|
||||||
void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
|
void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
|
||||||
void DescribeNegationTo(::std::ostream* os) const {
|
void DescribeNegationTo(::std::ostream* os) const {
|
||||||
|
@ -646,12 +646,12 @@ class IsNullMatcher {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Implements the polymorphic NotNull() matcher, which matches any
|
// Implements the polymorphic NotNull() matcher, which matches any raw or smart
|
||||||
// pointer that is not NULL.
|
// pointer that is not NULL.
|
||||||
class NotNullMatcher {
|
class NotNullMatcher {
|
||||||
public:
|
public:
|
||||||
template <typename T>
|
template <typename Pointer>
|
||||||
bool Matches(T* p) const { return p != NULL; }
|
bool Matches(const Pointer& p) const { return GetRawPointer(p) != NULL; }
|
||||||
|
|
||||||
void DescribeTo(::std::ostream* os) const { *os << "is not NULL"; }
|
void DescribeTo(::std::ostream* os) const { *os << "is not NULL"; }
|
||||||
void DescribeNegationTo(::std::ostream* os) const {
|
void DescribeNegationTo(::std::ostream* os) const {
|
||||||
|
|
|
@ -121,6 +121,7 @@ using testing::internal::ValidateMatcherDescription;
|
||||||
using testing::internal::kInvalidInterpolation;
|
using testing::internal::kInvalidInterpolation;
|
||||||
using testing::internal::kPercentInterpolation;
|
using testing::internal::kPercentInterpolation;
|
||||||
using testing::internal::kTupleInterpolation;
|
using testing::internal::kTupleInterpolation;
|
||||||
|
using testing::internal::linked_ptr;
|
||||||
using testing::internal::string;
|
using testing::internal::string;
|
||||||
|
|
||||||
#ifdef GMOCK_HAS_REGEX
|
#ifdef GMOCK_HAS_REGEX
|
||||||
|
@ -715,6 +716,24 @@ TEST(IsNullTest, MatchesNullPointer) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(IsNullTest, LinkedPtr) {
|
||||||
|
const Matcher<linked_ptr<int> > m = IsNull();
|
||||||
|
const linked_ptr<int> null_p;
|
||||||
|
const linked_ptr<int> non_null_p(new int);
|
||||||
|
|
||||||
|
EXPECT_TRUE(m.Matches(null_p));
|
||||||
|
EXPECT_FALSE(m.Matches(non_null_p));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(IsNullTest, ReferenceToConstLinkedPtr) {
|
||||||
|
const Matcher<const linked_ptr<double>&> m = IsNull();
|
||||||
|
const linked_ptr<double> null_p;
|
||||||
|
const linked_ptr<double> non_null_p(new double);
|
||||||
|
|
||||||
|
EXPECT_TRUE(m.Matches(null_p));
|
||||||
|
EXPECT_FALSE(m.Matches(non_null_p));
|
||||||
|
}
|
||||||
|
|
||||||
// Tests that IsNull() describes itself properly.
|
// Tests that IsNull() describes itself properly.
|
||||||
TEST(IsNullTest, CanDescribeSelf) {
|
TEST(IsNullTest, CanDescribeSelf) {
|
||||||
Matcher<int*> m = IsNull();
|
Matcher<int*> m = IsNull();
|
||||||
|
@ -736,6 +755,24 @@ TEST(NotNullTest, MatchesNonNullPointer) {
|
||||||
EXPECT_TRUE(m2.Matches("hi"));
|
EXPECT_TRUE(m2.Matches("hi"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(NotNullTest, LinkedPtr) {
|
||||||
|
const Matcher<linked_ptr<int> > m = NotNull();
|
||||||
|
const linked_ptr<int> null_p;
|
||||||
|
const linked_ptr<int> non_null_p(new int);
|
||||||
|
|
||||||
|
EXPECT_FALSE(m.Matches(null_p));
|
||||||
|
EXPECT_TRUE(m.Matches(non_null_p));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(NotNullTest, ReferenceToConstLinkedPtr) {
|
||||||
|
const Matcher<const linked_ptr<double>&> m = NotNull();
|
||||||
|
const linked_ptr<double> null_p;
|
||||||
|
const linked_ptr<double> non_null_p(new double);
|
||||||
|
|
||||||
|
EXPECT_FALSE(m.Matches(null_p));
|
||||||
|
EXPECT_TRUE(m.Matches(non_null_p));
|
||||||
|
}
|
||||||
|
|
||||||
// Tests that NotNull() describes itself properly.
|
// Tests that NotNull() describes itself properly.
|
||||||
TEST(NotNullTest, CanDescribeSelf) {
|
TEST(NotNullTest, CanDescribeSelf) {
|
||||||
Matcher<int*> m = NotNull();
|
Matcher<int*> m = NotNull();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user