aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alex Lam S.L <alexlamsl@gmail.com> 2022-12-21 07:34:25 +0200
committerGravatar GitHub <noreply@github.com> 2022-12-20 21:34:25 -0800
commit06487ef64f6968c411420f3e8347144f3885d2ef (patch)
treee4c9082ccaf8bc2787cb2379ca4d8492ee018813
parentb2fdcad77b9e89ac5a7318a8b178c366055f8c62 (diff)
downloadbun-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.js47
-rw-r--r--test/bun.js/setInterval.test.js11
-rw-r--r--test/bun.js/setTimeout.test.js22
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);
});