comparison API/Util/UnitEquipmentUtilTest.cs @ 29:29e81f10bb8b

Re #208: equipmentslot limit issues * Extend unit tests to cover extra situation
author IBBoard <dev@ibboard.co.uk>
date Fri, 06 Nov 2009 20:05:29 +0000
parents 0676f6a1ee9d
children 0cc21db8d60a
comparison
equal deleted inserted replaced
28:2395dc131401 29:29e81f10bb8b
2 // 2 //
3 // 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. 3 // 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.
4 4
5 using System; 5 using System;
6 using NUnit.Framework; 6 using NUnit.Framework;
7 using IBBoard.CustomMath;
7 using IBBoard.Limits; 8 using IBBoard.Limits;
8 using IBBoard.WarFoundry.API.Objects; 9 using IBBoard.WarFoundry.API.Objects;
9 using IBBoard.WarFoundry.API.Objects.Mock; 10 using IBBoard.WarFoundry.API.Objects.Mock;
10 11
11 namespace IBBoard.WarFoundry.API.Util 12 namespace IBBoard.WarFoundry.API.Util
21 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(4); 22 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(4);
22 UnitType unitType = equip.EquipmentForUnit; 23 UnitType unitType = equip.EquipmentForUnit;
23 Unit unit = GetUnit (unitType); 24 Unit unit = GetUnit (unitType);
24 Assert.AreEqual(4, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 25 Assert.AreEqual(4, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
25 Assert.AreEqual(4, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 26 Assert.AreEqual(4, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
26 Assert.AreEqual(4.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 27 Assert.AreEqual(IBBMath.Percentage(4, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
27 Assert.AreEqual(4.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 28 Assert.AreEqual(IBBMath.Percentage(4, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
28 } 29 }
29 30
30 [Test()] 31 [Test()]
31 public void TestGetEquipmentCountsForFixedLimitItemOnDefaultSlotWithDifferentMinLimit() 32 public void TestGetEquipmentCountsForFixedLimitItemOnDefaultSlotWithDifferentMinLimit()
32 { 33 {
33 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1,4); 34 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1,4);
34 UnitType unitType = equip.EquipmentForUnit; 35 UnitType unitType = equip.EquipmentForUnit;
35 Unit unit = GetUnit (unitType); 36 Unit unit = GetUnit (unitType);
36 Assert.AreEqual(4, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 37 Assert.AreEqual(4, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
37 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 38 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
38 Assert.AreEqual(4.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 39 Assert.AreEqual(IBBMath.Percentage(4, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
39 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 40 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
40 } 41 }
41 42
42 [Test()] 43 [Test()]
43 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlot() 44 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlot()
44 { 45 {
47 UnitType unitType = equip.EquipmentForUnit; 48 UnitType unitType = equip.EquipmentForUnit;
48 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); 49 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2));
49 Unit unit = GetUnit(unitType); 50 Unit unit = GetUnit(unitType);
50 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 51 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
51 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 52 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
52 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 53 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
53 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 54 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
54 } 55 }
55 56
56 [Test()] 57 [Test()]
57 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithDifferentMinLimit() 58 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithDifferentMinLimit()
58 { 59 {
61 UnitType unitType = equip.EquipmentForUnit; 62 UnitType unitType = equip.EquipmentForUnit;
62 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); 63 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2));
63 Unit unit = GetUnit(unitType); 64 Unit unit = GetUnit(unitType);
64 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 65 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
65 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 66 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
66 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 67 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
67 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 68 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
68 } 69 }
69 70
70 [Test()] 71 [Test()]
71 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithMaxBelowSlotLimit() 72 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithMaxBelowSlotLimit()
72 { 73 {
75 UnitType unitType = equip.EquipmentForUnit; 76 UnitType unitType = equip.EquipmentForUnit;
76 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5)); 77 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5));
77 Unit unit = GetUnit(unitType); 78 Unit unit = GetUnit(unitType);
78 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 79 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
79 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 80 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
80 Assert.AreEqual(3.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 81 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
81 Assert.AreEqual(3.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 82 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
82 } 83 }
83 84
84 [Test()] 85 [Test()]
85 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithMaxBelowSlotLimitWithDifferentMinLimit() 86 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithMaxBelowSlotLimitWithDifferentMinLimit()
86 { 87 {
89 UnitType unitType = equip.EquipmentForUnit; 90 UnitType unitType = equip.EquipmentForUnit;
90 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5)); 91 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5));
91 Unit unit = GetUnit(unitType); 92 Unit unit = GetUnit(unitType);
92 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 93 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
93 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 94 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
94 Assert.AreEqual(3.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 95 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
95 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 96 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
96 } 97 }
97 98
98 [Test()] 99 [Test()]
99 public void TestGetEquipmentCountsForFixedLimitItemOnPercentageLimitedSlot() 100 public void TestGetEquipmentCountsForFixedLimitItemOnPercentageLimitedSlot()
100 { 101 {
118 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, false)); 119 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, false));
119 Unit unit = GetUnit(unitType); 120 Unit unit = GetUnit(unitType);
120 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 121 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
121 Assert.AreEqual(5, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 122 Assert.AreEqual(5, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
122 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 123 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
123 Assert.AreEqual(5.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 124 Assert.AreEqual(IBBMath.Percentage(5, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
124 } 125 }
125 126
126 [Test()] 127 [Test()]
127 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipment() 128 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipment()
128 { 129 {
134 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); 135 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
135 equip2.SlotName = SLOT_NAME; 136 equip2.SlotName = SLOT_NAME;
136 unit.SetEquipmentAmount(equip2, 5); 137 unit.SetEquipmentAmount(equip2, 5);
137 Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 138 Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
138 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 139 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
139 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 140 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
140 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 141 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
142 }
143
144 [Test()]
145 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipmentOfSameType()
146 {
147 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1, 3);
148 equip.SlotName = SLOT_NAME;
149 UnitType unitType = equip.EquipmentForUnit;
150 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(3));
151 Unit unit =GetUnit(unitType);
152 unit.SetEquipmentAmount(equip, 2);
153 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
154 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
155 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
156 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
141 } 157 }
142 158
143 [Test()] 159 [Test()]
144 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipmentDifferentMinLimit() 160 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipmentDifferentMinLimit()
145 { 161 {
151 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); 167 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
152 equip2.SlotName = SLOT_NAME; 168 equip2.SlotName = SLOT_NAME;
153 unit.SetEquipmentAmount(equip2, 5); 169 unit.SetEquipmentAmount(equip2, 5);
154 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 170 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
155 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 171 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
156 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 172 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
157 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 173 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
158 } 174 }
159 175
160 [Test()] 176 [Test()]
161 public void TestGetEquipmentCountsForPercentageLimitItemOnDefaultSlot() 177 public void TestGetEquipmentCountsForPercentageLimitItemOnDefaultSlot()
162 { 178 {
189 UnitType unitType = equip.EquipmentForUnit; 205 UnitType unitType = equip.EquipmentForUnit;
190 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); 206 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2));
191 Unit unit = GetUnit(unitType); 207 Unit unit = GetUnit(unitType);
192 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 208 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
193 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 209 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
194 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 210 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
195 } 211 }
196 212
197 [Test()] 213 [Test()]
198 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlotWithDifferentMinLimit() 214 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlotWithDifferentMinLimit()
199 { 215 {
202 UnitType unitType = equip.EquipmentForUnit; 218 UnitType unitType = equip.EquipmentForUnit;
203 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); 219 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2));
204 Unit unit = GetUnit(unitType); 220 Unit unit = GetUnit(unitType);
205 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 221 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
206 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 222 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
207 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 223 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
208 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 224 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
209 } 225 }
210 226
211 [Test()] 227 [Test()]
212 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlot() 228 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlot()
213 { 229 {
275 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); 291 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
276 equip2.SlotName = SLOT_NAME; 292 equip2.SlotName = SLOT_NAME;
277 unit.SetEquipmentAmount(equip2, 5); 293 unit.SetEquipmentAmount(equip2, 5);
278 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 294 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
279 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 295 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
280 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 296 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
281 Assert.AreEqual(2.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 297 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
298 }
299
300 [Test()]
301 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlotWithExistingEquipmentOfSameType()
302 {
303 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(10, 50);
304 equip.SlotName = SLOT_NAME;
305 UnitType unitType = equip.EquipmentForUnit;
306 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(10));
307 Unit unit = GetUnit(unitType);
308 unit.SetEquipmentAmount(equip, 5);
309 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
310 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
311 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
312 Assert.AreEqual(10, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
282 } 313 }
283 314
284 [Test()] 315 [Test()]
285 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipment() 316 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipment()
286 { 317 {
292 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); 323 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
293 equip2.SlotName = SLOT_NAME; 324 equip2.SlotName = SLOT_NAME;
294 unit.SetEquipmentAmount(equip2, 5); 325 unit.SetEquipmentAmount(equip2, 5);
295 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 326 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
296 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 327 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
297 Assert.AreEqual(3.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 328 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
298 Assert.AreEqual(3.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 329 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
330 }
331
332 [Test()]
333 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipmentOfSameType()
334 {
335 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(10, 50);
336 equip.SlotName = SLOT_NAME;
337 UnitType unitType = equip.EquipmentForUnit;
338 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, true));
339 Unit unit = GetUnit(unitType);
340 unit.SetEquipmentAmount(equip, 5);
341 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
342 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
343 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
344 Assert.AreEqual(10, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
299 } 345 }
300 346
301 [Test()] 347 [Test()]
302 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipmentWithDifferentMinimum() 348 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipmentWithDifferentMinimum()
303 { 349 {
309 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); 355 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
310 equip2.SlotName = SLOT_NAME; 356 equip2.SlotName = SLOT_NAME;
311 unit.SetEquipmentAmount(equip2, 5); 357 unit.SetEquipmentAmount(equip2, 5);
312 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); 358 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
313 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); 359 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
314 Assert.AreEqual(3.0/15*100, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); 360 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
315 Assert.AreEqual(1.0/15*100, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); 361 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
316 } 362 }
317 363
318 [Test()] 364 [Test()]
319 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndUnlimitedSlot() 365 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndUnlimitedSlot()
320 { 366 {