2017-09-24 22:23:22 +00:00
|
|
|
module TK.SpaceTac.Specs {
|
2017-10-26 21:47:13 +00:00
|
|
|
testing("Shop", test => {
|
|
|
|
test.case("generates a stock", check => {
|
2017-03-23 18:58:09 +00:00
|
|
|
let shop = new Shop();
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals((<any>shop).stock.length, 0);
|
2017-10-29 21:08:55 +00:00
|
|
|
check.greater(shop.getStock().length, 20);
|
2017-03-23 18:58:09 +00:00
|
|
|
});
|
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
test.case("buys and sells items", check => {
|
2017-03-23 18:58:09 +00:00
|
|
|
let equ1 = new Equipment(SlotType.Shield, "shield");
|
2017-04-25 20:54:23 +00:00
|
|
|
equ1.price = 50;
|
2017-03-23 18:58:09 +00:00
|
|
|
let equ2 = new Equipment(SlotType.Hull, "hull");
|
2017-04-25 20:54:23 +00:00
|
|
|
equ2.price = 150;
|
2017-10-09 22:59:49 +00:00
|
|
|
let shop = new Shop(1, [equ1, equ2], 0);
|
2017-03-23 18:58:09 +00:00
|
|
|
let fleet = new Fleet();
|
|
|
|
fleet.credits = 1000;
|
2017-10-29 21:08:55 +00:00
|
|
|
check.patch(shop, "getPrice", () => 800);
|
2017-03-23 18:58:09 +00:00
|
|
|
|
|
|
|
let result = shop.sellToFleet(equ1, fleet);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(result, true);
|
|
|
|
check.equals(shop.getStock(), [equ2]);
|
|
|
|
check.equals(fleet.credits, 200);
|
2017-03-23 18:58:09 +00:00
|
|
|
result = shop.sellToFleet(equ2, fleet);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(result, false);
|
|
|
|
check.equals(shop.getStock(), [equ2]);
|
|
|
|
check.equals(fleet.credits, 200);
|
2017-03-23 18:58:09 +00:00
|
|
|
|
|
|
|
result = shop.buyFromFleet(equ1, fleet);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(result, true);
|
|
|
|
check.equals(shop.getStock(), [equ1, equ2]);
|
|
|
|
check.equals(fleet.credits, 1000);
|
2017-03-23 18:58:09 +00:00
|
|
|
});
|
2017-07-06 22:55:29 +00:00
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
test.case("generates secondary missions", check => {
|
2017-07-06 22:55:29 +00:00
|
|
|
let universe = new Universe();
|
|
|
|
universe.generate(4);
|
|
|
|
let start = universe.getStartLocation();
|
|
|
|
|
|
|
|
let shop = new Shop();
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals((<any>shop).missions.length, 0);
|
2017-07-06 22:55:29 +00:00
|
|
|
|
|
|
|
let result = shop.getMissions(start, 4);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(result.length, 4);
|
|
|
|
check.equals((<any>shop).missions.length, 4);
|
2017-07-06 22:55:29 +00:00
|
|
|
|
|
|
|
let oresult = shop.getMissions(start, 4);
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(oresult, result);
|
2017-07-06 22:55:29 +00:00
|
|
|
|
|
|
|
result.forEach(mission => {
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(mission.main, false);
|
2017-07-06 22:55:29 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
test.case("assigns missions to a fleet", check => {
|
2017-07-06 22:55:29 +00:00
|
|
|
let shop = new Shop();
|
|
|
|
let player = new Player();
|
|
|
|
let mission = new Mission(new Universe());
|
|
|
|
(<any>shop).missions = [mission];
|
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals(shop.getMissions(new StarLocation(), 1), [mission]);
|
|
|
|
check.equals(player.missions.secondary, []);
|
2017-07-06 22:55:29 +00:00
|
|
|
|
|
|
|
shop.acceptMission(mission, player);
|
|
|
|
|
2017-10-26 21:47:13 +00:00
|
|
|
check.equals((<any>shop).missions, []);
|
|
|
|
check.equals(player.missions.secondary, [mission]);
|
|
|
|
check.same(mission.fleet, player.fleet);
|
2017-07-06 22:55:29 +00:00
|
|
|
});
|
2017-03-23 18:58:09 +00:00
|
|
|
});
|
|
|
|
}
|