示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }