# HG changeset patch # User IBBoard # Date 1333221464 -3600 # Node ID fd51527f6d64190112f55f6e6e60ae790a24cd42 # Parent 12ac487af0baeb8944681f82afc8a328523fd902 Re #395: Requirements can incorrectly allow based on common divisor * Test for 3 given 6 (which would give the 1:2 ratio but not the 2:4 ratio) diff -r 12ac487af0ba -r fd51527f6d64 API/Objects/Requirement/UnitRequiresNUnitsForMUnitsRequirementTests.cs --- a/API/Objects/Requirement/UnitRequiresNUnitsForMUnitsRequirementTests.cs Sat Mar 31 15:24:41 2012 +0100 +++ b/API/Objects/Requirement/UnitRequiresNUnitsForMUnitsRequirementTests.cs Sat Mar 31 20:17:44 2012 +0100 @@ -494,7 +494,9 @@ Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 4 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (would have 4 for 3)."); AddUnitOfTypeToArmy(unitType2, army); Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 4 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (would have 5 for 3)."); - AddUnitsOfTypeToArmy(3, unitType2, army); + AddUnitOfTypeToArmy(unitType2, army); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 4 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (would have 6 for 3)."); + AddUnitsOfTypeToArmy(2, unitType2, army); Assert_That__PassesAdding(req, unitType1, army); } @@ -515,7 +517,9 @@ Assert_That__ValidationFails(req, army, "Army must contain: 4 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (have 4 for 3)."); AddUnitOfTypeToArmy(unitType2, army); Assert_That__ValidationFails(req, army, "Army must contain: 4 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (have 5 for 3)."); - AddUnitsOfTypeToArmy(3, unitType2, army); + AddUnitOfTypeToArmy(unitType2, army); + Assert_That__ValidationFails(req, army, "Army must contain: 4 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (have 6 for 3)."); + AddUnitsOfTypeToArmy(2, unitType2, army); Assert_That__ValidationPasses(req, army); } @@ -536,7 +540,9 @@ Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 4 × " + unitType2.Name + " or " + unitType3.Name + " for every 2 × " + unitType1.Name + " (would have 4 for 3)."); AddUnitOfTypeToArmy(unitType2, army); Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 4 × " + unitType2.Name + " or " + unitType3.Name + " for every 2 × " + unitType1.Name + " (would have 5 for 3)."); - AddUnitsOfTypeToArmy(3, unitType2, army); + AddUnitOfTypeToArmy(unitType2, army); + Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 4 × " + unitType2.Name + " or " + unitType3.Name + " for every 2 × " + unitType1.Name + " (would have 6 for 3)."); + AddUnitsOfTypeToArmy(2, unitType2, army); Assert_That__PassesAdding(req, unitType1, army); } @@ -558,7 +564,9 @@ Assert_That__ValidationFails(req, army, "Army must contain: 4 × " + unitType2.Name + " or " + unitType3.Name + " for every 2 × " + unitType1.Name + " (have 4 for 3)."); AddUnitOfTypeToArmy(unitType2, army); Assert_That__ValidationFails(req, army, "Army must contain: 4 × " + unitType2.Name + " or " + unitType3.Name + " for every 2 × " + unitType1.Name + " (have 5 for 3)."); - AddUnitsOfTypeToArmy(3, unitType2, army); + AddUnitOfTypeToArmy(unitType2, army); + Assert_That__ValidationFails(req, army, "Army must contain: 4 × " + unitType2.Name + " or " + unitType3.Name + " for every 2 × " + unitType1.Name + " (have 6 for 3)."); + AddUnitsOfTypeToArmy(2, unitType2, army); Assert_That__ValidationPasses(req, army); }