aboutsummaryrefslogtreecommitdiff
path: root/test/js/web/timers/setImmediate.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/js/web/timers/setImmediate.test.js')
-rw-r--r--test/js/web/timers/setImmediate.test.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/js/web/timers/setImmediate.test.js b/test/js/web/timers/setImmediate.test.js
new file mode 100644
index 000000000..9cd6fa1c9
--- /dev/null
+++ b/test/js/web/timers/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);
+});