# HG changeset patch # User IBBoard # Date 1303727509 0 # Node ID 8c3bba80a25e95454098ce3683462fa7898efac5 # Parent 4e1a477c38d8db1c931f9879e578bcde83cff379 Re #27: Unit requirements * Add tests for mixed requirements * Add tests for adding units diff -r 4e1a477c38d8 -r 8c3bba80a25e API/Objects/Requirement/RequirementHandlerTests.cs --- a/API/Objects/Requirement/RequirementHandlerTests.cs Fri Apr 22 10:30:26 2011 +0000 +++ b/API/Objects/Requirement/RequirementHandlerTests.cs Mon Apr 25 10:31:49 2011 +0000 @@ -53,6 +53,119 @@ Army army = new Army(race, "test", 1000); Assert.That(RequirementHandler.ValidateArmy(army), Is.EqualTo(Validation.Passed)); } + + [Test()] + public void TestArmyWithMixedRequirementsWithFailFails() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new PassingRequirement()); + mockUnitType.AddRequirement(new FailingRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.ValidateArmy(army), Is.EqualTo(Validation.Failed)); + } + + [Test()] + public void TestArmyWithMixedRequirementsWithFailInOtherOrderFails() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new FailingRequirement()); + mockUnitType.AddRequirement(new PassingRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.ValidateArmy(army), Is.EqualTo(Validation.Failed)); + } + + [Test()] + public void TestArmyWithMixedRequirementsWithNoFailsPasses() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new PassingRequirement()); + mockUnitType.AddRequirement(new NotApplicableRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.ValidateArmy(army), Is.EqualTo(Validation.Passed)); + } + + [Test()] + public void TestCanAddToArmyWithNoRequirementsValidates() + { + MockRace race = new MockRace(); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.AllowsAdding(new MockUnitType(), army), Is.EqualTo(Validation.Passed)); + } + + [Test()] + public void TestCanAddToArmyWithFailingRequirementFails() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new FailingRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.AllowsAdding(mockUnitType, army), Is.EqualTo(Validation.Failed)); + } + + [Test()] + public void TestCanAddToArmyWithPassingRequirementPasses() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new PassingRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.AllowsAdding(mockUnitType, army), Is.EqualTo(Validation.Passed)); + } + + [Test()] + public void TestCanAddToArmyWithNotApplicableRequirementPasses() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new NotApplicableRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.AllowsAdding(mockUnitType, army), Is.EqualTo(Validation.Passed)); + } + + [Test()] + public void TestCanAddToArmyWithMixedRequirementsWithFailFails() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new PassingRequirement()); + mockUnitType.AddRequirement(new FailingRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.AllowsAdding(mockUnitType, army), Is.EqualTo(Validation.Failed)); + } + + [Test()] + public void TestCanAddToArmyWithMixedRequirementsWithFailInOtherOrderFails() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new FailingRequirement()); + mockUnitType.AddRequirement(new PassingRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.AllowsAdding(mockUnitType, army), Is.EqualTo(Validation.Failed)); + } + + [Test()] + public void TestCanAddToArmyWithMixedRequirementsWithNoFailsPasses() + { + MockRace race = new MockRace(); + MockUnitType mockUnitType = new MockUnitType(); + mockUnitType.AddRequirement(new PassingRequirement()); + mockUnitType.AddRequirement(new NotApplicableRequirement()); + race.AddUnitType(mockUnitType); + Army army = new Army(race, "test", 1000); + Assert.That(RequirementHandler.AllowsAdding(mockUnitType, army), Is.EqualTo(Validation.Passed)); + } } }