import { describe, expect, it } from "vitest"; import { eventToGenerator } from "./eventToGenerator"; describe("eventToGenerator", () => { it("should handle synchronous events", async () => { const it = eventToGenerator((yieldCallback, returnCallback) => { yieldCallback(1); yieldCallback(2); returnCallback(3); }); const results = []; let res: IteratorResult; do { res = await it.next(); if (!res.done) { results.push(res.value); } } while (!res.done); expect(results).toEqual([1, 2]); expect(res.value).toBe(3); }); it("should handle asynchronous events", async () => { const it = eventToGenerator((yieldCallback, returnCallback) => { setTimeout(() => yieldCallback(1), 100); setTimeout(() => yieldCallback(2), 200); setTimeout(() => returnCallback(3), 300); }); const results = []; let res: IteratorResult; do { res = await it.next(); if (!res.done) { results.push(res.value); } } while (!res.done); expect(results).toEqual([1, 2]); expect(res.value).toBe(3); }); });