1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:58:12 +00:00

LibCore: Check if a promise is already resolved in Promise::map()

This commit is contained in:
Karol Kosek 2023-08-29 14:32:41 +02:00 committed by Andrew Kaster
parent 50d8ef94ba
commit 51fefb57fc
2 changed files with 42 additions and 2 deletions

View file

@ -61,6 +61,40 @@ TEST_CASE(promise_chain_handlers)
EXPECT(!rejected);
}
TEST_CASE(promise_map)
{
Core::EventLoop loop;
auto promise = MUST(Core::Promise<int>::try_create());
auto mapped_promise = promise->map<int>([](int result) {
return result * 2;
});
loop.deferred_invoke([=] {
promise->resolve(21);
});
auto result = mapped_promise->await();
EXPECT(!result.is_error());
EXPECT_EQ(result.value(), 42);
}
TEST_CASE(promise_map_already_resolved)
{
Core::EventLoop loop;
auto promise = MUST(Core::Promise<int>::try_create());
promise->resolve(21);
auto mapped_promise = promise->map<int>([](int result) {
return result * 2;
});
auto result = mapped_promise->await();
EXPECT(!result.is_error());
EXPECT_EQ(result.value(), 42);
}
TEST_CASE(threaded_promise_instantly_resolved)
{
Core::EventLoop loop;