diff options
-rw-r--r-- | js/timers_test.ts | 25 |
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(); |