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;
|
|
7 using IBBoard.Limits;
|
|
8 using IBBoard.WarFoundry.API.Objects;
|
|
9 using IBBoard.WarFoundry.API.Objects.Mock;
|
|
10
|
|
11 namespace IBBoard.WarFoundry.API.Util
|
|
12 {
|
|
13 [TestFixture()]
|
|
14 public class UnitEquipmentUtilTest
|
|
15 {
|
|
16 [Test()]
|
24
|
17 public void TestGetEquipmentCountsForFixedLimitItemOnDefaultSlot()
|
18
|
18 {
|
19
|
19 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(3);
|
18
|
20 UnitType unitType = equip.EquipmentForUnit;
|
19
|
21 Unit unit = GetUnit (unitType);
|
18
|
22 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
24
|
23 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
18
|
24 }
|
|
25
|
|
26 [Test()]
|
24
|
27 public void TestGetEquipmentCountsForFixedLimitItemOnDefaultSlotWithDifferentMinLimit()
|
|
28 {
|
|
29 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(1,3);
|
|
30 UnitType unitType = equip.EquipmentForUnit;
|
|
31 Unit unit = GetUnit (unitType);
|
|
32 Assert.AreEqual(3, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
33 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
34 }
|
|
35
|
|
36 [Test()]
|
|
37 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlot()
|
18
|
38 {
|
|
39 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
19
|
40 equip.MaxLimit = new NumericSizeConstrainedLimit(3);
|
|
41 equip.SlotName = "slot";
|
18
|
42 UnitType unitType = equip.EquipmentForUnit;
|
|
43 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
|
19
|
44 Unit unit = GetUnit(unitType);
|
18
|
45 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
24
|
46 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
18
|
47 }
|
19
|
48
|
|
49 [Test()]
|
24
|
50 public void TestGetEquipmentCountsForFixedLimitItemOnPercentageLimitedSlot()
|
19
|
51 {
|
|
52 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
|
53 equip.MaxLimit = new NumericSizeConstrainedLimit(7);
|
|
54 equip.SlotName = "slot";
|
|
55 UnitType unitType = equip.EquipmentForUnit;
|
|
56 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(50, false));
|
|
57 Unit unit = GetUnit(unitType);
|
|
58 Assert.AreEqual(5, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
24
|
59 Assert.AreEqual(5, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
19
|
60 }
|
|
61
|
|
62 [Test()]
|
24
|
63 public void TestGetEquipmentCountsForFixedLimitItemOnNumberLimitedSlotWithExistingEquipment()
|
19
|
64 {
|
|
65 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
|
66 equip.MaxLimit = new NumericSizeConstrainedLimit(3);
|
|
67 equip.SlotName = "slot";
|
|
68 UnitType unitType = equip.EquipmentForUnit;
|
|
69 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
|
|
70 Unit unit =GetUnit(unitType);
|
|
71 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
|
|
72 equip2.SlotName = "slot";
|
|
73 unit.SetEquipmentAmount(equip2, 5);
|
|
74 Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
24
|
75 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
19
|
76 }
|
|
77
|
|
78 [Test()]
|
24
|
79 public void TestGetEquipmentCountsForPercentageLimitItemOnDefaultSlot()
|
19
|
80 {
|
|
81 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
82 UnitType unitType = equip.EquipmentForUnit;
|
|
83 Unit unit = GetUnit(unitType);
|
|
84 Assert.AreEqual(5, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
24
|
85 Assert.AreEqual(5, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
19
|
86 }
|
|
87
|
|
88 [Test()]
|
24
|
89 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlot()
|
19
|
90 {
|
|
91 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
92 equip.SlotName = "slot";
|
|
93 UnitType unitType = equip.EquipmentForUnit;
|
|
94 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
|
|
95 Unit unit = GetUnit(unitType);
|
|
96 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
24
|
97 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
19
|
98 }
|
|
99
|
|
100 [Test()]
|
24
|
101 public void TestGetEquipmentCountsForPercentageLimitItemOnPercentageLimitedSlot()
|
19
|
102 {
|
|
103 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
104 equip.SlotName = "slot";
|
|
105 UnitType unitType = equip.EquipmentForUnit;
|
|
106 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(25, false));
|
|
107 Unit unit = GetUnit(unitType);
|
|
108 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
24
|
109 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
19
|
110 }
|
|
111
|
|
112 [Test()]
|
24
|
113 public void TestGetEquipmentCountsForPercentageLimitItemOnNumberLimitedSlotWithExistingEquipment()
|
19
|
114 {
|
|
115 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
116 equip.SlotName = "slot";
|
|
117 UnitType unitType = equip.EquipmentForUnit;
|
|
118 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
|
|
119 Unit unit = GetUnit(unitType);
|
|
120 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
|
|
121 equip2.SlotName = "slot";
|
|
122 unit.SetEquipmentAmount(equip2, 5);
|
|
123 Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
21
|
124 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
125 }
|
22
|
126
|
|
127 [Test()]
|
|
128 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndUnlimitedSlot()
|
|
129 {
|
23
|
130 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
131 equip.SlotName = "slot";
|
22
|
132 UnitType unitType = equip.EquipmentForUnit;
|
23
|
133 unitType.AddEquipmentSlot("slot", new UnlimitedLimit());
|
22
|
134 Unit unit = GetUnit(unitType);
|
|
135 Assert.IsTrue(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip));
|
|
136 }
|
|
137
|
|
138 [Test()]
|
|
139 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndRatioSlot()
|
|
140 {
|
|
141 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
142 equip.SlotName = "slot";
|
|
143 UnitType unitType = equip.EquipmentForUnit;
|
|
144 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(50, true));
|
|
145 Unit unit = GetUnit(unitType);
|
|
146 Assert.IsTrue(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip));
|
|
147 }
|
|
148
|
|
149 [Test()]
|
|
150 public void TestIsEquipmentRatioLimitsWithRatioLimitedEquipmentAndAbsoluteSlot()
|
|
151 {
|
|
152 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
153 equip.SlotName = "slot";
|
|
154 UnitType unitType = equip.EquipmentForUnit;
|
|
155 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(5));
|
|
156 Unit unit = GetUnit(unitType);
|
|
157 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip));
|
|
158 }
|
23
|
159
|
|
160 [Test()]
|
|
161 public void TestIsEquipmentRatioLimitsWithAbsoluteLimitedEquipmentAndAbsoluteSlot()
|
|
162 {
|
24
|
163 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
23
|
164 equip.SlotName = "slot";
|
|
165 UnitType unitType = equip.EquipmentForUnit;
|
|
166 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(5));
|
|
167 Unit unit = GetUnit(unitType);
|
|
168 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip));
|
|
169 }
|
|
170
|
|
171 [Test()]
|
|
172 public void TestIsEquipmentRatioLimitsWithAbsoluteLimitedEquipmentAndUnlimitedSlot()
|
|
173 {
|
24
|
174 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
23
|
175 equip.SlotName = "slot";
|
|
176 UnitType unitType = equip.EquipmentForUnit;
|
|
177 unitType.AddEquipmentSlot("slot", new UnlimitedLimit());
|
|
178 Unit unit = GetUnit(unitType);
|
|
179 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip));
|
|
180 }
|
|
181
|
|
182 [Test()]
|
|
183 public void TestIsEquipmentRatioLimitsWithAbsoluteLimitedEquipmentAndRatioSlot()
|
|
184 {
|
24
|
185 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
23
|
186 equip.SlotName = "slot";
|
|
187 UnitType unitType = equip.EquipmentForUnit;
|
|
188 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(50, true));
|
|
189 Unit unit = GetUnit(unitType);
|
|
190 Assert.IsFalse(UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip));
|
|
191 }
|
24
|
192
|
|
193 [Test()]
|
|
194 public void TestGetMaxPercentageForPercentageLimitedEquipmentOnUnlimitedSlot()
|
|
195 {
|
|
196 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem(75);
|
|
197 UnitType unitType = equip.EquipmentForUnit;
|
|
198 Unit unit = GetUnit(unitType);
|
|
199 Assert.AreEqual(75, UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
|
|
200 }
|
|
201
|
|
202 private Unit GetUnit (UnitType unitType)
|
19
|
203 {
|
|
204 return new Unit ("unit", "Test Unit", 10, unitType, new MockArmyCategory (unitType.MainCategory));
|
|
205 }
|
18
|
206 }
|
|
207 }
|