2017-09-24 22:23:22 +00:00
|
|
|
module TK.SpaceTac {
|
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);
|
2017-04-18 19:51:23 +00:00
|
|
|
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 => {
|
2017-02-07 00:08:07 +00:00
|
|
|
let battle = new Battle();
|
2017-03-07 19:27:46 +00:00
|
|
|
let ship = battle.fleets[0].addShip();
|
|
|
|
ship.setArenaPosition(0, 0);
|
2017-10-25 22:45:53 +00:00
|
|
|
TestTools.setShipPlaying(battle, ship);
|
2017-02-07 00:08:07 +00:00
|
|
|
TestTools.setShipAP(ship, 3);
|
2017-04-18 19:51:23 +00:00
|
|
|
let equipment = new Equipment(SlotType.Weapon, "testdrone");
|
|
|
|
let action = new DeployDroneAction(equipment, 2, 8, 2, 4, [new DamageEffect(50)]);
|
2017-02-07 00:08:07 +00:00
|
|
|
|
2017-03-07 19:27:46 +00:00
|
|
|
battle.log.clear();
|
|
|
|
battle.log.addFilter("value");
|
|
|
|
let result = action.apply(ship, new Target(5, 0, null));
|
2017-02-07 00:08:07 +00:00
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(result, true);
|
|
|
|
check.equals(battle.drones.length, 1);
|
2017-02-07 00:08:07 +00:00
|
|
|
|
|
|
|
let drone = battle.drones[0];
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(drone.code, "testdrone");
|
|
|
|
check.equals(drone.duration, 2);
|
|
|
|
check.same(drone.owner, ship);
|
|
|
|
check.equals(drone.x, 5);
|
|
|
|
check.equals(drone.y, 0);
|
|
|
|
check.equals(drone.radius, 4);
|
|
|
|
check.equals(drone.effects, [new DamageEffect(50)]);
|
|
|
|
check.equals(battle.log.events, [
|
2017-09-14 21:56:28 +00:00
|
|
|
new ActionAppliedEvent(ship, action, Target.newFromLocation(5, 0), 2),
|
2017-02-07 00:08:07 +00:00
|
|
|
new DroneDeployedEvent(drone)
|
|
|
|
]);
|
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(ship.values.power.get(), 1);
|
2017-02-07 00:08:07 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|