summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/timers_test.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/js/timers_test.ts b/js/timers_test.ts
index 56cc56a9b..8d5245f11 100644
--- a/js/timers_test.ts
+++ b/js/timers_test.ts
@@ -65,6 +65,31 @@ test(async function timeoutCancelSuccess() {
assertEqual(count, 0);
});
+test(async function timeoutCancelMultiple() {
+ // Set timers and cancel them in the same order.
+ const t1 = setTimeout(uncalled, 10);
+ const t2 = setTimeout(uncalled, 10);
+ const t3 = setTimeout(uncalled, 10);
+ clearTimeout(t1);
+ clearTimeout(t2);
+ clearTimeout(t3);
+
+ // Set timers and cancel them in reverse order.
+ const t4 = setTimeout(uncalled, 20);
+ const t5 = setTimeout(uncalled, 20);
+ const t6 = setTimeout(uncalled, 20);
+ clearTimeout(t6);
+ clearTimeout(t5);
+ clearTimeout(t4);
+
+ // Sleep until we're certain that the cancelled timers aren't gonna fire.
+ await waitForMs(50);
+
+ function uncalled() {
+ throw new Error("This function should not be called.");
+ }
+});
+
test(async function timeoutCancelInvalidSilentFail() {
// Expect no panic
const { promise, resolve } = deferred();