# HG changeset patch # User IBBoard # Date 1322942218 0 # Node ID f1f4df654a91c84437c759c2751a41330851a2db # Parent cf1c0a91eaa9cd03dcda7247fb060304f5e18ea9 Re #350: Add requirement to allow N of unit for specific other units * Add tests for defining minimum amount as well as allowed amount (e.g. "2 of these allow 3 of those") diff -r cf1c0a91eaa9 -r f1f4df654a91 API/Factories/Requirement/UnitRequiresNUnitsForMUnitsRequirementFactoryTest.cs --- a/API/Factories/Requirement/UnitRequiresNUnitsForMUnitsRequirementFactoryTest.cs Sat Dec 03 16:53:36 2011 +0000 +++ b/API/Factories/Requirement/UnitRequiresNUnitsForMUnitsRequirementFactoryTest.cs Sat Dec 03 19:56:58 2011 +0000 @@ -73,6 +73,17 @@ } [Test()] + public void TestCreatesCorrectRequirementWithTwoNumbers() + { + UnitRequiresNUnitsForMUnitsRequirementFactory factory = new UnitRequiresNUnitsForMUnitsRequirementFactory(); + UnitType unitType = new UnitType("testUnit", "Test Unit", race); + RequiresNUnitsForMUnitsRequirement expectedReq = new RequiresNUnitsForMUnitsRequirement(unitType); + expectedReq.AddUnitTypeRequirement(unitType1, 2, 3); + IRequirement req = factory.CreateRequirement(unitType, typeID1 + ":2;3", raceFactory); + Assert.That(req, Is.EqualTo(expectedReq)); + } + + [Test()] public void TestCreatesCorrectRequirementForTwoIDsWithTwoNumbers() { UnitRequiresNUnitsForMUnitsRequirementFactory factory = new UnitRequiresNUnitsForMUnitsRequirementFactory(); @@ -118,13 +129,31 @@ } [Test()] - [ExpectedException(typeof(InvalidRequirementException), ExpectedMessage="Invalid amount 'a' for unit type 'unit1' for 'Requires N units for M units' requirement")] + [ExpectedException(typeof(InvalidRequirementException), ExpectedMessage="Invalid allowed amount 'a' for unit type 'unit1' for 'Requires N units for M units' requirement")] public void TestExceptionsForInvalidNumber() { UnitRequiresNUnitsForMUnitsRequirementFactory factory = new UnitRequiresNUnitsForMUnitsRequirementFactory(); UnitType unitType = new UnitType("testUnit", "Test Unit", race); factory.CreateRequirement(unitType, typeID1+":a", raceFactory); } + + [Test()] + [ExpectedException(typeof(InvalidRequirementException), ExpectedMessage="Invalid allowed amount 'a' for unit type 'unit1' for 'Requires N units for M units' requirement")] + public void TestExceptionsForInvalidAllowedNumber() + { + UnitRequiresNUnitsForMUnitsRequirementFactory factory = new UnitRequiresNUnitsForMUnitsRequirementFactory(); + UnitType unitType = new UnitType("testUnit", "Test Unit", race); + factory.CreateRequirement(unitType, typeID1 + ":3;a", raceFactory); + } + + [Test()] + [ExpectedException(typeof(InvalidRequirementException), ExpectedMessage="Invalid minimum amount 'a' for unit type 'unit1' for 'Requires N units for M units' requirement")] + public void TestExceptionsForInvalidMinimumNumber() + { + UnitRequiresNUnitsForMUnitsRequirementFactory factory = new UnitRequiresNUnitsForMUnitsRequirementFactory(); + UnitType unitType = new UnitType("testUnit", "Test Unit", race); + factory.CreateRequirement(unitType, typeID1 + ":a;3", raceFactory); + } } }