feat update

This commit is contained in:
tqcq 2024-04-19 19:29:45 +08:00
parent f896568619
commit 00be161b61
2 changed files with 21 additions and 1 deletions

View File

@ -293,7 +293,7 @@ public:
{
Future<T, OtherFailureT> result = Future<T, OtherFailureT>::Create();
OnSuccess([result](const T &v) mutable noexcept { result.FillSuccess(v); });
OnFailure([result, f](const FailureT &failure) noexcept {
OnFailure([result, f](const FailureT &failure) mutable noexcept {
try {
result.FillFailure(f(failure));
} catch (const std::exception &e) {

View File

@ -126,4 +126,24 @@ TEST_SUITE("future")
REQUIRE_EQ(f1.Result(), 1);
REQUIRE_EQ(f2.FailureReason(), "1");
}
TEST_CASE("MapFailure")
{
sled::Future<int, bool> f = false;
auto f1 = f.MapFailure([](bool) { return std::string("error"); });
CHECK_EQ(f1.FailureReason(), "error");
}
TEST_CASE("Chain")
{
sled::Future<int, bool> f = 1;
auto f1 = f.Map([](int i) { return i + 1; })
.FlatMap([](int i) {
sled::Promise<std::string, bool> p;
p.Success(std::to_string(i));
return p.GetFuture();
})
.MapFailure([](bool) { return std::exception(); });
CHECK_EQ(f1.Result(), "2");
}
}