import { afterEach, describe, expect, it, vi } from "vitest"; import { combatNow, installCombatClock } from "./combatClock"; describe("combat clock", () => { afterEach(() => vi.useRealTimers()); it("installs a deterministic clock and restores wall time", () => { vi.useFakeTimers(); vi.setSystemTime(42_000); const restore = installCombatClock(() => 1_234); try { expect(combatNow()).toBe(1_234); } finally { restore(); } expect(combatNow()).toBe(42_000); }); it("restores nested clock installations in last-in-first-out order", () => { const restoreOuter = installCombatClock(() => 100); try { expect(combatNow()).toBe(100); const restoreInner = installCombatClock(() => 200); try { expect(combatNow()).toBe(200); } finally { restoreInner(); } expect(combatNow()).toBe(100); } finally { restoreOuter(); } }); });