1
0
Fork 0
spacetac/src/core/effects/CooldownEffect.spec.ts

39 lines
2.0 KiB
TypeScript

module TK.SpaceTac {
testing("CooldownEffect", test => {
test.case("cools down equipment", check => {
let battle = new Battle();
let ship = battle.fleets[0].addShip();
let weapons = [TestTools.addWeapon(ship), TestTools.addWeapon(ship), TestTools.addWeapon(ship)];
weapons.forEach(weapon => weapon.configureCooldown(1, 3));
check.equals(weapons.map(weapon => ship.actions.getCooldown(weapon).heat), [0, 0, 0]);
let effect = new CooldownEffect(0, 0);
battle.applyDiffs(effect.getOnDiffs(ship, ship));
check.equals(weapons.map(weapon => ship.actions.getCooldown(weapon).heat), [0, 0, 0]);
weapons.forEach(weapon => ship.actions.storeUsage(weapon));
check.equals(weapons.map(weapon => ship.actions.getCooldown(weapon).heat), [3, 3, 3]);
battle.applyDiffs(effect.getOnDiffs(ship, ship));
check.equals(weapons.map(weapon => ship.actions.getCooldown(weapon).heat), [0, 0, 0]);
weapons.forEach(weapon => ship.actions.storeUsage(weapon));
check.equals(weapons.map(weapon => ship.actions.getCooldown(weapon).heat), [3, 3, 3]);
effect = new CooldownEffect(1, 0);
battle.applyDiffs(effect.getOnDiffs(ship, ship));
check.equals(weapons.map(weapon => ship.actions.getCooldown(weapon).heat), [2, 2, 2]);
effect = new CooldownEffect(1, 2);
battle.applyDiffs(effect.getOnDiffs(ship, ship));
check.equals(weapons.map(weapon => ship.actions.getCooldown(weapon).heat).sort(), [1, 1, 2]);
})
test.case("builds a textual description", check => {
check.equals(new CooldownEffect(0, 0).getDescription(), "full cooling (all equipments)");
check.equals(new CooldownEffect(1, 1).getDescription(), "1 cooling (1 equipment)");
check.equals(new CooldownEffect(2, 2).getDescription(), "2 cooling (2 equipments)");
})
})
}