aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/setTimeout.test.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-01 16:02:29 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-01 16:02:29 -0700
commit3b4900193ba4a6ee40b3d5935650b5f68baf0729 (patch)
tree576dea06803088c2bca61da040eb8ff9a3821d7e /test/bun.js/setTimeout.test.js
parentbab317edd169b160712fcc2f6e56cb36dceec0f5 (diff)
downloadbun-3b4900193ba4a6ee40b3d5935650b5f68baf0729.tar.gz
bun-3b4900193ba4a6ee40b3d5935650b5f68baf0729.tar.zst
bun-3b4900193ba4a6ee40b3d5935650b5f68baf0729.zip
Fix `setTimeout(0)`, improve test coverage slightly, reduce memory usage of timers
Diffstat (limited to 'test/bun.js/setTimeout.test.js')
-rw-r--r--test/bun.js/setTimeout.test.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/bun.js/setTimeout.test.js b/test/bun.js/setTimeout.test.js
index 79039a568..a899867df 100644
--- a/test/bun.js/setTimeout.test.js
+++ b/test/bun.js/setTimeout.test.js
@@ -41,3 +41,43 @@ it("clearTimeout", async () => {
});
expect(called).toBe(false);
});
+
+it("setTimeout(() => {}, 0)", async () => {
+ var called = false;
+ setTimeout(() => {
+ called = true;
+ }, 0);
+ await new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 10);
+ });
+ expect(called).toBe(true);
+ var ranFirst = -1;
+ setTimeout(() => {
+ if (ranFirst === -1) ranFirst = 1;
+ }, 1);
+ setTimeout(() => {
+ if (ranFirst === -1) ranFirst = 0;
+ }, 0);
+
+ await new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 10);
+ });
+ expect(ranFirst).toBe(0);
+
+ ranFirst = -1;
+
+ const id = setTimeout(() => {
+ ranFirst = 0;
+ }, 0);
+ clearTimeout(id);
+ await new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 10);
+ });
+ expect(ranFirst).toBe(-1);
+});