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:
parent
50d8ef94ba
commit
51fefb57fc
2 changed files with 42 additions and 2 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue