diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
commit | d8bbc7858622b6d9c278469aab701ca0b609cddf (patch) | |
tree | eff41dc61d9f714852212739e6b3738b82a2af87 /xpcom/tests/gtest/TestMozPromise.cpp | |
parent | Releasing progress-linux version 125.0.3-1~progress7.99u1. (diff) | |
download | firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.tar.xz firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.zip |
Merging upstream version 126.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xpcom/tests/gtest/TestMozPromise.cpp')
-rw-r--r-- | xpcom/tests/gtest/TestMozPromise.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/xpcom/tests/gtest/TestMozPromise.cpp b/xpcom/tests/gtest/TestMozPromise.cpp index bb7273cc1f..9b06304139 100644 --- a/xpcom/tests/gtest/TestMozPromise.cpp +++ b/xpcom/tests/gtest/TestMozPromise.cpp @@ -753,4 +753,54 @@ TEST(MozPromise, ChainToDirectTaskDispatch) NS_ProcessPendingEvents(nullptr); } +TEST(MozPromise, Map) +{ + int value = 0; + bool ran_err = false; + + InvokeAsync(GetCurrentSerialEventTarget(), "test", + [&]() { return TestPromise::CreateAndResolve(18, "test"); }) + ->Map(GetCurrentSerialEventTarget(), "test", + [](int val) { return val + 0x18; }) + ->MapErr(GetCurrentSerialEventTarget(), "test", + [&](double val) { + ran_err = true; + return Ok{}; + }) + ->Map(GetCurrentSerialEventTarget(), "test", [&](int val) { + value = val; + return Ok{}; + }); + + NS_ProcessPendingEvents(nullptr); + + EXPECT_EQ(value, 42); + EXPECT_EQ(ran_err, false); +} + +TEST(MozPromise, MapErr) +{ + bool ran_ok = false; + double result = 0.0; + + InvokeAsync(GetCurrentSerialEventTarget(), "test", + [&]() { return TestPromise::CreateAndReject(1.0, "test"); }) + ->Map(GetCurrentSerialEventTarget(), "test", + [&](int val) { + ran_ok = true; + return 1; + }) + ->MapErr(GetCurrentSerialEventTarget(), "test", + [](double val) { return val * 2; }) + ->MapErr(GetCurrentSerialEventTarget(), "test", [&](double val) { + result = val; + return Ok{}; + }); + + NS_ProcessPendingEvents(nullptr); + + EXPECT_EQ(result, 2.0); + EXPECT_EQ(ran_ok, false); +} + #undef DO_FAIL |