diff options
author | 2022-12-21 07:34:25 +0200 | |
---|---|---|
committer | 2022-12-20 21:34:25 -0800 | |
commit | 06487ef64f6968c411420f3e8347144f3885d2ef (patch) | |
tree | e4c9082ccaf8bc2787cb2379ca4d8492ee018813 | |
parent | b2fdcad77b9e89ac5a7318a8b178c366055f8c62 (diff) | |
download | bun-06487ef64f6968c411420f3e8347144f3885d2ef.tar.gz bun-06487ef64f6968c411420f3e8347144f3885d2ef.tar.zst bun-06487ef64f6968c411420f3e8347144f3885d2ef.zip |
add tests for #1633 (#1635)
- `setImmediate(fn, ...args)`
- `setInterval(fn, delay, ...args)`
- `setTimeout(fn, delay, ...args)`
-rw-r--r-- | test/bun.js/setImmediate.test.js | 47 | ||||
-rw-r--r-- | test/bun.js/setInterval.test.js | 11 | ||||
-rw-r--r-- | test/bun.js/setTimeout.test.js | 22 |
3 files changed, 69 insertions, 11 deletions
diff --git a/test/bun.js/setImmediate.test.js b/test/bun.js/setImmediate.test.js new file mode 100644 index 000000000..9cd6fa1c9 --- /dev/null +++ b/test/bun.js/setImmediate.test.js @@ -0,0 +1,47 @@ +import { it, expect } from "bun:test"; + +it("setImmediate", async () => { + var lastID = -1; + const result = await new Promise((resolve, reject) => { + var numbers = []; + + for (let i = 0; i < 10; i++) { + const id = setImmediate((...args) => { + numbers.push(i); + if (i === 9) { + resolve(numbers); + } + try { + expect(args.length).toBe(1); + expect(args[0]).toBe(i); + } catch (err) { + reject(err); + } + }, i); + expect(id > lastID).toBe(true); + lastID = id; + } + }); + + for (let j = 0; j < result.length; j++) { + expect(result[j]).toBe(j); + } + expect(result.length).toBe(10); +}); + +it("clearImmediate", async () => { + var called = false; + const id = setImmediate(() => { + called = true; + expect(false).toBe(true); + }); + clearImmediate(id); + + // assert it doesn't crash if you call clearImmediate twice + clearImmediate(id); + + await new Promise((resolve, reject) => { + setImmediate(resolve); + }); + expect(called).toBe(false); +}); diff --git a/test/bun.js/setInterval.test.js b/test/bun.js/setInterval.test.js index de219b92f..57ee54aa0 100644 --- a/test/bun.js/setInterval.test.js +++ b/test/bun.js/setInterval.test.js @@ -6,13 +6,20 @@ it("setInterval", async () => { const result = await new Promise((resolve, reject) => { start = performance.now(); - var id = setInterval(() => { + var id = setInterval((...args) => { counter++; if (counter === 10) { resolve(counter); clearInterval(id); } - }, 1); + try { + expect(args.length).toBe(1); + expect(args[0]).toBe("foo"); + } catch (err) { + reject(err); + clearInterval(id); + } + }, 1, "foo"); }); expect(result).toBe(10); diff --git a/test/bun.js/setTimeout.test.js b/test/bun.js/setTimeout.test.js index a899867df..015bb1d7b 100644 --- a/test/bun.js/setTimeout.test.js +++ b/test/bun.js/setTimeout.test.js @@ -5,22 +5,28 @@ it("setTimeout", async () => { const result = await new Promise((resolve, reject) => { var numbers = []; - for (let i = 1; i < 100; i++) { - const id = setTimeout(() => { + for (let i = 0; i < 10; i++) { + const id = setTimeout((...args) => { numbers.push(i); - if (i === 99) { + if (i === 9) { resolve(numbers); } - }, i); + try { + expect(args.length).toBe(1); + expect(args[0]).toBe("foo"); + } catch (err) { + reject(err); + } + }, i, "foo"); expect(id > lastID).toBe(true); lastID = id; } }); for (let j = 0; j < result.length; j++) { - expect(result[j]).toBe(j + 1); + expect(result[j]).toBe(j); } - expect(result.length).toBe(99); + expect(result.length).toBe(10); }); it("clearTimeout", async () => { @@ -35,9 +41,7 @@ it("clearTimeout", async () => { clearTimeout(id); await new Promise((resolve, reject) => { - setTimeout(() => { - resolve(); - }, 10); + setTimeout(resolve, 10); }); expect(called).toBe(false); }); |