summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2022-04-04 19:55:29 (GMT)
committerCopybara-Service <copybara-worker@google.com>2022-04-04 19:56:24 (GMT)
commit3ffa237f0ed258bf92b28ab00dce3ecda84efffe (patch)
tree0a912fe9ffd101438df6a3de6ad9e2d970236368
parent25dcdc7e8bfac8967f20fb2c0a628f5cf442188d (diff)
downloadgoogletest-3ffa237f0ed258bf92b28ab00dce3ecda84efffe.zip
googletest-3ffa237f0ed258bf92b28ab00dce3ecda84efffe.tar.gz
googletest-3ffa237f0ed258bf92b28ab00dce3ecda84efffe.tar.bz2
Use ResultOf()'s result_description when explaining match result.
PiperOrigin-RevId: 439389646 Change-Id: Ie34adcdd2b24378e85962efac53b7bb89ed93803
-rw-r--r--googlemock/include/gmock/gmock-matchers.h6
-rw-r--r--googlemock/test/gmock-matchers-containers_test.cc11
2 files changed, 16 insertions, 1 deletions
diff --git a/googlemock/include/gmock/gmock-matchers.h b/googlemock/include/gmock/gmock-matchers.h
index 9584586..9750d84 100644
--- a/googlemock/include/gmock/gmock-matchers.h
+++ b/googlemock/include/gmock/gmock-matchers.h
@@ -2258,7 +2258,11 @@ class ResultOfMatcher {
}
bool MatchAndExplain(T obj, MatchResultListener* listener) const override {
- *listener << "which is mapped by the given callable to ";
+ if (result_description_.empty()) {
+ *listener << "which is mapped by the given callable to ";
+ } else {
+ *listener << "whose " << result_description_ << " is ";
+ }
// Cannot pass the return value directly to MatchPrintAndExplain, which
// takes a non-const reference as argument.
// Also, specifying template argument explicitly is needed because T could
diff --git a/googlemock/test/gmock-matchers-containers_test.cc b/googlemock/test/gmock-matchers-containers_test.cc
index add7a35..74a226d 100644
--- a/googlemock/test/gmock-matchers-containers_test.cc
+++ b/googlemock/test/gmock-matchers-containers_test.cc
@@ -949,6 +949,17 @@ TEST(ResultOfTest, CanExplainMatchResult) {
Explain(matcher, 36));
}
+TEST(ResultOfTest, CanExplainMatchResultWithResultDescription) {
+ Matcher<int> matcher = ResultOf("magic int conversion", &IntFunction, Ge(85));
+ EXPECT_EQ("whose magic int conversion is 90" + OfType("int"),
+ Explain(matcher, 36));
+
+ matcher = ResultOf("magic int conversion", &IntFunction, GreaterThan(85));
+ EXPECT_EQ("whose magic int conversion is 90" + OfType("int") +
+ ", which is 5 more than 85",
+ Explain(matcher, 36));
+}
+
// Tests that ResultOf(f, ...) compiles and works as expected when f(x)
// returns a non-reference.
TEST(ResultOfTest, WorksForNonReferenceResults) {