Googletest export
Add tuple version of Optional() matches. This allows Optional() to be used in Pointwise matchers. PiperOrigin-RevId: 265110864
This commit is contained in:
committed by
Xiaoyi Zhang
parent
db1b739943
commit
ed2eef6543
@@ -6387,7 +6387,7 @@ class SampleOptional {
|
||||
explicit SampleOptional(T value)
|
||||
: value_(std::move(value)), has_value_(true) {}
|
||||
SampleOptional() : value_(), has_value_(false) {}
|
||||
operator bool() const { return has_value_; }
|
||||
explicit operator bool() const { return has_value_; }
|
||||
const T& operator*() const { return value_; }
|
||||
|
||||
private:
|
||||
@@ -6427,6 +6427,39 @@ TEST(OptionalTest, WorksWithMoveOnly) {
|
||||
EXPECT_TRUE(m.Matches(SampleOptional<std::unique_ptr<int>>(nullptr)));
|
||||
}
|
||||
|
||||
TEST(OptionalTest, TupleDescribesSelf) {
|
||||
const Matcher<std::tuple<SampleOptional<int>, int>> m = Optional(Eq());
|
||||
EXPECT_EQ("are optionals where the values are an equal pair", Describe(m));
|
||||
}
|
||||
|
||||
TEST(OptionalTest, TupleExplainsSelf) {
|
||||
const Matcher<std::tuple<SampleOptional<int>, int>> m = Optional(Eq());
|
||||
EXPECT_EQ("which match",
|
||||
Explain(m, std::make_tuple(SampleOptional<int>(1), 1)));
|
||||
EXPECT_EQ("whose values don't match",
|
||||
Explain(m, std::make_tuple(SampleOptional<int>(1), 2)));
|
||||
}
|
||||
|
||||
TEST(OptionalTest, TupleMatchesNonEmpty) {
|
||||
const Matcher<std::tuple<SampleOptional<int>, int>> m1 = Optional(Eq());
|
||||
const Matcher<std::tuple<SampleOptional<int>, int>> m2 = Optional(Lt());
|
||||
EXPECT_TRUE(m1.Matches(std::make_tuple(SampleOptional<int>(1), 1)));
|
||||
EXPECT_FALSE(m1.Matches(std::make_tuple(SampleOptional<int>(1), 2)));
|
||||
EXPECT_FALSE(m2.Matches(std::make_tuple(SampleOptional<int>(1), 1)));
|
||||
EXPECT_TRUE(m2.Matches(std::make_tuple(SampleOptional<int>(1), 2)));
|
||||
}
|
||||
|
||||
TEST(OptionalTest, TupleDoesNotMatchNullopt) {
|
||||
const Matcher<std::tuple<SampleOptional<int>, int>> m1 = Optional(Eq());
|
||||
EXPECT_FALSE(m1.Matches(std::make_tuple(SampleOptional<int>(), 1)));
|
||||
}
|
||||
|
||||
TEST(OptionalTest, TupleWorksInPointwise) {
|
||||
std::vector<SampleOptional<int>> v = {
|
||||
SampleOptional<int>(1), SampleOptional<int>(2), SampleOptional<int>(3)};
|
||||
EXPECT_THAT(v, Pointwise(Optional(Eq()), {1, 2, 3}));
|
||||
}
|
||||
|
||||
class SampleVariantIntString {
|
||||
public:
|
||||
SampleVariantIntString(int i) : i_(i), has_int_(true) {}
|
||||
|
||||
Reference in New Issue
Block a user