aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/ErrorTest.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2017-12-13 10:00:38 +0000
committerPavel Labath <labath@google.com>2017-12-13 10:00:38 +0000
commit56c2d9997901d28e7aba84c74ecc8c49021d088c (patch)
tree81330ae76ca42169f7d89f9cfd70df86c8b78127 /llvm/unittests/Support/ErrorTest.cpp
parent19c9314aea1634800974de2199a1bdab0a63c7ea (diff)
downloadllvm-56c2d9997901d28e7aba84c74ecc8c49021d088c.zip
llvm-56c2d9997901d28e7aba84c74ecc8c49021d088c.tar.gz
llvm-56c2d9997901d28e7aba84c74ecc8c49021d088c.tar.bz2
[Testing/Support] Make the HasValue matcher composable
Summary: This makes it possible to run an arbitrary matcher on the value contained within the Expected<T> object. To do this, I've needed to fully spell out the matcher, instead of using the shorthand MATCHER_P macro. The slight gotcha here is that standard template deduction will fail if one tries to match HasValue(47) against an Expected<int &> -- the workaround is to use HasValue(testing::Eq(47)). The explanations produced by this matcher have changed a bit, since now we delegate to the nested matcher to print the value. Since these don't put quotes around the value, I've changed our PrintTo methods to match. Reviewers: zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41065 llvm-svn: 320561
Diffstat (limited to 'llvm/unittests/Support/ErrorTest.cpp')
-rw-r--r--llvm/unittests/Support/ErrorTest.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/llvm/unittests/Support/ErrorTest.cpp b/llvm/unittests/Support/ErrorTest.cpp
index 213ed55..2629e64 100644
--- a/llvm/unittests/Support/ErrorTest.cpp
+++ b/llvm/unittests/Support/ErrorTest.cpp
@@ -735,23 +735,34 @@ TEST(Error, ErrorMatchers) {
EXPECT_THAT_EXPECTED(Expected<int>(make_error<CustomError>(0)), Failed());
EXPECT_NONFATAL_FAILURE(
EXPECT_THAT_EXPECTED(Expected<int>(0), Failed()),
- "Expected: failed\n Actual: succeeded with value \"0\"");
+ "Expected: failed\n Actual: succeeded with value 0");
EXPECT_THAT_EXPECTED(Expected<int>(0), HasValue(0));
EXPECT_NONFATAL_FAILURE(
EXPECT_THAT_EXPECTED(Expected<int>(make_error<CustomError>(0)),
HasValue(0)),
- "Expected: succeeded with value \"0\"\n"
+ "Expected: succeeded with value (is equal to 0)\n"
" Actual: failed (CustomError { 0})");
EXPECT_NONFATAL_FAILURE(
EXPECT_THAT_EXPECTED(Expected<int>(1), HasValue(0)),
- "Expected: succeeded with value \"0\"\n"
- " Actual: succeeded with value \"1\", but \"1\" != \"0\"");
+ "Expected: succeeded with value (is equal to 0)\n"
+ " Actual: succeeded with value 1, (isn't equal to 0)");
EXPECT_THAT_EXPECTED(Expected<int &>(make_error<CustomError>(0)), Failed());
int a = 1;
EXPECT_THAT_EXPECTED(Expected<int &>(a), Succeeded());
- EXPECT_THAT_EXPECTED(Expected<int &>(a), HasValue(1));
+ EXPECT_THAT_EXPECTED(Expected<int &>(a), HasValue(testing::Eq(1)));
+
+ EXPECT_THAT_EXPECTED(Expected<int>(1), HasValue(testing::Gt(0)));
+ EXPECT_NONFATAL_FAILURE(
+ EXPECT_THAT_EXPECTED(Expected<int>(0), HasValue(testing::Gt(1))),
+ "Expected: succeeded with value (is > 1)\n"
+ " Actual: succeeded with value 0, (isn't > 1)");
+ EXPECT_NONFATAL_FAILURE(
+ EXPECT_THAT_EXPECTED(Expected<int>(make_error<CustomError>(0)),
+ HasValue(testing::Gt(1))),
+ "Expected: succeeded with value (is > 1)\n"
+ " Actual: failed (CustomError { 0})");
}
} // end anon namespace