Files
KateLegend2_proj/tests/common/TimeMgr.test.ts
T
2026-05-06 08:17:32 +08:00

59 lines
1.5 KiB
TypeScript

import { TimeMgr } from '@common/TimeMgr';
describe('TimeMgr', () => {
let tm: TimeMgr;
beforeEach(() => {
tm = new TimeMgr();
});
it('advances both clocks at timeScale 1', () => {
tm.update(1);
tm.update(0.5);
expect(tm.gameTime).toBeCloseTo(1.5);
expect(tm.realTime).toBeCloseTo(1.5);
});
it('freezes gameTime when paused but keeps realTime ticking', () => {
tm.pause();
tm.update(1);
expect(tm.gameTime).toBe(0);
expect(tm.realTime).toBe(1);
tm.resume();
tm.update(0.5);
expect(tm.gameTime).toBeCloseTo(0.5);
expect(tm.realTime).toBeCloseTo(1.5);
});
it('honors timeScale for slow-mo', () => {
tm.setTimeScale(0.5);
tm.update(2);
expect(tm.gameTime).toBeCloseTo(1);
expect(tm.realTime).toBe(2);
});
it('clamps negative timeScale to 0', () => {
tm.setTimeScale(-3);
expect(tm.timeScale).toBe(0);
tm.update(10);
expect(tm.gameTime).toBe(0);
});
it('scaledDelta() reflects pause and timeScale', () => {
tm.setTimeScale(2);
expect(tm.scaledDelta(0.1)).toBeCloseTo(0.2);
tm.pause();
expect(tm.scaledDelta(0.1)).toBe(0);
});
it('reset() zeros everything', () => {
tm.update(1);
tm.pause();
tm.setTimeScale(0.2);
tm.reset();
expect(tm.gameTime).toBe(0);
expect(tm.realTime).toBe(0);
expect(tm.timeScale).toBe(1);
expect(tm.paused).toBe(false);
});
});