diff options
author | Pavel Labath <labath@google.com> | 2017-12-13 10:00:38 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2017-12-13 10:00:38 +0000 |
commit | 56c2d9997901d28e7aba84c74ecc8c49021d088c (patch) | |
tree | 81330ae76ca42169f7d89f9cfd70df86c8b78127 /llvm/unittests/Support/ErrorTest.cpp | |
parent | 19c9314aea1634800974de2199a1bdab0a63c7ea (diff) | |
download | llvm-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.cpp | 21 |
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 |