From 5b66f28fa3041b57d1c5e4c54d07bf78e7ee8c0c Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Mon, 8 Oct 2018 19:52:16 +0200 Subject: [PATCH] timers: add test for clearTimer bug #942 --- js/timers_test.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/js/timers_test.ts b/js/timers_test.ts index 56cc56a9b8..8d5245f11b 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();