public void PerformAction_DoesNotBuildACity_BecauseTheTileIsNotVacant(ICity<City> city, IUnit<Settler> unit) { // :::: ARRANGE :::: var stubCities = StubWorld.Cities(new[] { city }); var stubUnits = StubWorld.Units(new[] { unit }); var stubCityFactory = StubFactories.SimpleCityFactory; var cityBuildingUnit = new CityBuildingAction<Settler>(unit, stubUnits, stubCities, stubCityFactory); // :::: ACT :::: cityBuildingUnit.PerformAction(); // :::: ASSERT :::: var existingCity = stubCities.Single(); existingCity.Should().BeSameAs(city); }
public void PerformAction_BuildsAFriendlyCity_BecauseTheTileIsVacant(IUnit<Settler> unit) { // :::: ARRANGE :::: var stubCities = StubWorld.NoCities; var stubUnits = StubWorld.Units(new[] { unit }); var stubCityFactory = StubFactories.SimpleCityFactory; var cityBuildingUnit = new CityBuildingAction<Settler>(unit, stubUnits, stubCities, stubCityFactory); // :::: ACT :::: cityBuildingUnit.PerformAction(); // :::: ASSERT :::: var newlyBuiltCity = stubCities.Single(); newlyBuiltCity.Location.Should().Be(unit.Location); newlyBuiltCity.Owner.Should().Be(unit.Owner); }
public void PerformAction_RemovesTheCityBuildingUnit_BecauseTheTileIsVacant(IUnit<Settler> unit, IUnit[] otherUnits) { // :::: ARRANGE :::: var stubCities = StubWorld.NoCities; var stubUnits = StubWorld.Units(new[] { unit }.Concat(otherUnits)); var stubCityFactory = StubFactories.SimpleCityFactory; var cityBuildingUnit = new CityBuildingAction<Settler>(unit, stubUnits, stubCities, stubCityFactory); // :::: ACT :::: cityBuildingUnit.PerformAction(); // :::: ASSERT :::: stubUnits.Should().NotContain(unit).And.Contain(otherUnits); }