Commit 00be161b authored by tqcq's avatar tqcq
Browse files

feat update

parent f8965686
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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) {
+20 −0
Original line number Diff line number Diff line
@@ -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");
    }
}