import { Game, Player, PlayerInfo, PlayerType, UnitType, } from "../src/core/game/Game"; import { setup } from "./util/Setup"; let game: Game; let player: Player; describe("PlayerImpl", () => { beforeEach(async () => { game = await setup( "plains", { infiniteGold: true, instantBuild: true, }, [new PlayerInfo("player", PlayerType.Human, null, "player_id")], ); while (game.inSpawnPhase()) { game.executeNextTick(); } player = game.player("player_id"); }); test("City can be upgraded", () => { const city = player.buildUnit(UnitType.City, game.ref(0, 0), {}); const buCity = player .buildableUnits(game.ref(0, 0)) .find((bu) => bu.type === UnitType.City); expect(buCity).toBeDefined(); expect(buCity!.canUpgrade).toBe(city.id()); }); test("DefensePost cannot be upgraded", () => { player.buildUnit(UnitType.DefensePost, game.ref(0, 0), {}); const buDefensePost = player .buildableUnits(game.ref(0, 0)) .find((bu) => bu.type === UnitType.DefensePost); expect(buDefensePost).toBeDefined(); expect(buDefensePost!.canUpgrade).toBeFalsy(); }); });