mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Summary: This did not work because the ExpectedHolder was trying to hold the value in an Optional<T*>. Instead of trying to mimic the behavior of Expected and try to make ExpectedHolder work with references and non-references, I simply store the reference to the Expected object in the holder. I also add a bunch of tests for these matchers, which have helped me flesh out some problems in my initial implementation of this patch, and uncovered the fact that we are not consistent in quoting our values in the matcher output (which I also fix). Reviewers: zturner, chandlerc Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D40904 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320025 91177308-0d34-0410-b5e6-96231b3b80d8
64 lines
1.9 KiB
C++
64 lines
1.9 KiB
C++
//===- llvm/Testing/Support/Error.h ---------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TESTING_SUPPORT_ERROR_H
|
|
#define LLVM_TESTING_SUPPORT_ERROR_H
|
|
|
|
#include "llvm/ADT/Optional.h"
|
|
#include "llvm/Support/Error.h"
|
|
#include "llvm/Testing/Support/SupportHelpers.h"
|
|
|
|
#include "gmock/gmock.h"
|
|
#include <ostream>
|
|
|
|
namespace llvm {
|
|
namespace detail {
|
|
ErrorHolder TakeError(Error Err);
|
|
|
|
template <typename T> ExpectedHolder<T> TakeExpected(Expected<T> &Exp) {
|
|
return {TakeError(Exp.takeError()), Exp};
|
|
}
|
|
|
|
template <typename T> ExpectedHolder<T> TakeExpected(Expected<T> &&Exp) {
|
|
return TakeExpected(Exp);
|
|
}
|
|
} // namespace detail
|
|
|
|
#define EXPECT_THAT_ERROR(Err, Matcher) \
|
|
EXPECT_THAT(llvm::detail::TakeError(Err), Matcher)
|
|
#define ASSERT_THAT_ERROR(Err, Matcher) \
|
|
ASSERT_THAT(llvm::detail::TakeError(Err), Matcher)
|
|
|
|
#define EXPECT_THAT_EXPECTED(Err, Matcher) \
|
|
EXPECT_THAT(llvm::detail::TakeExpected(Err), Matcher)
|
|
#define ASSERT_THAT_EXPECTED(Err, Matcher) \
|
|
ASSERT_THAT(llvm::detail::TakeExpected(Err), Matcher)
|
|
|
|
MATCHER(Succeeded, "") { return arg.Success; }
|
|
MATCHER(Failed, "") { return !arg.Success; }
|
|
|
|
MATCHER_P(HasValue, value,
|
|
"succeeded with value \"" + testing::PrintToString(value) + '"') {
|
|
if (!arg.Success) {
|
|
*result_listener << "operation failed";
|
|
return false;
|
|
}
|
|
|
|
if (*arg.Exp != value) {
|
|
*result_listener << "but \"" + testing::PrintToString(*arg.Exp) +
|
|
"\" != \"" + testing::PrintToString(value) + '"';
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
} // namespace llvm
|
|
|
|
#endif
|