23 lines
875 B
TypeScript
23 lines
875 B
TypeScript
|
|
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);
|
||
|
|
});
|
||
|
|
});
|