diff options
author | vladlosev <vladlosev@8415998a-534a-0410-bf83-d39667b30386> | 2012-08-14 15:38:49 +0000 |
---|---|---|
committer | vladlosev <vladlosev@8415998a-534a-0410-bf83-d39667b30386> | 2012-08-14 15:38:49 +0000 |
commit | ada23475e27babd85fb9c13250243f6acfd3ffd8 (patch) | |
tree | 8334b7536bfcabc9e184a77b5bb527881bea8aa6 /test/gmock-matchers_test.cc | |
parent | 2fd619edd3d1ec053f6276debdb513f1122ebcf3 (diff) | |
download | googletest-ada23475e27babd85fb9c13250243f6acfd3ffd8.tar.gz googletest-ada23475e27babd85fb9c13250243f6acfd3ffd8.tar.bz2 googletest-ada23475e27babd85fb9c13250243f6acfd3ffd8.zip |
Makes gmock's Pointee() work for optional<T> (by Jeffrey Yasskin).
Diffstat (limited to 'test/gmock-matchers_test.cc')
-rw-r--r-- | test/gmock-matchers_test.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/gmock-matchers_test.cc b/test/gmock-matchers_test.cc index 35d59fa8..6e5d5c31 100644 --- a/test/gmock-matchers_test.cc +++ b/test/gmock-matchers_test.cc @@ -2824,6 +2824,38 @@ TEST(PointeeTest, ReferenceToNonConstRawPointer) { EXPECT_FALSE(m.Matches(p)); } +// Minimal const-propagating pointer. +template <typename T> +class ConstPropagatingPtr { + public: + typedef T element_type; + + ConstPropagatingPtr() : val_() {} + explicit ConstPropagatingPtr(T* t) : val_(t) {} + ConstPropagatingPtr(const ConstPropagatingPtr& other) : val_(other.val_) {} + + T* get() { return val_; } + T& operator*() { return *val_; } + // Most smart pointers return non-const T* and T& from the next methods. + const T* get() const { return val_; } + const T& operator*() const { return *val_; } + + private: + T* val_; +}; + +TEST(PointeeTest, WorksWithConstPropagatingPointers) { + const Matcher< ConstPropagatingPtr<int> > m = Pointee(Lt(5)); + int three = 3; + const ConstPropagatingPtr<int> co(&three); + ConstPropagatingPtr<int> o(&three); + EXPECT_TRUE(m.Matches(o)); + EXPECT_TRUE(m.Matches(co)); + *o = 6; + EXPECT_FALSE(m.Matches(o)); + EXPECT_FALSE(m.Matches(ConstPropagatingPtr<int>())); +} + TEST(PointeeTest, NeverMatchesNull) { const Matcher<const char*> m = Pointee(_); EXPECT_FALSE(m.Matches(NULL)); |