diff --git a/src/scripts/game/specs/EndTurnAction.spec.ts b/src/scripts/game/specs/EndTurnAction.spec.ts new file mode 100644 index 0000000..eab56b9 --- /dev/null +++ b/src/scripts/game/specs/EndTurnAction.spec.ts @@ -0,0 +1,27 @@ +/// + +module SpaceTac.Game.Specs { + describe("EndTurnAction", () => { + it("can't be applied to non-playing ship", () => { + var battle = Battle.newQuickRandom(); + var action = new EndTurnAction(); + + expect(action.canBeUsed(battle, battle.play_order[0])).toBe(true); + expect(action.canBeUsed(battle, battle.play_order[1])).toBe(false); + + var result = action.apply(battle, battle.play_order[1], null); + expect(result).toBe(false); + }); + + it("ends turn when applied", () => { + var battle = Battle.newQuickRandom(); + var action = new EndTurnAction(); + + expect(battle.playing_ship_index).toBe(0); + + var result = action.apply(battle, battle.play_order[0], null); + expect(result).toBe(true); + expect(battle.playing_ship_index).toBe(1); + }); + }); +} diff --git a/src/scripts/game/specs/MoveAction.spec.ts b/src/scripts/game/specs/MoveAction.spec.ts index b0aa4fa..e51eb33 100644 --- a/src/scripts/game/specs/MoveAction.spec.ts +++ b/src/scripts/game/specs/MoveAction.spec.ts @@ -32,5 +32,34 @@ module SpaceTac.Game { var result = action.checkTarget(null, ship1, Target.newFromShip(ship2)); expect(result).toBeNull(); }); + + it("applies to ship location, battle log and AP", function(){ + var battle = new Battle(null, null); + var ship = new Ship(null, "Test"); + ship.ap_current = 5; + ship.movement_cost = 1; + ship.arena_x = 0; + ship.arena_y = 0; + var action = new MoveAction(); + + var result = action.apply(battle, ship, Target.newFromLocation(10, 10)); + expect(result).toBe(true); + expect(ship.arena_x).toBeCloseTo(3.535533, 0.00001); + expect(ship.arena_y).toBeCloseTo(3.535533, 0.00001); + expect(ship.ap_current).toEqual(0); + + var result = action.apply(battle, ship, Target.newFromLocation(10, 10)); + expect(result).toBe(false); + expect(ship.arena_x).toBeCloseTo(3.535533, 0.00001); + expect(ship.arena_y).toBeCloseTo(3.535533, 0.00001); + expect(ship.ap_current).toEqual(0); + + expect(battle.log.events.length).toBe(1); + expect(battle.log.events[0].code).toEqual("move"); + expect(battle.log.events[0].ship).toBe(ship); + expect(battle.log.events[0].target.ship).toBeNull(); + expect(battle.log.events[0].target.x).toBeCloseTo(3.535533, 0.00001); + expect(battle.log.events[0].target.y).toBeCloseTo(3.535533, 0.00001); + }); }); } \ No newline at end of file