2017-09-24 22:23:22 +00:00
|
|
|
module TK.SpaceTac.Specs {
|
2017-05-25 23:09:29 +00:00
|
|
|
describe("BattleStats", function () {
|
|
|
|
it("collects stats", function () {
|
|
|
|
let stats = new BattleStats();
|
|
|
|
expect(stats.stats).toEqual({});
|
|
|
|
|
|
|
|
stats.addStat("Test", 1, true);
|
|
|
|
expect(stats.stats).toEqual({ Test: [1, 0] });
|
|
|
|
|
|
|
|
stats.addStat("Test", 1, true);
|
|
|
|
expect(stats.stats).toEqual({ Test: [2, 0] });
|
|
|
|
|
|
|
|
stats.addStat("Test", 1, false);
|
|
|
|
expect(stats.stats).toEqual({ Test: [2, 1] });
|
|
|
|
|
|
|
|
stats.addStat("Other Test", 10, true);
|
|
|
|
expect(stats.stats).toEqual({ Test: [2, 1], "Other Test": [10, 0] });
|
|
|
|
})
|
|
|
|
|
|
|
|
it("collects damage dealt", function () {
|
|
|
|
let stats = new BattleStats();
|
|
|
|
let battle = new Battle();
|
|
|
|
let attacker = battle.fleets[0].addShip();
|
|
|
|
let defender = battle.fleets[1].addShip();
|
2017-05-29 23:15:32 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0]);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({});
|
|
|
|
|
|
|
|
battle.log.add(new DamageEvent(attacker, 10, 12));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({ "Damage dealt": [0, 22] });
|
|
|
|
|
|
|
|
battle.log.add(new DamageEvent(defender, 40, 0));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({ "Damage dealt": [40, 22] });
|
|
|
|
|
|
|
|
battle.log.add(new DamageEvent(attacker, 5, 4));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({ "Damage dealt": [40, 31] });
|
|
|
|
})
|
|
|
|
|
|
|
|
it("collects distance moved", function () {
|
|
|
|
let stats = new BattleStats();
|
|
|
|
let battle = new Battle();
|
|
|
|
let attacker = battle.fleets[0].addShip();
|
|
|
|
let defender = battle.fleets[1].addShip();
|
2017-05-29 23:15:32 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0]);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({});
|
|
|
|
|
2017-05-30 16:24:55 +00:00
|
|
|
battle.log.add(new MoveEvent(attacker, new ArenaLocationAngle(0, 0), new ArenaLocationAngle(10, 0)));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({ "Move distance (km)": [10, 0] });
|
|
|
|
|
2017-05-30 16:24:55 +00:00
|
|
|
battle.log.add(new MoveEvent(defender, new ArenaLocationAngle(10, 5), new ArenaLocationAngle(10, 63)));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({ "Move distance (km)": [10, 58] });
|
|
|
|
})
|
|
|
|
|
|
|
|
it("collects deployed drones", function () {
|
|
|
|
let stats = new BattleStats();
|
|
|
|
let battle = new Battle();
|
|
|
|
let attacker = battle.fleets[0].addShip();
|
|
|
|
let defender = battle.fleets[1].addShip();
|
2017-05-29 23:15:32 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0]);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({});
|
|
|
|
|
|
|
|
battle.log.add(new DroneDeployedEvent(new Drone(attacker)));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({ "Drones deployed": [1, 0] });
|
|
|
|
|
|
|
|
battle.log.add(new DroneDeployedEvent(new Drone(defender)));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-05-25 23:09:29 +00:00
|
|
|
expect(stats.stats).toEqual({ "Drones deployed": [1, 1] });
|
|
|
|
})
|
2017-09-14 21:56:28 +00:00
|
|
|
|
|
|
|
it("collects power usage", function () {
|
|
|
|
let stats = new BattleStats();
|
|
|
|
let battle = new Battle();
|
|
|
|
let attacker = battle.fleets[0].addShip();
|
|
|
|
let defender = battle.fleets[1].addShip();
|
|
|
|
stats.processLog(battle.log, battle.fleets[0]);
|
|
|
|
expect(stats.stats).toEqual({});
|
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battle.log.add(new ActionAppliedEvent(attacker, new BaseAction("nop", "nop"), null, 4));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-09-14 21:56:28 +00:00
|
|
|
expect(stats.stats).toEqual({ "Power used": [4, 0] });
|
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battle.log.add(new ActionAppliedEvent(defender, new BaseAction("nop", "nop"), null, 2));
|
2017-09-14 22:24:53 +00:00
|
|
|
stats.processLog(battle.log, battle.fleets[0], true);
|
2017-09-14 21:56:28 +00:00
|
|
|
expect(stats.stats).toEqual({ "Power used": [4, 2] });
|
|
|
|
})
|
2017-09-14 22:24:53 +00:00
|
|
|
|
|
|
|
it("evaluates equipment depreciation", function () {
|
|
|
|
let stats = new BattleStats();
|
|
|
|
let battle = new Battle();
|
|
|
|
let attacker = battle.fleets[0].addShip();
|
|
|
|
let defender = battle.fleets[1].addShip();
|
|
|
|
|
|
|
|
let equ1 = TestTools.addEngine(attacker, 50);
|
|
|
|
equ1.price = 1000;
|
|
|
|
let equ2 = TestTools.addEngine(defender, 50);
|
|
|
|
equ2.price = 1100;
|
|
|
|
|
|
|
|
stats.onBattleStart(attacker.fleet, defender.fleet);
|
|
|
|
expect(stats.stats).toEqual({ "Equipment wear (zotys)": [1000, 1100] });
|
|
|
|
|
|
|
|
equ1.price = 500;
|
|
|
|
equ2.price = 800;
|
|
|
|
|
|
|
|
stats.onBattleEnd(attacker.fleet, defender.fleet);
|
|
|
|
expect(stats.stats).toEqual({ "Equipment wear (zotys)": [500, 300] });
|
|
|
|
})
|
2017-05-25 23:09:29 +00:00
|
|
|
})
|
|
|
|
}
|