Mercurial > repos > IBBoard.WarFoundry.API.Tests
annotate API/Util/UnitEquipmentUtilTest.cs @ 228:7c21ca1482cb
Re #419: Remove assumptions of a file-based install
* Update tests to use new "loadable object" and "loadable object source" wrappers
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 07 Jul 2012 21:02:53 +0100 |
parents | bd38c32fb1a9 |
children |
rev | line source |
---|---|
18 | 1 // This file (UnitEquipmentItemUtilTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2009 IBBoard |
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. | |
4 | |
5 using System; | |
6 using NUnit.Framework; | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
7 using IBBoard.CustomMath; |
18 | 8 using IBBoard.Limits; |
9 using IBBoard.WarFoundry.API.Objects; | |
10 using IBBoard.WarFoundry.API.Objects.Mock; | |
183
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
11 using NUnit.Framework.SyntaxHelpers; |
18 | 12 |
13 namespace IBBoard.WarFoundry.API.Util | |
14 { | |
15 [TestFixture()] | |
16 public class UnitEquipmentUtilTest | |
17 { | |
26 | 18 private const string SLOT_NAME = "slot"; |
19 | |
18 | 20 [Test()] |
24 | 21 public void TestGetEquipmentCountsForFixedLimitItemOnDefaultSlot() |
18 | 22 { |
26 | 23 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(4); |
18 | 24 UnitType unitType = equip.EquipmentForUnit; |
19 | 25 Unit unit = GetUnit (unitType); |
26 | 26 Assert.AreEqual(4, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
27 Assert.AreEqual(4, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
28 Assert.AreEqual(IBBMath.Percentage(4, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
29 Assert.AreEqual(IBBMath.Percentage(4, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
18 | 30 } |
31 | |
32 [Test()] | |
24 | 33 public void TestGetEquipmentCountsForFixedLimitItemOnDefaultSlotWithDifferentMinLimit() |
34 { | |
26 | 35 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1,4); |
24 | 36 UnitType unitType = equip.EquipmentForUnit; |
37 Unit unit = GetUnit (unitType); | |
26 | 38 Assert.AreEqual(4, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
24 | 39 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
40 Assert.AreEqual(IBBMath.Percentage(4, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
41 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
24 | 42 } |
43 | |
44 [Test()] | |
45 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlot() | |
18 | 46 { |
26 | 47 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(3); |
48 equip.SlotName = SLOT_NAME; | |
18 | 49 UnitType unitType = equip.EquipmentForUnit; |
26 | 50 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); |
19 | 51 Unit unit = GetUnit(unitType); |
18 | 52 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
24 | 53 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
54 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
55 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 56 } |
57 | |
58 [Test()] | |
59 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithDifferentMinLimit() | |
60 { | |
61 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1, 3); | |
62 equip.SlotName = SLOT_NAME; | |
63 UnitType unitType = equip.EquipmentForUnit; | |
64 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); | |
65 Unit unit = GetUnit(unitType); | |
66 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
67 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
68 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
69 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 70 } |
71 | |
72 [Test()] | |
73 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithMaxBelowSlotLimit() | |
74 { | |
75 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(3); | |
76 equip.SlotName = SLOT_NAME; | |
77 UnitType unitType = equip.EquipmentForUnit; | |
78 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5)); | |
79 Unit unit = GetUnit(unitType); | |
80 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
81 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
82 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
83 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
18 | 84 } |
19 | 85 |
86 [Test()] | |
26 | 87 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithMaxBelowSlotLimitWithDifferentMinLimit() |
88 { | |
89 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1, 3); | |
90 equip.SlotName = SLOT_NAME; | |
91 UnitType unitType = equip.EquipmentForUnit; | |
92 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5)); | |
93 Unit unit = GetUnit(unitType); | |
94 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
95 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
96 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
97 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 98 } |
99 | |
100 [Test()] | |
24 | 101 public void TestGetEquipmentCountsForFixedLimitItemOnPercentageLimitedSlot() |
19 | 102 { |
26 | 103 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(10); |
104 equip.SlotName = SLOT_NAME; | |
19 | 105 UnitType unitType = equip.EquipmentForUnit; |
26 | 106 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, false)); |
19 | 107 Unit unit = GetUnit(unitType); |
26 | 108 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
109 Assert.AreEqual(7, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
110 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); | |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
111 Assert.AreEqual(50, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 112 } |
113 | |
114 [Test()] | |
115 public void TestGetEquipmentCountsForFixedLimitItemOnPercentageLimitedSlotWithDifferentMinLimit() | |
116 { | |
117 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(5, 10); | |
118 equip.SlotName = SLOT_NAME; | |
119 UnitType unitType = equip.EquipmentForUnit; | |
120 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, false)); | |
121 Unit unit = GetUnit(unitType); | |
122 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
24 | 123 Assert.AreEqual(5, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
26 | 124 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
125 Assert.AreEqual(IBBMath.Percentage(5, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
19 | 126 } |
127 | |
128 [Test()] | |
24 | 129 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipment() |
19 | 130 { |
26 | 131 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(3); |
132 equip.SlotName = SLOT_NAME; | |
19 | 133 UnitType unitType = equip.EquipmentForUnit; |
26 | 134 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(6)); |
19 | 135 Unit unit =GetUnit(unitType); |
136 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); | |
26 | 137 equip2.SlotName = SLOT_NAME; |
19 | 138 unit.SetEquipmentAmount(equip2, 5); |
139 Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
24 | 140 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
141 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
142 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
143 } |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
144 |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
145 [Test()] |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
146 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipmentOfSameType() |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
147 { |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
148 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1, 3); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
149 equip.SlotName = SLOT_NAME; |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
150 UnitType unitType = equip.EquipmentForUnit; |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
151 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(3)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
152 Unit unit =GetUnit(unitType); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
153 unit.SetEquipmentAmount(equip, 2); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
154 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
155 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
156 Assert.AreEqual(IBBMath.Percentage(3, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
157 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 158 } |
159 | |
160 [Test()] | |
161 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipmentDifferentMinLimit() | |
162 { | |
163 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1, 3); | |
164 equip.SlotName = SLOT_NAME; | |
165 UnitType unitType = equip.EquipmentForUnit; | |
166 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(7)); | |
167 Unit unit =GetUnit(unitType); | |
168 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); | |
169 equip2.SlotName = SLOT_NAME; | |
170 unit.SetEquipmentAmount(equip2, 5); | |
171 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
172 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
173 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
174 Assert.AreEqual(IBBMath.Percentage(1, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
19 | 175 } |
176 | |
177 [Test()] | |
24 | 178 public void TestGetEquipmentCountsForPercentageLimitItemOnDefaultSlot() |
19 | 179 { |
26 | 180 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(50); |
19 | 181 UnitType unitType = equip.EquipmentForUnit; |
182 Unit unit = GetUnit(unitType); | |
26 | 183 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
184 Assert.AreEqual(7, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
185 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); | |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
186 Assert.AreEqual(50, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 187 } |
188 | |
189 [Test()] | |
190 public void TestGetEquipmentCountsForPercentageLimitItemOnDefaultSlotWithDifferentMinLimit() | |
191 { | |
192 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(25, 50); | |
193 UnitType unitType = equip.EquipmentForUnit; | |
194 Unit unit = GetUnit(unitType); | |
195 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
196 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
197 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); | |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
198 Assert.AreEqual(25, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
19 | 199 } |
200 | |
201 [Test()] | |
24 | 202 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlot() |
19 | 203 { |
26 | 204 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(50); |
205 equip.SlotName = SLOT_NAME; | |
19 | 206 UnitType unitType = equip.EquipmentForUnit; |
26 | 207 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); |
19 | 208 Unit unit = GetUnit(unitType); |
209 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
24 | 210 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
211 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
30 | 212 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 213 } |
214 | |
215 [Test()] | |
216 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlotWithDifferentMinLimit() | |
217 { | |
218 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(10, 50); | |
219 equip.SlotName = SLOT_NAME; | |
220 UnitType unitType = equip.EquipmentForUnit; | |
221 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(2)); | |
222 Unit unit = GetUnit(unitType); | |
223 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
224 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
225 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
226 Assert.AreEqual(10, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
19 | 227 } |
228 | |
229 [Test()] | |
24 | 230 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlot() |
19 | 231 { |
26 | 232 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(50); |
233 equip.SlotName = SLOT_NAME; | |
234 UnitType unitType = equip.EquipmentForUnit; | |
235 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(25, false)); | |
236 Unit unit = GetUnit(unitType); | |
237 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
238 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
239 Assert.AreEqual(25, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); | |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
240 Assert.AreEqual(25, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 241 } |
242 | |
243 [Test()] | |
244 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithDifferentMinLimit() | |
245 { | |
246 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(10, 50); | |
247 equip.SlotName = SLOT_NAME; | |
19 | 248 UnitType unitType = equip.EquipmentForUnit; |
26 | 249 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(25, false)); |
250 Unit unit = GetUnit(unitType); | |
251 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
252 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
253 Assert.AreEqual(25, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); | |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
254 Assert.AreEqual(10, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 255 } |
256 | |
257 [Test()] | |
258 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithMaxBelowSlotLimit() | |
259 { | |
260 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(50); | |
261 equip.SlotName = SLOT_NAME; | |
262 UnitType unitType = equip.EquipmentForUnit; | |
263 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(75, false)); | |
19 | 264 Unit unit = GetUnit(unitType); |
26 | 265 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
266 Assert.AreEqual(7, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
267 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); | |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
268 Assert.AreEqual(50, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 269 } |
270 | |
271 [Test()] | |
272 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithMaxBelowSlotLimitWithDifferentMinLimit() | |
273 { | |
274 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(25, 50); | |
275 equip.SlotName = SLOT_NAME; | |
276 UnitType unitType = equip.EquipmentForUnit; | |
277 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(75, false)); | |
278 Unit unit = GetUnit(unitType); | |
279 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
280 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
281 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); | |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
282 Assert.AreEqual(25, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
19 | 283 } |
284 | |
285 [Test()] | |
24 | 286 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlotWithExistingEquipment() |
19 | 287 { |
26 | 288 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(50); |
289 equip.SlotName = SLOT_NAME; | |
19 | 290 UnitType unitType = equip.EquipmentForUnit; |
26 | 291 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(7)); |
292 Unit unit = GetUnit(unitType); | |
293 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); | |
294 equip2.SlotName = SLOT_NAME; | |
295 unit.SetEquipmentAmount(equip2, 5); | |
296 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
297 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
298 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
299 Assert.AreEqual(IBBMath.Percentage(2, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
300 } |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
301 |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
302 [Test()] |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
303 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlotWithExistingEquipmentOfSameType() |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
304 { |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
305 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(10, 50); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
306 equip.SlotName = SLOT_NAME; |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
307 UnitType unitType = equip.EquipmentForUnit; |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
308 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(10)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
309 Unit unit = GetUnit(unitType); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
310 unit.SetEquipmentAmount(equip, 5); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
311 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
312 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
313 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
314 Assert.AreEqual(10, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 315 } |
316 | |
317 [Test()] | |
318 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipment() | |
319 { | |
320 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(50); | |
321 equip.SlotName = SLOT_NAME; | |
322 UnitType unitType = equip.EquipmentForUnit; | |
323 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, true)); | |
19 | 324 Unit unit = GetUnit(unitType); |
325 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); | |
26 | 326 equip2.SlotName = SLOT_NAME; |
19 | 327 unit.SetEquipmentAmount(equip2, 5); |
26 | 328 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
329 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); | |
32
9bf542b76de2
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
31
diff
changeset
|
330 Assert.AreEqual(50 - IBBMath.Percentage(5, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
30 | 331 Assert.AreEqual(50 - IBBMath.Percentage(5, 15), UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
29
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
332 } |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
333 |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
334 [Test()] |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
335 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipmentOfSameType() |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
336 { |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
337 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(10, 50); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
338 equip.SlotName = SLOT_NAME; |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
339 UnitType unitType = equip.EquipmentForUnit; |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
340 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, true)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
341 Unit unit = GetUnit(unitType); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
342 unit.SetEquipmentAmount(equip, 5); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
343 Assert.AreEqual(7, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
344 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
29e81f10bb8b
Re #208: equipmentslot limit issues
IBBoard <dev@ibboard.co.uk>
parents:
27
diff
changeset
|
345 Assert.AreEqual(50, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
346 Assert.AreEqual(10, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
26 | 347 } |
348 | |
349 [Test()] | |
350 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlotWithExistingEquipmentWithDifferentMinimum() | |
351 { | |
352 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(10, 50); | |
353 equip.SlotName = SLOT_NAME; | |
354 UnitType unitType = equip.EquipmentForUnit; | |
355 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, true)); | |
356 Unit unit = GetUnit(unitType); | |
357 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType); | |
358 equip2.SlotName = SLOT_NAME; | |
359 unit.SetEquipmentAmount(equip2, 5); | |
360 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip)); | |
21 | 361 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip)); |
32
9bf542b76de2
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
31
diff
changeset
|
362 Assert.AreEqual(50 - IBBMath.Percentage(5, 15), UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); |
31
c6082e4018f7
Re #209: equipmentslot Value problem
IBBoard <dev@ibboard.co.uk>
parents:
30
diff
changeset
|
363 Assert.AreEqual(10, UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); |
21 | 364 } |
22 | 365 |
366 [Test()] | |
367 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndUnlimitedSlot() | |
368 { | |
23 | 369 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(); |
26 | 370 equip.SlotName = SLOT_NAME; |
22 | 371 UnitType unitType = equip.EquipmentForUnit; |
26 | 372 unitType.AddEquipmentSlot(SLOT_NAME, new UnlimitedLimit()); |
22 | 373 Unit unit = GetUnit(unitType); |
374 Assert.IsTrue(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip)); | |
375 } | |
376 | |
377 [Test()] | |
378 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndRatioSlot() | |
379 { | |
380 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(); | |
26 | 381 equip.SlotName = SLOT_NAME; |
22 | 382 UnitType unitType = equip.EquipmentForUnit; |
26 | 383 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, true)); |
22 | 384 Unit unit = GetUnit(unitType); |
385 Assert.IsTrue(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip)); | |
386 } | |
387 | |
388 [Test()] | |
389 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndAbsoluteSlot() | |
390 { | |
391 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(); | |
26 | 392 equip.SlotName = SLOT_NAME; |
22 | 393 UnitType unitType = equip.EquipmentForUnit; |
26 | 394 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5)); |
22 | 395 Unit unit = GetUnit(unitType); |
396 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip)); | |
397 } | |
23 | 398 |
399 [Test()] | |
400 public void TestIsEquipmentRatioLimitsWithAbsoluteLimitedEquipmentAndAbsoluteSlot() | |
401 { | |
24 | 402 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(); |
26 | 403 equip.SlotName = SLOT_NAME; |
23 | 404 UnitType unitType = equip.EquipmentForUnit; |
26 | 405 unitType.AddEquipmentSlot(SLOT_NAME, new AbsoluteNumericLimit(5)); |
23 | 406 Unit unit = GetUnit(unitType); |
407 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip)); | |
408 } | |
409 | |
410 [Test()] | |
411 public void TestIsEquipmentRatioLimitsWithAbsoluteLimitedEquipmentAndUnlimitedSlot() | |
412 { | |
24 | 413 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(); |
26 | 414 equip.SlotName = SLOT_NAME; |
23 | 415 UnitType unitType = equip.EquipmentForUnit; |
26 | 416 unitType.AddEquipmentSlot(SLOT_NAME, new UnlimitedLimit()); |
23 | 417 Unit unit = GetUnit(unitType); |
418 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip)); | |
419 } | |
420 | |
421 [Test()] | |
422 public void TestIsEquipmentRatioLimitsWithAbsoluteLimitedEquipmentAndRatioSlot() | |
423 { | |
24 | 424 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(); |
26 | 425 equip.SlotName = SLOT_NAME; |
23 | 426 UnitType unitType = equip.EquipmentForUnit; |
26 | 427 unitType.AddEquipmentSlot(SLOT_NAME, new SimpleRoundedPercentageLimit(50, true)); |
23 | 428 Unit unit = GetUnit(unitType); |
429 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip)); | |
430 } | |
183
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
431 |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
432 [Test()] |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
433 public void TestCalculateEquipmentAmountTakenFromRatio() |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
434 { |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
435 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(); |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
436 UnitType unitType = equip.EquipmentForUnit; |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
437 Unit unit = GetUnit(unitType); |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
438 Assert.That(UnitEquipmentUtil.CalculateEquipmentAmountTakenFromRatio(unit, equip, 33.4), Is.EqualTo(5)); |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
439 Assert.That(UnitEquipmentUtil.CalculateEquipmentAmountTakenFromRatio(unit, equip, 50), Is.EqualTo(7)); |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
440 equip.RoundNumberUp = true; |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
441 Assert.That(UnitEquipmentUtil.CalculateEquipmentAmountTakenFromRatio(unit, equip, 33.4), Is.EqualTo(6)); |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
442 Assert.That(UnitEquipmentUtil.CalculateEquipmentAmountTakenFromRatio(unit, equip, 50), Is.EqualTo(8)); |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
443 |
bd38c32fb1a9
Re #366: Rewrite equipment handling and limits
IBBoard <dev@ibboard.co.uk>
parents:
172
diff
changeset
|
444 } |
24 | 445 |
446 private Unit GetUnit (UnitType unitType) | |
19 | 447 { |
172
c026c02583ca
* Remove MockArmy.GetMockArmy as it only causes problems in unit tests
IBBoard <dev@ibboard.co.uk>
parents:
32
diff
changeset
|
448 return new Unit ("unit", "Test Unit", 15, unitType, new ArmyCategory(new MockArmy(), unitType.MainCategory)); |
19 | 449 } |
18 | 450 } |
451 } |