diff --git a/test/test_common/status_utility.h b/test/test_common/status_utility.h index 890965ee03389..8f4717fce331f 100644 --- a/test/test_common/status_utility.h +++ b/test/test_common/status_utility.h @@ -7,19 +7,20 @@ namespace Envoy { namespace StatusHelpers { -// Check that a StatusOr is OK and has a value equal to its argument. +// Check that a StatusOr is OK and has a value equal to or matching its argument. // // For example: // // StatusOr status(3); // EXPECT_THAT(status, IsOkAndHolds(3)); +// EXPECT_THAT(status, IsOkAndHolds(Gt(2))); MATCHER_P(IsOkAndHolds, expected, "") { if (!arg.ok()) { *result_listener << "which has unexpected status: " << arg.status(); return false; } - if (*arg != expected) { - *result_listener << "which has wrong value: " << *arg; + if (!::testing::Matches(expected)(*arg)) { + *result_listener << "which has wrong value: " << ::testing::PrintToString(*arg); return false; } return true; diff --git a/test/test_common/status_utility_test.cc b/test/test_common/status_utility_test.cc index 92617500fb8e7..e81cd70cb36cd 100644 --- a/test/test_common/status_utility_test.cc +++ b/test/test_common/status_utility_test.cc @@ -1,3 +1,5 @@ +#include + #include "test/test_common/status_utility.h" namespace Envoy { @@ -126,7 +128,14 @@ TEST(StatusUtilityTest, IsOkAndHoldsSuccess) { TEST(StatusUtilityTest, IsOkAndHoldsFailureByValue) { ::testing::StringMatchResultListener listener; - ::testing::ExplainMatchResult(IsOkAndHolds(5), absl::StatusOr{6}, &listener); + EXPECT_FALSE(::testing::ExplainMatchResult(IsOkAndHolds(5), absl::StatusOr{6}, &listener)); + EXPECT_EQ("which has wrong value: 6", listener.str()); +} + +TEST(StatusUtilityTest, IsOkAndHoldsFailureByValueMatcher) { + ::testing::StringMatchResultListener listener; + EXPECT_FALSE(::testing::ExplainMatchResult(IsOkAndHolds(::testing::Lt(4)), absl::StatusOr{6}, + &listener)); EXPECT_EQ("which has wrong value: 6", listener.str()); }