import { GameClockScheduler } from "../../src/game/GameClockScheduler"; describe("GameClockScheduler", () => { beforeEach(() => jest.useFakeTimers()); afterEach(() => jest.useRealTimers()); it("ends games out of time on every interval until stopped", () => { const gameManager = { endGamesOutOfTime: jest.fn() }; const scheduler = new GameClockScheduler(gameManager, 1_000); scheduler.start(); scheduler.start(); // starting twice does not run it twice jest.advanceTimersByTime(999); expect(gameManager.endGamesOutOfTime).not.toHaveBeenCalled(); jest.advanceTimersByTime(2_001); expect(gameManager.endGamesOutOfTime).toHaveBeenCalledTimes(3); scheduler.stop(); jest.advanceTimersByTime(10_000); expect(gameManager.endGamesOutOfTime).toHaveBeenCalledTimes(3); }); });