Updates IsNull and NotNull matchers to work with smart pointers.
This commit is contained in:
		@@ -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();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user