diff API/Util/UnitEquipmentUtilTest.cs @ 19:9b23e72ba3cf

Re #198: Add equipment slots * Fix unit tests
author IBBoard <dev@ibboard.co.uk>
date Tue, 27 Oct 2009 20:00:54 +0000
parents e8e7554fb7f3
children 40a2fd337907
line wrap: on
line diff
--- a/API/Util/UnitEquipmentUtilTest.cs	Sat Oct 24 18:59:30 2009 +0000
+++ b/API/Util/UnitEquipmentUtilTest.cs	Tue Oct 27 20:00:54 2009 +0000
@@ -16,22 +16,100 @@
 		[Test()]
 		public void TestGetMaxEquipmentCountForFixedLimitItemOnDefaultSlot()
 		{
-			UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
-			equip.MaxNumber = 3;
+			UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(3);
 			UnitType unitType = equip.EquipmentForUnit;
-			Unit unit = new MockUnit(unitType, new MockArmyCategory(unitType.MainCategory));
+			Unit unit = GetUnit (unitType);
 			Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
 		}
+
 		
 		[Test()]
 		public void TestGetMaxEquipmentCountForFixedLimitItemOnNumberLimitedSlot()
 		{
 			UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
-			equip.MaxNumber = 3;
+			equip.MaxLimit = new NumericSizeConstrainedLimit(3);
+			equip.SlotName = "slot";
 			UnitType unitType = equip.EquipmentForUnit;
 			unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
-			Unit unit = new MockUnit(unitType, new MockArmyCategory(unitType.MainCategory));
+			Unit unit = GetUnit(unitType);
 			Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
 		}
+		
+		[Test()]
+		public void TestGetMaxEquipmentCountForFixedLimitItemOnPercentageLimitedSlot()
+		{
+			UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
+			equip.MaxLimit = new NumericSizeConstrainedLimit(7);
+			equip.SlotName = "slot";
+			UnitType unitType = equip.EquipmentForUnit;
+			unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(50, false));
+			Unit unit = GetUnit(unitType);
+			Assert.AreEqual(5, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
+		}
+		
+		[Test()]
+		public void TestGetMaxEquipmentCountForFixedLimitItemOnNumberLimitedSlotWithExistingEquipment()
+		{
+			UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
+			equip.MaxLimit = new NumericSizeConstrainedLimit(3);
+			equip.SlotName = "slot";
+			UnitType unitType = equip.EquipmentForUnit;
+			unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
+			Unit unit =GetUnit(unitType);
+			UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
+			equip2.SlotName = "slot";
+			unit.SetEquipmentAmount(equip2, 5);
+			Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
+		}
+		
+		[Test()]
+		public void TestGetMaxEquipmentCountForPercentageLimitItemOnDefaultSlot()
+		{
+			UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
+			UnitType unitType = equip.EquipmentForUnit;
+			Unit unit = GetUnit(unitType);
+			Assert.AreEqual(5, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
+		}
+		
+		[Test()]
+		public void TestGetMaxEquipmentCountForPercentageLimitItemOnNumberLimitedSlot()
+		{
+			UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
+			equip.SlotName = "slot";
+			UnitType unitType = equip.EquipmentForUnit;
+			unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
+			Unit unit = GetUnit(unitType);
+			Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
+		}
+		
+		[Test()]
+		public void TestGetMaxEquipmentCountForPercentageLimitItemOnPercentageLimitedSlot()
+		{
+			UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
+			equip.SlotName = "slot";
+			UnitType unitType = equip.EquipmentForUnit;
+			unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(25, false));
+			Unit unit = GetUnit(unitType);
+			Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
+		}
+		
+		[Test()]
+		public void TestGetMaxEquipmentCountForPercentageLimitItemOnNumberLimitedSlotWithExistingEquipment()
+		{
+			UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
+			equip.SlotName = "slot";
+			UnitType unitType = equip.EquipmentForUnit;
+			unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
+			Unit unit = GetUnit(unitType);
+			UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
+			equip2.SlotName = "slot";
+			unit.SetEquipmentAmount(equip2, 5);
+			Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
+		}
+
+		private static Unit GetUnit (UnitType unitType)
+		{
+			return new Unit ("unit", "Test Unit", 10, unitType, new MockArmyCategory (unitType.MainCategory));
+		}
 	}
 }