1
0
Fork 0
spacetac/src/core/actions/BaseAction.spec.ts

87 lines
3.4 KiB
TypeScript
Raw Normal View History

2017-02-09 00:00:35 +00:00
module TS.SpaceTac {
describe("BaseAction", function () {
it("check if equipment can be used with remaining AP", function () {
2017-03-05 14:12:08 +00:00
var equipment = new Equipment(SlotType.Hull);
2017-09-19 15:09:06 +00:00
var action = new BaseAction("test", "Test", equipment);
spyOn(action, "getActionPointsUsage").and.returnValue(3);
var ship = new Ship();
2017-03-05 14:12:08 +00:00
ship.addSlot(SlotType.Hull).attach(equipment);
ship.values.power.setMaximal(10);
expect(action.checkCannotBeApplied(ship)).toBe("not enough power");
ship.values.power.set(5);
expect(action.checkCannotBeApplied(ship)).toBe(null);
expect(action.checkCannotBeApplied(ship, 4)).toBe(null);
expect(action.checkCannotBeApplied(ship, 3)).toBe(null);
expect(action.checkCannotBeApplied(ship, 2)).toBe("not enough power");
ship.values.power.set(3);
expect(action.checkCannotBeApplied(ship)).toBe(null);
ship.values.power.set(2);
expect(action.checkCannotBeApplied(ship)).toBe("not enough power");
});
2017-05-16 23:12:05 +00:00
it("check if equipment can be used with overheat", function () {
let equipment = new Equipment();
2017-09-19 15:09:06 +00:00
let action = new BaseAction("test", "Test", equipment);
2017-05-16 23:12:05 +00:00
let ship = new Ship();
expect(action.checkCannotBeApplied(ship)).toBe(null);
2017-05-22 16:29:04 +00:00
expect(action.getUsesBeforeOverheat()).toBe(Infinity);
2017-05-16 23:12:05 +00:00
equipment.cooldown.use();
expect(action.checkCannotBeApplied(ship)).toBe(null);
2017-05-22 16:29:04 +00:00
expect(action.getUsesBeforeOverheat()).toBe(Infinity);
2017-05-16 23:12:05 +00:00
2017-05-22 16:29:04 +00:00
equipment.cooldown.configure(2, 3);
2017-05-16 23:12:05 +00:00
expect(action.checkCannotBeApplied(ship)).toBe(null);
2017-05-22 16:29:04 +00:00
expect(action.getUsesBeforeOverheat()).toBe(2);
2017-05-16 23:12:05 +00:00
equipment.cooldown.use();
expect(action.checkCannotBeApplied(ship)).toBe(null);
2017-05-22 16:29:04 +00:00
expect(action.getUsesBeforeOverheat()).toBe(1);
expect(action.getCooldownDuration()).toBe(0);
2017-05-16 23:12:05 +00:00
equipment.cooldown.use();
expect(action.checkCannotBeApplied(ship)).toBe("overheated");
2017-05-22 16:29:04 +00:00
expect(action.getUsesBeforeOverheat()).toBe(0);
expect(action.getCooldownDuration()).toBe(3);
2017-05-16 23:12:05 +00:00
equipment.cooldown.cool();
expect(action.checkCannotBeApplied(ship)).toBe("overheated");
2017-05-22 16:29:04 +00:00
expect(action.getCooldownDuration()).toBe(2);
2017-05-16 23:12:05 +00:00
equipment.cooldown.cool();
expect(action.checkCannotBeApplied(ship)).toBe("overheated");
2017-05-22 16:29:04 +00:00
expect(action.getCooldownDuration()).toBe(1);
2017-05-16 23:12:05 +00:00
equipment.cooldown.cool();
expect(action.checkCannotBeApplied(ship)).toBe(null);
2017-05-22 16:29:04 +00:00
expect(action.getCooldownDuration()).toBe(0);
expect(action.getCooldownDuration(true)).toBe(3);
2017-05-16 23:12:05 +00:00
});
it("wears down equipment and power generators", function () {
let ship = new Ship();
TestTools.setShipAP(ship, 10);
let power = ship.listEquipment(SlotType.Power)[0];
let equipment = new Equipment(SlotType.Weapon);
2017-09-19 15:09:06 +00:00
let action = new BaseAction("test", "Test", equipment);
spyOn(action, "checkTarget").and.callFake((ship: Ship, target: Target) => target);
expect(power.wear).toBe(0);
expect(equipment.wear).toBe(0);
2017-09-19 15:09:06 +00:00
action.apply(ship);
expect(power.wear).toBe(1);
expect(equipment.wear).toBe(1);
});
});
}