public void ComposeCivilizations_CallsIntoPolicyComposerForPolicyData() { var templateOne = BuildCivTemplate("Civ One", Color.black); var civOne = BuildCivilization(templateOne, 1, 10); var policyData = new SerializableSocialPolicyData(); MockPolicyComposer.Setup(composer => composer.ComposePoliciesFromCiv(civOne)).Returns(policyData); var mapData = new SerializableMapData(); var civComposer = Container.Resolve <CivilizationComposer>(); civComposer.ComposeCivilizations(mapData); Assert.AreEqual(policyData, mapData.Civilizations[0].SocialPolicies); }
public void DecomposeCivilizations_CallsIntoPolicyComposerCorrectly() { var policyDataOne = new SerializableSocialPolicyData(); var policyDataTwo = new SerializableSocialPolicyData(); var mapData = new SerializableMapData() { Civilizations = new List <SerializableCivilizationData>() { new SerializableCivilizationData() { TemplateName = "Template One", SocialPolicies = policyDataOne }, new SerializableCivilizationData() { TemplateName = "Template Two", SocialPolicies = policyDataTwo } }, CivDiscoveryPairs = new List <Tuple <string, string> >() }; BuildCivTemplate("Template One", Color.white); BuildCivTemplate("Template Two", Color.red); var civComposer = Container.Resolve <CivilizationComposer>(); civComposer.DecomposeCivilizations(mapData); MockPolicyComposer.Verify( composer => composer.DecomposePoliciesIntoCiv( policyDataOne, It.Is <ICivilization>(civ => civ.Template.Name.Equals("Template One")) ), Times.Once, "DecomposePoliciesIntoCiv not called as expected on anticipated civOne and policyDataOne" ); MockPolicyComposer.Verify( composer => composer.DecomposePoliciesIntoCiv( policyDataTwo, It.Is <ICivilization>(civ => civ.Template.Name.Equals("Template Two")) ), Times.Once, "DecomposePoliciesIntoCiv not called as expected on anticipated civTwo and policyDataTwo" ); }
public void DecomposePoliciesIntoCiv_OverridesUnlockedPoliciesWithCorrectAvailablePolicies() { var policyOne = BuildPolicy("Policy One"); BuildPolicy("Policy Two"); var policyThree = BuildPolicy("Policy Three"); var civOne = BuildCivilization("Civ One", null, null); var policyData = new SerializableSocialPolicyData() { UnlockedTrees = new List <string>(), UnlockedPolicies = new List <string>() { "Policy One", "Policy Three" } }; var composer = Container.Resolve <SocialPolicyComposer>(); MockPolicyCanon.Setup( canon => canon.OverrideUnlockedPoliciesForCiv( It.IsAny <IEnumerable <ISocialPolicyDefinition> >(), It.IsAny <ICivilization>() ) ).Callback(delegate(IEnumerable <ISocialPolicyDefinition> newUnlockedPolicies, ICivilization civ) { Assert.AreEqual(civOne, civ, "OverrideUnlockedPoliciesForCiv was given an unexpected civ argument"); CollectionAssert.AreEquivalent( new List <ISocialPolicyDefinition>() { policyOne, policyThree }, newUnlockedPolicies, "OverrideUnlockedPoliciesForCiv was given an unexpected newUnlockedPolicies argument" ); Assert.Pass(); }); composer.DecomposePoliciesIntoCiv(policyData, civOne); Assert.Fail("OverrideUnlockedPoliciesForCiv was never called"); }