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

56 lines
2.2 KiB
TypeScript

module TK.SpaceTac.Specs {
testing("MoveAction", test => {
test.case("forbids targetting a ship", check => {
var ship1 = new Ship(null, "Test1");
var ship2 = new Ship(null, "Test2");
var action = new MoveAction();
ship1.actions.addCustom(action);
var result = action.checkTarget(ship1, Target.newFromShip(ship1));
check.equals(result, null);
result = action.checkTarget(ship1, Target.newFromShip(ship2));
check.equals(result, null);
});
test.case("applies and reverts", check => {
let battle = TestTools.createBattle();
let ship = battle.fleets[0].ships[0];
ship.setArenaPosition(500, 600)
TestTools.setShipModel(ship, 100, 0, 20);
let action = new MoveAction("Engine", { max_distance: 5 });
ship.actions.addCustom(action);
TestTools.actionChain(check, battle, [
[ship, action, Target.newFromLocation(510, 605)],
], [
check => {
check.equals(ship.arena_x, 500, "ship X");
check.equals(ship.arena_y, 600, "ship Y");
},
check => {
check.nears(ship.arena_x, 504.382693, 5, "ship X");
check.nears(ship.arena_y, 602.191346, 5, "ship Y");
}
]);
});
test.case("builds a textual description", check => {
let action = new MoveAction("Engine", { max_distance: 58 });
check.equals(action.getEffectsDescription(), "Move: up to 58km");
});
test.case("can't be used while in vigilance", check => {
let ship = new Ship();
TestTools.setShipModel(ship, 10, 10, 10);
let vigilance = ship.actions.addCustom(new VigilanceAction("Vigilance"));
let action = ship.actions.addCustom(new MoveAction("Engine"));
check.equals(action.checkCannotBeApplied(ship), null);
ship.actions.toggle(vigilance, true);
check.equals(action.checkCannotBeApplied(ship), ActionUnavailability.VIGILANCE);
});
});
}