aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/bun.js/event-emitter.test.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/bun.js/event-emitter.test.ts b/test/bun.js/event-emitter.test.ts
index 4c8d70452..952805cf8 100644
--- a/test/bun.js/event-emitter.test.ts
+++ b/test/bun.js/event-emitter.test.ts
@@ -13,4 +13,42 @@ describe("EventEmitter", () => {
emitter.setMaxListeners(100);
expect(emitter.getMaxListeners()).toBe(100);
});
+
+ // These are also tests for the done() function in the test runner.
+ test("EventEmitter emit (different tick)", (done) => {
+ var emitter = new EventEmitter();
+ emitter.on("wow", () => done());
+ queueMicrotask(() => {
+ emitter.emit("wow");
+ });
+ });
+
+ // Unlike Jest, bun supports async and done
+ test("async EventEmitter emit (microtask)", async (done) => {
+ await 1;
+ var emitter = new EventEmitter();
+ emitter.on("wow", () => done());
+ emitter.emit("wow");
+ });
+
+ test("async EventEmitter emit (microtask) after", async (done) => {
+ var emitter = new EventEmitter();
+ emitter.on("wow", () => done());
+ await 1;
+ emitter.emit("wow");
+ });
+
+ test("EventEmitter emit (same tick)", (done) => {
+ var emitter = new EventEmitter();
+
+ emitter.on("wow", () => done());
+
+ emitter.emit("wow");
+ });
+
+ test("EventEmitter emit (setTimeout task)", (done) => {
+ var emitter = new EventEmitter();
+ emitter.on("wow", () => done());
+ setTimeout(() => emitter.emit("wow"), 1);
+ });
});