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

60 lines
2.5 KiB
TypeScript
Raw Normal View History

module TK.SpaceTac.Specs {
2017-10-26 21:47:13 +00:00
testing("DeployDroneAction", test => {
test.case("stores useful information", check => {
2017-02-07 00:08:07 +00:00
let equipment = new Equipment(SlotType.Weapon, "testdrone");
let action = new DeployDroneAction(equipment);
2017-10-26 21:47:13 +00:00
check.equals(action.code, "deploy-testdrone");
check.equals(action.name, "Deploy");
check.same(action.equipment, equipment);
2017-02-07 00:08:07 +00:00
});
2017-10-26 21:47:13 +00:00
test.case("allows to deploy in range", check => {
2017-02-07 00:08:07 +00:00
let ship = new Ship();
ship.setArenaPosition(0, 0);
let action = new DeployDroneAction(new Equipment(), 0, 8);
2017-02-07 00:08:07 +00:00
2017-10-26 21:47:13 +00:00
check.equals(action.checkTarget(ship, new Target(8, 0, null)), new Target(8, 0, null));
check.equals(action.checkTarget(ship, new Target(12, 0, null)), new Target(8, 0, null));
2017-02-07 00:08:07 +00:00
let other = new Ship();
other.setArenaPosition(8, 0);
2017-10-26 21:47:13 +00:00
check.equals(action.checkTarget(ship, new Target(8, 0, other)), null);
2017-02-07 00:08:07 +00:00
});
2017-10-26 21:47:13 +00:00
test.case("deploys a new drone", check => {
let battle = TestTools.createBattle();
let ship = battle.play_order[0];
ship.setArenaPosition(0, 0);
2017-02-07 00:08:07 +00:00
TestTools.setShipAP(ship, 3);
let equipment = new Equipment(SlotType.Weapon, "testdrone");
let action = new DeployDroneAction(equipment, 2, 8, 2, 4, [new DamageEffect(50)]);
equipment.action = action;
ship.addSlot(SlotType.Weapon).attach(equipment);
TestTools.actionChain(check, battle, [
[ship, action, new Target(5, 0)],
], [
check => {
check.equals(ship.getValue("power"), 3, "power=3");
check.equals(battle.drones.count(), 0, "drones=0");
},
check => {
check.equals(ship.getValue("power"), 1, "power=1");
check.equals(battle.drones.count(), 1, "drones=1");
let drone = battle.drones.list()[0];
check.equals(drone.code, "testdrone");
check.equals(drone.duration, 2);
check.same(drone.owner, ship.id);
check.equals(drone.x, 5);
check.equals(drone.y, 0);
check.equals(drone.radius, 4);
compare_effects(check, drone.effects, [new DamageEffect(50)]);
}
])
2017-02-07 00:08:07 +00:00
});
});
}