import { expect, test, vi } from "vitest" import { LogScheduler, getGlobalLogScheduler } from "#Source/log/index.ts" test("LogScheduler enqueue dispatches immediately in immediate strategy", () => { const scheduler = new LogScheduler({ strategy: "immediate" }) const emit1 = vi.fn() const emit2 = vi.fn() scheduler.enqueue([ { record: { type: "log", tags: ["a"], messages: ["one"] }, emit: emit1 }, { record: { type: "info", tags: ["a"], messages: ["two"] }, emit: emit2 }, ]) expect(emit1).toHaveBeenCalledTimes(1) expect(emit2).toHaveBeenCalledTimes(1) }) test("LogScheduler run flushes queued tasks", () => { const scheduler = new LogScheduler({ strategy: "immediate" }) const emit1 = vi.fn() const emit2 = vi.fn() scheduler.enqueue([ { record: { type: "log", tags: ["a"], messages: ["one"] }, emit: emit1 }, { record: { type: "info", tags: ["a"], messages: ["two"] }, emit: emit2 }, ]) scheduler.run() expect(emit1).toHaveBeenCalledTimes(1) expect(emit2).toHaveBeenCalledTimes(1) expect(scheduler.hasTasks()).toEqual(false) }) test("getGlobalLogScheduler returns singleton instance", () => { const scheduler1 = getGlobalLogScheduler() const scheduler2 = getGlobalLogScheduler() expect(scheduler1).toBe(scheduler2) })