public void GetModifierForCity_AndCityCapitalOfItsOwner_AddsSocialPolicyCapitalBonuses() { var city = BuildCity(); var civ = BuildCiv(city, city); Func <ISocialPolicyBonusesData, int> capitalExtractor = bonuses => 1; Func <ISocialPolicyBonusesData, int> cityExtractor = bonuses => 0; Func <int, int, int> aggregator = (a, b) => a + b; var modifier = new CityModifier <int>( new CityModifier <int> .ExtractionData() { PolicyCapitalBonusesExtractor = capitalExtractor, PolicyCityBonusesExtractor = cityExtractor, Aggregator = aggregator, UnitaryValue = 1 } ); MockSocialPolicyCanon.Setup(canon => canon.GetPolicyBonusesForCiv(civ)).Returns( new List <ISocialPolicyBonusesData>() { BuildSocialPolicyBonuses(), BuildSocialPolicyBonuses(), BuildSocialPolicyBonuses(), } ); Container.Inject(modifier); Assert.AreEqual(4, modifier.GetValueForCity(city)); }
public void GetModifierForCity_GetsGlobalBuildingBonusesFromAllBuildingsOfAllOwnersCities() { var templateOne = BuildBuildingTemplate(); var templateTwo = BuildBuildingTemplate(); var templateThree = BuildBuildingTemplate(); var templateFour = BuildBuildingTemplate(); var cityOne = BuildCity(BuildBuilding(templateOne)); var cityTwo = BuildCity(BuildBuilding(templateTwo)); var cityThree = BuildCity(BuildBuilding(templateThree), BuildBuilding(templateFour)); BuildCiv(null, cityOne, cityTwo, cityThree); Func <ISocialPolicyBonusesData, int> capitalExtractor = bonuses => 0; Func <ISocialPolicyBonusesData, int> cityExtractor = bonuses => 0; Func <IBuildingTemplate, int> localBuildingExtractor = null; Func <IBuildingTemplate, int> globalBuildingExtractor = template => 20; Func <int, int, int> aggregator = (a, b) => a + b; var modifier = new CityModifier <int>( new CityModifier <int> .ExtractionData() { PolicyCapitalBonusesExtractor = capitalExtractor, PolicyCityBonusesExtractor = cityExtractor, BuildingLocalBonusesExtractor = localBuildingExtractor, BuildingGlobalBonusesExtractor = globalBuildingExtractor, Aggregator = aggregator, UnitaryValue = 1 } ); Container.Inject(modifier); Assert.AreEqual(81, modifier.GetValueForCity(cityOne)); Assert.AreEqual(81, modifier.GetValueForCity(cityTwo)); }
public void GetModifierForCity_DefaultsToTypeDefault() { var city = BuildCity(); BuildCiv(city); var modLogic = new CityModifier <int>( new CityModifier <int> .ExtractionData() { PolicyCapitalBonusesExtractor = bonuses => 0, PolicyCityBonusesExtractor = bonuses => 0, Aggregator = (a, b) => a + b, UnitaryValue = 1 } ); Container.Inject(modLogic); Assert.AreEqual(1f, modLogic.GetValueForCity(city)); }