summaryrefslogtreecommitdiffstats
path: root/xpcom/tests/gtest/TestMozPromise.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:35:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:35:49 +0000
commitd8bbc7858622b6d9c278469aab701ca0b609cddf (patch)
treeeff41dc61d9f714852212739e6b3738b82a2af87 /xpcom/tests/gtest/TestMozPromise.cpp
parentReleasing progress-linux version 125.0.3-1~progress7.99u1. (diff)
downloadfirefox-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.cpp50
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