1
0
Fork 0
spacetac/src/ui/battle/LogProcessor.spec.ts

74 lines
2.3 KiB
TypeScript
Raw Normal View History

/// <reference path="../TestGame.ts"/>
/// <reference path="../../core/events/BaseBattleEvent.ts"/>
2017-09-24 22:23:22 +00:00
module TK.SpaceTac.UI.Specs {
class FakeEvent extends BaseBattleEvent {
diff: number
constructor(diff = 1) {
super("fake");
this.diff = diff;
}
apply(battle: Battle) {
2017-10-25 22:45:53 +00:00
battle.cycle += this.diff;
}
getReverse(): BaseBattleEvent {
return new FakeEvent(-this.diff);
}
}
describe("LogProcessor", function () {
let testgame = setupBattleview();
it("steps forward and backward in time", function () {
2017-10-09 21:13:56 +00:00
let battle = testgame.view.battle;
battle.log.clear();
2017-10-09 21:13:56 +00:00
let processor = new LogProcessor(testgame.view);
processor.register(event => {
event.apply(battle);
return 0;
});
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(1);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(true);
expect(processor.atEnd()).toBe(true);
processor.stepForward();
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(1);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(true);
expect(processor.atEnd()).toBe(true);
battle.log.add(new FakeEvent());
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(1);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(true);
expect(processor.atEnd()).toBe(false);
processor.stepForward();
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(2);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(false);
expect(processor.atEnd()).toBe(true);
processor.stepForward();
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(2);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(false);
expect(processor.atEnd()).toBe(true);
processor.stepBackward();
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(1);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(true);
expect(processor.atEnd()).toBe(false);
processor.stepBackward();
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(1);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(true);
expect(processor.atEnd()).toBe(false);
processor.stepForward();
2017-10-25 22:45:53 +00:00
expect(battle.cycle).toBe(2);
2017-05-30 18:23:35 +00:00
expect(processor.atStart()).toBe(false);
expect(processor.atEnd()).toBe(true);
})
})
}