55 lines
2.1 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
});
|
|
}
|