movementCost()); self::assertSame(0, Terrain::Open->defenseBonus()); } public function testForestCostsTwoAndGivesOneDefense(): void { self::assertSame(2, Terrain::Forest->movementCost()); self::assertSame(1, Terrain::Forest->defenseBonus()); } public function testRoughCostsTwoAndGivesNoDefense(): void { self::assertSame(2, Terrain::Rough->movementCost()); self::assertSame(0, Terrain::Rough->defenseBonus()); } public function testWaterCostsThreeAndGivesNoDefense(): void { self::assertSame(3, Terrain::Water->movementCost()); self::assertSame(0, Terrain::Water->defenseBonus()); } public function testBlockingIsImpassable(): void { self::assertNull(Terrain::Blocking->movementCost()); } }