Files
healer-man/src/game/combatClock.test.ts
T
2026-08-30 14:16:56 -04:00

40 lines
946 B
TypeScript

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();
}
});
});