Googletest export
Add a `Pointer` matcher as an analog to `Pointee`. Similar to `Pointee`, `Pointer` works with either raw or smart pointers and allows creating a matcher like Pointer(Eq(foo)) for smart pointers. PiperOrigin-RevId: 346164768
This commit is contained in:
@@ -3728,6 +3728,65 @@ TEST(PointeeTest, ReferenceToNonConstRawPointer) {
|
||||
EXPECT_FALSE(m.Matches(p));
|
||||
}
|
||||
|
||||
TEST(PointeeTest, SmartPointer) {
|
||||
const Matcher<std::unique_ptr<int>> m = Pointee(Ge(0));
|
||||
|
||||
std::unique_ptr<int> n(new int(1));
|
||||
EXPECT_TRUE(m.Matches(n));
|
||||
}
|
||||
|
||||
TEST(PointeeTest, SmartPointerToConst) {
|
||||
const Matcher<std::unique_ptr<const int>> m = Pointee(Ge(0));
|
||||
|
||||
// There's no implicit conversion from unique_ptr<int> to const
|
||||
// unique_ptr<const int>, so we must pass a unique_ptr<const int> into the
|
||||
// matcher.
|
||||
std::unique_ptr<const int> n(new int(1));
|
||||
EXPECT_TRUE(m.Matches(n));
|
||||
}
|
||||
|
||||
TEST(PointerTest, RawPointer) {
|
||||
int n = 1;
|
||||
const Matcher<int*> m = Pointer(Eq(&n));
|
||||
|
||||
EXPECT_TRUE(m.Matches(&n));
|
||||
|
||||
int* p = nullptr;
|
||||
EXPECT_FALSE(m.Matches(p));
|
||||
EXPECT_FALSE(m.Matches(nullptr));
|
||||
}
|
||||
|
||||
TEST(PointerTest, RawPointerToConst) {
|
||||
int n = 1;
|
||||
const Matcher<const int*> m = Pointer(Eq(&n));
|
||||
|
||||
EXPECT_TRUE(m.Matches(&n));
|
||||
|
||||
int* p = nullptr;
|
||||
EXPECT_FALSE(m.Matches(p));
|
||||
EXPECT_FALSE(m.Matches(nullptr));
|
||||
}
|
||||
|
||||
TEST(PointerTest, SmartPointer) {
|
||||
std::unique_ptr<int> n(new int(10));
|
||||
int* raw_n = n.get();
|
||||
const Matcher<std::unique_ptr<int>> m = Pointer(Eq(raw_n));
|
||||
|
||||
EXPECT_TRUE(m.Matches(n));
|
||||
}
|
||||
|
||||
TEST(PointerTest, SmartPointerToConst) {
|
||||
std::unique_ptr<const int> n(new int(10));
|
||||
const int* raw_n = n.get();
|
||||
const Matcher<std::unique_ptr<const int>> m = Pointer(Eq(raw_n));
|
||||
|
||||
// There's no implicit conversion from unique_ptr<int> to const
|
||||
// unique_ptr<const int>, so we must pass a unique_ptr<const int> into the
|
||||
// matcher.
|
||||
std::unique_ptr<const int> p(new int(10));
|
||||
EXPECT_FALSE(m.Matches(p));
|
||||
}
|
||||
|
||||
MATCHER_P(FieldIIs, inner_matcher, "") {
|
||||
return ExplainMatchResult(inner_matcher, arg.i, result_listener);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user