Mercurial > repos > IBBoard.WarFoundry.API.Tests
diff API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirementTest.cs @ 214:1674a499168e
Re #379:
* Make all tests test both Unit and UnitType by modifying abstract class's helper methods
* Re-implement UnitRequiresAtLeastNUnitsRequirementTest tests (adding and validation)
* Remove unused tests from Requires...
TODO: Re-implement equality testing
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 26 Feb 2012 20:18:45 +0000 |
parents | 325943cb1db0 |
children | 9bf34e88da89 |
line wrap: on
line diff
--- a/API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirementTest.cs Sun Feb 26 15:38:13 2012 +0000 +++ b/API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirementTest.cs Sun Feb 26 20:18:45 2012 +0000 @@ -1,4 +1,4 @@ -// This file (UnitRequiresAtLeastNUnitsRequirement.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard +// This file (UnitRequiresAtLeastNUnitsRequirementTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard // // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. using System; @@ -32,30 +32,9 @@ public void TestAddingUnitWithNoUnitsAndOneUnitTypeRequired() { Army army = new Army(mockRace, "Test", 1000); - Unit unit = CreateUnitOfType(unitType1, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); - Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed)); - } - - [Test()] - public void TestAddingUnitWithOneUnitAndOneUnitTypeRequired() - { - Army army = new Army(mockRace, "Test", 1000); - AddUnitOfTypeToArmy(unitType2, army); - Unit unit = CreateUnitOfType(unitType1, army); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2); - Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed)); - } - - [Test()] - public void TestAddingUnitTypeWithNoUnitsAndOneUnitTypeRequired() - { - Army army = new Army(mockRace, "Test", 1000); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0)."); } [Test()] @@ -65,7 +44,7 @@ AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); + Assert_That__PassesAdding(req, unitType1, army); } [Test()] @@ -75,7 +54,7 @@ UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); req.AddUnitTypeRequirement(unitType3); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0); 1 × " + unitType3.Name + " (would have 0)."); } [Test()] @@ -86,7 +65,7 @@ UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); req.AddUnitTypeRequirement(unitType3); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType3.Name + " (would have 0)."); } [Test()] @@ -97,7 +76,7 @@ UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); req.AddUnitTypeRequirement(unitType3); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0)."); } [Test()] @@ -109,7 +88,7 @@ UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); req.AddUnitTypeRequirement(unitType3); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); + Assert_That__PassesAdding(req, unitType1, army); } [Test()] @@ -119,17 +98,26 @@ AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " (would have 1)."); } [Test()] - public void TestAddingUnrelatedUnitTypeIsAllowedWhenRequirementsNotMet() + public void TestAddingUnrelatedUnitTypeValidatesAsNotApplicable() { Army army = new Army(mockRace, "Test", 1000); - AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.AllowsAdding(unitType3, army), Is.EqualTo(Validation.NotApplicable)); + Assert_That__AddingNotApplicable(req, unitType3, army); + } + + [Test()] + public void TestAddingUnrelatedUnitTypeValidatesAsNotApplicableWhenRequirementsNotMet() + { + Army army = new Army(mockRace, "Test", 1000); + AddUnitOfTypeToArmy(unitType1, army); + UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); + req.AddUnitTypeRequirement(unitType2, 2); + Assert_That__AddingNotApplicable(req, unitType3, army); } [Test()] @@ -140,7 +128,7 @@ AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); + Assert_That__PassesAdding(req, unitType1, army); } [Test()] @@ -150,7 +138,7 @@ AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); + Assert_That__PassesAdding(req, unitType1, army); } [Test()] @@ -160,166 +148,137 @@ AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " (would have 1)."); AddUnitOfTypeToArmy(unitType2, army); - Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); + Assert_That__PassesAdding(req, unitType1, army); } [Test()] - public void TestValidityOfArmyWithNoUnitsAndOneUnitTypeRequired() + public void TestValidatingWithNoUnitsAndOneUnitTypeRequired() { Army army = new Army(mockRace, "Test", 1000); - AddUnitOfTypeToArmy(unitType1, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); - Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed)); - } - - [Test()] - public void TestValidityOfArmyWithOneUnitAndOneUnitTypeRequired() - { - Army army = new Army(mockRace, "Test", 1000); - AddUnitOfTypeToArmy(unitType2, army); AddUnitOfTypeToArmy(unitType1, army); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2); - Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed)); + Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " (have 0)."); } [Test()] - public void TestValidityOfArmyWhenNoRequireeAndRequirementNotMet() - { - Army army = new Army(mockRace, "Test", 1000); - AddUnitOfTypeToArmy(unitType2, army); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.NotApplicable)); - } - - [Test] - public void TestSatisfyingRequirementChangesResult() + public void TestValidatingWithOneUnitAndOneUnitTypeRequired() { Army army = new Army(mockRace, "Test", 1000); AddUnitOfTypeToArmy(unitType1, army); + AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); - Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed)); - AddUnitOfTypeToArmy(unitType2, army); - Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed)); + Assert_That__ValidationPasses(req, army); } - [Test] - public void TestAddingMinNumberUnitTypePassesRequirement() + [Test()] + public void TestValidatingWithNoUnitsAndTwoUnitTypesRequired() { Army army = new Army(mockRace, "Test", 1000); + UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); + req.AddUnitTypeRequirement(unitType2); + req.AddUnitTypeRequirement(unitType3); AddUnitOfTypeToArmy(unitType1, army); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.AllowsAdding(unitType2, army), Is.EqualTo(Validation.Failed)); - AddUnitOfTypeToArmy(unitType2, army); - Assert.That(req.AllowsAdding(unitType2, army), Is.EqualTo(Validation.Passed)); + Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " (have 0); 1 × " + unitType3.Name + " (have 0)."); } - [Test] - public void TestValidationMessageIsBlankForPass() + [Test()] + public void TestValidatingWithOneUnitAndTwoUnitTypesRequired() { Army army = new Army(mockRace, "Test", 1000); AddUnitOfTypeToArmy(unitType1, army); AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); - Assert.That(req.GetValidationMessage(army), Is.Empty); + req.AddUnitTypeRequirement(unitType3); + Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType3.Name + " (have 0)."); } - [Test] - public void TestValidationMessageIsCorrectForFailWithOneUnitRequired() - { - Army army = new Army(mockRace, "Test", 1000); - AddUnitOfTypeToArmy(unitType1, army); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2); - Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " (have 0).")); - } - - [Test] - public void TestValidationMessageIsCorrectForFailWithTwoOfOneUnitRequired() + [Test()] + public void TestValidatingWithOtherOneUnitAndTwoUnitTypesRequired() { Army army = new Army(mockRace, "Test", 1000); AddUnitOfTypeToArmy(unitType1, army); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " (have 0).")); - } - - [Test] - public void TestValidationMessageIsCorrectForFailWithTwoUnitsRequired() - { - Army army = new Army(mockRace, "Test", 1000); - AddUnitOfTypeToArmy(unitType1, army); + AddUnitOfTypeToArmy(unitType3, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); req.AddUnitTypeRequirement(unitType3); - Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " (have 0); 1 × " + unitType3.Name + " (have 0).")); + AddUnitOfTypeToArmy(unitType1, army); + Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " (have 0)."); } - [Test] - public void TestAllowsAddingMessageIsBlankForPass() + [Test()] + public void TestValidatingWithBothUnitsAndTwoUnitTypesRequired() { Army army = new Army(mockRace, "Test", 1000); AddUnitOfTypeToArmy(unitType1, army); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - Assert.That(req.GetAllowsAddingMessage(unitType1, army), Is.Empty); - } - - [Test] - public void TestAllowsAddingMessageIsCorrectForFailWithTwoOfOneUnitRequired() - { - Army army = new Army(mockRace, "Test", 1000); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2, 2); - Assert.That(req.GetAllowsAddingMessage(unitType2, army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " (would have 1).")); - } - - [Test] - public void TestAllowsAddingMessageIsCorrectForFailWithTwoUnitsRequired() - { - Army army = new Army(mockRace, "Test", 1000); + AddUnitOfTypeToArmy(unitType2, army); + AddUnitOfTypeToArmy(unitType3, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); req.AddUnitTypeRequirement(unitType3); - Assert.That(req.GetAllowsAddingMessage(unitType2, army), Is.EqualTo("Army must contain: 1 × " + unitType3.Name + " (would have 0).")); - } - - [Test] - public void TestAllowsAddingMessageIsCorrectForFailWithTwoUnitsRequiredOtherUnit() - { - Army army = new Army(mockRace, "Test", 1000); - UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2); - req.AddUnitTypeRequirement(unitType3); - Assert.That(req.GetAllowsAddingMessage(unitType3, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " (would have 0).")); + Assert_That__ValidationPasses(req, army); } - [Test] - public void TestAllowsAddingMessageIsCorrectForFailWithTwoUnitsRequiredWithOneUnit() + [Test()] + public void TestValidatingWithOneUnitAndTwoOfOneUnitTypeRequired() { Army army = new Army(mockRace, "Test", 1000); + AddUnitOfTypeToArmy(unitType1, army); AddUnitOfTypeToArmy(unitType2, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); - req.AddUnitTypeRequirement(unitType2); - req.AddUnitTypeRequirement(unitType3); - Assert.That(req.GetAllowsAddingMessage(unitType2, army), Is.EqualTo("Army must contain: 1 × " + unitType3.Name + " (would have 0).")); + req.AddUnitTypeRequirement(unitType2, 2); + AddUnitOfTypeToArmy(unitType1, army); + Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " (have 1)."); } - [Test] - public void TestAllowsAddingMessageIsCorrectForFailWithTwoUnitsRequiredWithOtherUnit() + [Test()] + public void TestValidatingWithUnrelatedUnitTypeValidatesAsNotApplicable() { Army army = new Army(mockRace, "Test", 1000); AddUnitOfTypeToArmy(unitType3, army); UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); + req.AddUnitTypeRequirement(unitType2, 2); + Assert_That__NotApplicable(req, army); + } + + [Test()] + public void TestValidatingWithTwoUnitsAndTwoOfOneUnitTypeRequired() + { + Army army = new Army(mockRace, "Test", 1000); + AddUnitOfTypeToArmy(unitType1, army); + AddUnitOfTypeToArmy(unitType2, army); + AddUnitOfTypeToArmy(unitType2, army); + UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); + req.AddUnitTypeRequirement(unitType2, 2); + Assert_That__ValidationPasses(req, army); + } + + [Test()] + public void TestValidatingRequirementWithNoNumberDefaultsToHavingOne() + { + Army army = new Army(mockRace, "Test", 1000); + AddUnitOfTypeToArmy(unitType1, army); + AddUnitOfTypeToArmy(unitType2, army); + UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); req.AddUnitTypeRequirement(unitType2); - req.AddUnitTypeRequirement(unitType3); - Assert.That(req.GetAllowsAddingMessage(unitType3, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " (would have 0).")); + Assert_That__ValidationPasses(req, army); + } + + [Test()] + public void TestAddingUnitTypeMakesRequirementPassValidating() + { + Army army = new Army(mockRace, "Test", 1000); + AddUnitOfTypeToArmy(unitType1, army); + AddUnitOfTypeToArmy(unitType2, army); + UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); + req.AddUnitTypeRequirement(unitType2, 2); + Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " (have 1)."); + AddUnitOfTypeToArmy(unitType2, army); + Assert_That__ValidationPasses(req, army); } } }