diff API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirementTest.cs @ 208:c323770e61c2

Re #379: Fix validation of requirements to check for unit * Rename classes in tests to match API changes * Alter tests to match new API (all classes require at least one UnitType that they're relevant to now)
author IBBoard <dev@ibboard.co.uk>
date Wed, 22 Feb 2012 20:48:40 +0000
parents 8c519a44e699
children
line wrap: on
line diff
--- a/API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirementTest.cs	Tue Jan 31 20:59:15 2012 +0000
+++ b/API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirementTest.cs	Wed Feb 22 20:48:40 2012 +0000
@@ -11,10 +11,10 @@
 
 namespace IBBoard.WarFoundry.API.Objects.Requirement
 {
-	[TestFixture()]
-	public class RequiresNoMoreThanNOfUnitTypeRequirementTest : AbstractEqualityTest<RequiresNoMoreThanNOfUnitTypeRequirement>
+	public abstract class RequiresNoMoreThanNOfUnitTypeRequirementTest : AbstractEqualityTest<RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>>
 	{
 		private MockRace mockRace;
+		private UnitType allowedUnitType;
 		private UnitType unitType1;
 		private UnitType unitType2;
 		private UnitType unitType3;
@@ -23,6 +23,8 @@
 		public void SetupRace()
 		{
 			mockRace = new MockRace();
+			allowedUnitType = new MockUnitType("allowed", "Allowed Type");
+			mockRace.AddUnitType(allowedUnitType);
 			unitType1 = new MockUnitType("type1", "Unit Type 1");
 			mockRace.AddUnitType(unitType1);
 			unitType2 = new MockUnitType("type2", "Unit Type 2");
@@ -36,7 +38,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			Unit unit = CreateUnitOfType(unitType1, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType2);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType2);
 			Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
 		}
 
@@ -46,7 +48,7 @@
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType2, army);
 			Unit unit = CreateUnitOfType(unitType1, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType2);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType2);
 			Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
 		}
 
@@ -54,7 +56,7 @@
 		public void TestAddingUnitTypeWithNoUnitsAndOneUnitTypeRequiredIsAllowed()
 		{
 			Army army = new Army(mockRace, "Test", 1000);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType2);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType2);
 			Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed));
 		}
 
@@ -63,7 +65,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType2, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType2);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType2);
 			Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed));
 		}
 
@@ -72,7 +74,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType2, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType2, 1);
 			Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed));
 		}
@@ -83,7 +85,7 @@
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType2, army);
 			AddUnitOfTypeToArmy(unitType2, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType2, 1);
 			Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed));
 		}
@@ -92,7 +94,7 @@
 		public void TestAddingUnitTypeDefaultsToNoMoreThanZero()
 		{
 			Army army = new Army(mockRace, "Test", 1000);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed));
 			AddUnitOfTypeToArmy(unitType2, army);
@@ -103,7 +105,7 @@
 		public void TestRequirementBecomesInvalidWhenProhibitedUnitsChange()
 		{
 			Army army = new Army(mockRace, "Test", 1000);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
 			AddUnitOfTypeToArmy(unitType2, army);
@@ -114,7 +116,7 @@
 		public void TestValidationMessageIsBlankForPass()
 		{
 			Army army = new Army(mockRace, "Test", 1000);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType1);
 			Assert.That(req.GetValidationMessage(army), Is.Empty);
 		}
 
@@ -123,7 +125,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType1, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType1);
 			Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (have 1)."));
 		}
 
@@ -134,7 +136,7 @@
 			AddUnitOfTypeToArmy(unitType1, army);
 			AddUnitOfTypeToArmy(unitType1, army);
 			AddUnitOfTypeToArmy(unitType1, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1, 2);
 			Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 2 × " + unitType1.Name + " (have 3)."));
 		}
@@ -145,7 +147,7 @@
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType1, army);
 			AddUnitOfTypeToArmy(unitType2, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (have 1); 0 × " + unitType2.Name + " (have 1)."));
@@ -156,7 +158,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType1, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (have 1)."));
@@ -167,7 +169,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType2, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."));
@@ -177,7 +179,7 @@
 		public void TestAllowsAddMessageIsBlankForPass()
 		{
 			Army army = new Army(mockRace, "Test", 1000);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType1);
 			Assert.That(req.GetAllowsAddingMessage(unitType2, army), Is.Empty);
 		}
 
@@ -185,7 +187,7 @@
 		public void TestAllowsAddMessageIsCorrectForFailWithOneUnitProhibited()
 		{
 			Army army = new Army(mockRace, "Test", 1000);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType, unitType1);
 			Assert.That(req.GetAllowsAddingMessage(unitType1, army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (would have 1)."));
 		}
 
@@ -195,7 +197,7 @@
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType1, army);
 			AddUnitOfTypeToArmy(unitType1, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1, 2);
 			Assert.That(req.GetAllowsAddingMessage(unitType1, army), Is.EqualTo("Army cannot contain more than: 2 × " + unitType1.Name + " (would have 3)."));
 		}
@@ -204,7 +206,7 @@
 		public void TestAllowsAddMessageIsCorrectForFailWithTwoUnitsProhibited()
 		{
 			Army army = new Army(mockRace, "Test", 1000);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.GetAllowsAddingMessage(unitType1, army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (would have 1)."));
@@ -215,7 +217,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType1, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.GetAllowsAddingMessage(unitType2, army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (would have 1); 0 × " + unitType2.Name + " (would have 1)."));
@@ -226,7 +228,7 @@
 		{
 			Army army = new Army(mockRace, "Test", 1000);
 			AddUnitOfTypeToArmy(unitType2, army);
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1);
 			req.AddUnitTypeRequirement(unitType2);
 			Assert.That(req.GetAllowsAddingMessage(unitType1, army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (would have 1); 0 × " + unitType2.Name + " (would have 1)."));
@@ -242,23 +244,23 @@
 			return new Unit(unitType, army.GetCategory(unitType.MainCategory));
 		}
 
-		public override RequiresNoMoreThanNOfUnitTypeRequirement GetObject ()
+		public override RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> GetObject()
 		{
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1, 2);
 			return req;
 		}
 
-		public override RequiresNoMoreThanNOfUnitTypeRequirement GetSameObject ()
+		public override RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> GetSameObject()
 		{
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			req.AddUnitTypeRequirement(unitType1, 2);
 			return req;
 		}
 
-		public override RequiresNoMoreThanNOfUnitTypeRequirement GetDifferentObject ()
+		public override RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> GetDifferentObject()
 		{
-			RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
+			RequiresNoMoreThanNOfUnitTypeRequirement<UnitType> req = new RequiresNoMoreThanNOfUnitTypeRequirement<UnitType>(allowedUnitType);
 			DummyWarFoundryFactory factory = new DummyWarFoundryFactory();
 			GameSystem gameSystem = new GameSystem("system", "system", factory);
 			Race race = new Race("race", "race", gameSystem, factory);