1
0
Fork 0
spacetac/src/ui/battle/PlanDisplay.spec.ts

55 lines
2.1 KiB
TypeScript

module TK.SpaceTac.UI.Specs {
testing("PlanDisplay", test => {
let testgame = setupEmptyView(test);
function compareDisplay(check: TestContext, plan: BattlePlan, display: PlanDisplay): void {
const container = display.container;
const children = cfilter(container.list, UIContainer);
check.equals(children.length, plan.fleets.length, "fleet containers count");
zip(plan.fleets, children).forEach(([plan, container], idx) => {
check.in(`fleet ${idx}`, check => {
const children = cfilter(container.list, UIContainer);
check.equals(children.length, plan.ships.length, "ship containers count");
zip(plan.ships, children).forEach(([plan, container], idx) => {
});
});
});
}
test.case("updates from a battle plan", check => {
let battle = new Battle();
battle.fleets[0].addShip();
battle.fleets[1].addShip();
battle.fleets[1].addShip();
const display = new PlanDisplay(testgame.view.getLayer("test").getBuilder());
check.in("initial state", check => {
compareDisplay(check, { fleets: [] }, display);
});
let planning = new BattlePlanning(battle);
display.update(planning.getBattlePlan());
check.in("initial update", check => {
compareDisplay(check, planning.getBattlePlan(), display);
});
display.update(planning.getBattlePlan());
check.in("no change", check => {
// TODO Check that no object was added/removed
compareDisplay(check, planning.getBattlePlan(), display);
});
battle = new Battle();
battle.fleets[0].addShip();
battle.fleets[1].addShip();
battle.fleets[1].addShip();
display.update(planning.getBattlePlan());
check.in("update whole", check => {
compareDisplay(check, planning.getBattlePlan(), display);
});
});
});
}