From f7e4eb83694aa007a492ef66c28ffbe6a2dae791 Mon Sep 17 00:00:00 2001 From: Ashcon Partovi Date: Tue, 7 Mar 2023 12:22:34 -0800 Subject: Reorganize tests (#2332) --- test/js/web/timers/setInterval.test.js | 61 ++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 test/js/web/timers/setInterval.test.js (limited to 'test/js/web/timers/setInterval.test.js') 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); + }); + }); +}); -- cgit v1.2.3