diff --git a/tests/s25Main/integration/testGamePlayer.cpp b/tests/s25Main/integration/testGamePlayer.cpp index 2a89ca5ef..76086f101 100644 --- a/tests/s25Main/integration/testGamePlayer.cpp +++ b/tests/s25Main/integration/testGamePlayer.cpp @@ -62,10 +62,24 @@ BOOST_FIXTURE_TEST_CASE(ProductivityStats, WorldFixtureEmpty1P) BOOST_TEST(buildingRegister.CalcProductivities() == expectedProductivity, per_element()); BOOST_TEST(buildingRegister.CalcAverageProductivity() == 0u); + std::vector buildingTypes; + const auto buildingTypesEnum = helpers::EnumRange{}; + + for(auto it = buildingTypesEnum.begin(); it != buildingTypesEnum.end(); ++it) + { + buildingTypes.push_back(*it); + } + + // Sort buildings so military buildings are created first + // and no buildings are destroyed when borders are recalculated + std::sort(buildingTypes.begin(), buildingTypes.end(), [](BuildingType a, BuildingType b) { + return !BuildingProperties::IsUsual(a) > !BuildingProperties::IsUsual(b); + }); + MapPoint curPos(0, 0); - for(const auto bldType : helpers::EnumRange{}) + for(const auto bldType : buildingTypes) { - if(!BuildingProperties::IsValid(bldType) || bldType == BuildingType::HarborBuilding) + if(!BuildingProperties::IsValid(bldType)) continue; noBuilding* bld;