first commmit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user