Skip to content

Commit b5f6cc9

Browse files
authored
Unittest for Error forwarding, follow-up to PR #92208 (#92314)
Added a unittest demonstrating Error -> Expected<T> forwarding.
1 parent 174cdec commit b5f6cc9

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

llvm/unittests/Support/ErrorTest.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "llvm/Support/Errc.h"
1414
#include "llvm/Support/ErrorHandling.h"
1515
#include "llvm/Testing/Support/Error.h"
16+
#include "gmock/gmock.h"
1617
#include "gtest/gtest-spi.h"
1718
#include "gtest/gtest.h"
1819
#include <memory>
@@ -1158,4 +1159,21 @@ TEST(Error, BadAllocFatalErrorHandlersInteraction) {
11581159
remove_bad_alloc_error_handler();
11591160
}
11601161

1162+
TEST(Error, ForwardToExpected) {
1163+
auto ErrorReturningFct = [](bool Fail) {
1164+
return Fail ? make_error<StringError>(llvm::errc::invalid_argument,
1165+
"Some Error")
1166+
: Error::success();
1167+
};
1168+
auto ExpectedReturningFct = [&](bool Fail) -> Expected<int> {
1169+
auto Err = ErrorReturningFct(Fail);
1170+
if (Err)
1171+
return Err;
1172+
return 42;
1173+
};
1174+
std::optional<int> MaybeV;
1175+
EXPECT_THAT_ERROR(ExpectedReturningFct(true).moveInto(MaybeV), Failed());
1176+
EXPECT_THAT_ERROR(ExpectedReturningFct(false).moveInto(MaybeV), Succeeded());
1177+
EXPECT_EQ(*MaybeV, 42);
1178+
}
11611179
} // namespace

0 commit comments

Comments
 (0)