diff options
Diffstat (limited to 'test/js/web/timers/setInterval.test.js')
-rw-r--r-- | test/js/web/timers/setInterval.test.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/js/web/timers/setInterval.test.js b/test/js/web/timers/setInterval.test.js new file mode 100644 index 000000000..7b03afba5 --- /dev/null +++ b/test/js/web/timers/setInterval.test.js @@ -0,0 +1,61 @@ +import { it, expect } from "bun:test"; + +it("setInterval", async () => { + var counter = 0; + var start; + const result = await new Promise((resolve, reject) => { + start = performance.now(); + + var id = setInterval( + (...args) => { + counter++; + if (counter === 10) { + resolve(counter); + clearInterval(id); + } + try { + expect(args).toStrictEqual(["foo"]); + } catch (err) { + reject(err); + clearInterval(id); + } + }, + 1, + "foo", + ); + }); + + expect(result).toBe(10); + expect(performance.now() - start >= 10).toBe(true); +}); + +it("clearInterval", async () => { + var called = false; + const id = setInterval(() => { + called = true; + expect(false).toBe(true); + }, 1); + clearInterval(id); + await new Promise((resolve, reject) => { + setInterval(() => { + resolve(); + }, 10); + }); + expect(called).toBe(false); +}); + +it("async setInterval", async () => { + var remaining = 5; + await new Promise((resolve, reject) => { + queueMicrotask(() => { + var id = setInterval(async () => { + await 1; + remaining--; + if (remaining === 0) { + clearInterval(id); + resolve(); + } + }, 1); + }); + }); +}); |