diff options
author | 2023-02-22 19:07:27 -0800 | |
---|---|---|
committer | 2023-02-22 19:07:27 -0800 | |
commit | 2a1558e4d6fc2e7abbb9a6f4abc3cc4bb2d49c59 (patch) | |
tree | 62c4562c4a86b90e8456657ebecd2a416d06721d /test/bun.js/setTimeout.test.js | |
parent | 0911bd3af2aceca487f3159f20c0400fb45bdc92 (diff) | |
download | bun-2a1558e4d6fc2e7abbb9a6f4abc3cc4bb2d49c59.tar.gz bun-2a1558e4d6fc2e7abbb9a6f4abc3cc4bb2d49c59.tar.zst bun-2a1558e4d6fc2e7abbb9a6f4abc3cc4bb2d49c59.zip |
[breaking] Return Node.js `Timeout` objects in `setTimeout`, `setInterval`, and `setImmediate`
Fixes #2129 #880
Diffstat (limited to '')
-rw-r--r-- | test/bun.js/setTimeout.test.js | 58 |
1 files changed, 47 insertions, 11 deletions
diff --git a/test/bun.js/setTimeout.test.js b/test/bun.js/setTimeout.test.js index 393a32bbe..88472adc7 100644 --- a/test/bun.js/setTimeout.test.js +++ b/test/bun.js/setTimeout.test.js @@ -13,8 +13,7 @@ it("setTimeout", async () => { resolve(numbers); } try { - expect(args.length).toBe(1); - expect(args[0]).toBe("foo"); + expect(args).toStrictEqual(["foo"]); } catch (err) { reject(err); } @@ -22,7 +21,7 @@ it("setTimeout", async () => { i, "foo", ); - expect(id > lastID).toBe(true); + expect(+id > lastID).toBe(true); lastID = id; } }); @@ -35,14 +34,30 @@ it("setTimeout", async () => { it("clearTimeout", async () => { var called = false; - const id = setTimeout(() => { - called = true; - expect(false).toBe(true); - }, 1); - clearTimeout(id); - // assert it doesn't crash if you call clearTimeout twice - clearTimeout(id); + // as object + { + const id = setTimeout(() => { + called = true; + expect(false).toBe(true); + }, 0); + clearTimeout(id); + + // assert it doesn't crash if you call clearTimeout twice + clearTimeout(id); + } + + // as number + { + const id = setTimeout(() => { + called = true; + expect(false).toBe(true); + }, 0); + clearTimeout(+id); + + // assert it doesn't crash if you call clearTimeout twice + clearTimeout(+id); + } await new Promise((resolve, reject) => { setTimeout(resolve, 10); @@ -118,7 +133,7 @@ it("Bun.sleep propagates exceptions", async () => { it("Bun.sleep works with a Date object", async () => { var ten_ms = new Date(); - ten_ms.setMilliseconds(ten_ms.getMilliseconds() + 10); + ten_ms.setMilliseconds(ten_ms.getMilliseconds() + 12); const now = performance.now(); await Bun.sleep(ten_ms); expect(performance.now() - now).toBeGreaterThanOrEqual(10); @@ -135,3 +150,24 @@ it("node.js timers/promises setTimeout propagates exceptions", async () => { expect(err.message).toBe("TestPassed"); } }); + +it.skip("order of setTimeouts", done => { + var nums = []; + var maybeDone = cb => { + return () => { + cb(); + if (nums.length === 4) { + try { + expect(nums).toEqual([1, 2, 3, 4]); + done(); + } catch (e) { + done(e); + } + } + }; + }; + setTimeout(maybeDone(() => nums.push(2))); + setTimeout(maybeDone(() => nums.push(3), 0)); + setTimeout(maybeDone(() => nums.push(4), 1)); + Promise.resolve().then(maybeDone(() => nums.push(1))); +}); |