2017-02-07 00:08:07 +00:00
|
|
|
/// <reference path="../effects/BaseEffect.ts" />
|
|
|
|
|
2017-02-09 00:00:35 +00:00
|
|
|
module TS.SpaceTac {
|
2017-02-07 00:08:07 +00:00
|
|
|
describe("DeployDroneAction", function () {
|
|
|
|
it("stores useful information", function () {
|
|
|
|
let equipment = new Equipment(SlotType.Weapon, "testdrone");
|
|
|
|
let action = new DeployDroneAction(equipment);
|
|
|
|
|
|
|
|
expect(action.code).toEqual("deploy-testdrone");
|
|
|
|
expect(action.name).toEqual("Deploy");
|
|
|
|
expect(action.equipment).toBe(equipment);
|
|
|
|
expect(action.needs_target).toBe(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("allows to deploy in range", function () {
|
|
|
|
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-03-07 19:27:46 +00:00
|
|
|
expect(action.checkTarget(ship, new Target(8, 0, null))).toEqual(new Target(8, 0, null));
|
|
|
|
expect(action.checkTarget(ship, new Target(12, 0, null))).toEqual(new Target(8, 0, null));
|
2017-02-07 00:08:07 +00:00
|
|
|
|
|
|
|
let other = new Ship();
|
|
|
|
other.setArenaPosition(8, 0);
|
2017-03-07 19:27:46 +00:00
|
|
|
expect(action.checkTarget(ship, new Target(8, 0, other))).toBeNull();
|
2017-02-07 00:08:07 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
it("deploys a new drone", function () {
|
|
|
|
let battle = new Battle();
|
2017-03-07 19:27:46 +00:00
|
|
|
let ship = battle.fleets[0].addShip();
|
|
|
|
ship.setArenaPosition(0, 0);
|
2017-02-07 00:08:07 +00:00
|
|
|
battle.playing_ship = ship;
|
|
|
|
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
|
|
|
|
|
|
|
expect(result).toBe(true);
|
|
|
|
expect(battle.drones.length).toBe(1);
|
|
|
|
|
|
|
|
let drone = battle.drones[0];
|
2017-02-08 18:54:02 +00:00
|
|
|
expect(drone.code).toEqual("testdrone");
|
2017-02-07 00:08:07 +00:00
|
|
|
expect(drone.duration).toEqual(2);
|
|
|
|
expect(drone.owner).toBe(ship);
|
|
|
|
expect(drone.x).toEqual(5);
|
|
|
|
expect(drone.y).toEqual(0);
|
|
|
|
expect(drone.radius).toEqual(4);
|
|
|
|
expect(drone.effects).toEqual([new DamageEffect(50)]);
|
|
|
|
expect(battle.log.events).toEqual([
|
|
|
|
new DroneDeployedEvent(drone)
|
|
|
|
]);
|
|
|
|
|
2017-02-07 19:15:21 +00:00
|
|
|
expect(ship.values.power.get()).toEqual(1);
|
2017-02-07 00:08:07 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|