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()]
|
|
17 public void TestGetMaxEquipmentCountForFixedLimitItemOnDefaultSlot()
|
|
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));
|
|
23 }
|
|
24
|
|
25 [Test()]
|
|
26 public void TestGetMaxEquipmentCountForFixedLimitItemOnNumberLimitedSlot()
|
|
27 {
|
|
28 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
19
|
29 equip.MaxLimit = new NumericSizeConstrainedLimit(3);
|
|
30 equip.SlotName = "slot";
|
18
|
31 UnitType unitType = equip.EquipmentForUnit;
|
|
32 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
|
19
|
33 Unit unit = GetUnit(unitType);
|
18
|
34 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
35 }
|
19
|
36
|
|
37 [Test()]
|
|
38 public void TestGetMaxEquipmentCountForFixedLimitItemOnPercentageLimitedSlot()
|
|
39 {
|
|
40 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
|
41 equip.MaxLimit = new NumericSizeConstrainedLimit(7);
|
|
42 equip.SlotName = "slot";
|
|
43 UnitType unitType = equip.EquipmentForUnit;
|
|
44 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(50, false));
|
|
45 Unit unit = GetUnit(unitType);
|
|
46 Assert.AreEqual(5, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
47 }
|
|
48
|
|
49 [Test()]
|
|
50 public void TestGetMaxEquipmentCountForFixedLimitItemOnNumberLimitedSlotWithExistingEquipment()
|
|
51 {
|
|
52 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
|
53 equip.MaxLimit = new NumericSizeConstrainedLimit(3);
|
|
54 equip.SlotName = "slot";
|
|
55 UnitType unitType = equip.EquipmentForUnit;
|
|
56 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
|
|
57 Unit unit =GetUnit(unitType);
|
|
58 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
|
|
59 equip2.SlotName = "slot";
|
|
60 unit.SetEquipmentAmount(equip2, 5);
|
|
61 Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
62 }
|
|
63
|
|
64 [Test()]
|
|
65 public void TestGetMaxEquipmentCountForPercentageLimitItemOnDefaultSlot()
|
|
66 {
|
|
67 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
68 UnitType unitType = equip.EquipmentForUnit;
|
|
69 Unit unit = GetUnit(unitType);
|
|
70 Assert.AreEqual(5, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
71 }
|
|
72
|
|
73 [Test()]
|
|
74 public void TestGetMaxEquipmentCountForPercentageLimitItemOnNumberLimitedSlot()
|
|
75 {
|
|
76 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
77 equip.SlotName = "slot";
|
|
78 UnitType unitType = equip.EquipmentForUnit;
|
|
79 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
|
|
80 Unit unit = GetUnit(unitType);
|
|
81 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
82 }
|
|
83
|
|
84 [Test()]
|
|
85 public void TestGetMaxEquipmentCountForPercentageLimitItemOnPercentageLimitedSlot()
|
|
86 {
|
|
87 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
88 equip.SlotName = "slot";
|
|
89 UnitType unitType = equip.EquipmentForUnit;
|
|
90 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(25, false));
|
|
91 Unit unit = GetUnit(unitType);
|
|
92 Assert.AreEqual(2, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
93 }
|
|
94
|
|
95 [Test()]
|
|
96 public void TestGetMaxEquipmentCountForPercentageLimitItemOnNumberLimitedSlotWithExistingEquipment()
|
|
97 {
|
|
98 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
99 equip.SlotName = "slot";
|
|
100 UnitType unitType = equip.EquipmentForUnit;
|
|
101 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
|
|
102 Unit unit = GetUnit(unitType);
|
|
103 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
|
|
104 equip2.SlotName = "slot";
|
|
105 unit.SetEquipmentAmount(equip2, 5);
|
|
106 Assert.AreEqual(1, UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip));
|
|
107 }
|
21
|
108
|
|
109
|
|
110 [Test()]
|
|
111 public void TestGetMinEquipmentCountForFixedLimitItemOnDefaultSlot()
|
|
112 {
|
|
113 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem(3);
|
|
114 UnitType unitType = equip.EquipmentForUnit;
|
|
115 Unit unit = GetUnit (unitType);
|
|
116 Assert.AreEqual(3, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
117 }
|
|
118
|
|
119 [Test()]
|
|
120 public void TestGetMinEquipmentCountForFixedLimitItemOnNumberLimitedSlot()
|
|
121 {
|
|
122 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
|
123 equip.MinLimit = new NumericSizeConstrainedLimit(3);
|
|
124 equip.SlotName = "slot";
|
|
125 UnitType unitType = equip.EquipmentForUnit;
|
|
126 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
|
|
127 Unit unit = GetUnit(unitType);
|
|
128 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
129 }
|
|
130
|
|
131 [Test()]
|
|
132 public void TestGetMinEquipmentCountForFixedLimitItemOnPercentageLimitedSlot()
|
|
133 {
|
|
134 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
|
135 equip.MinLimit = new NumericSizeConstrainedLimit(7);
|
|
136 equip.SlotName = "slot";
|
|
137 UnitType unitType = equip.EquipmentForUnit;
|
|
138 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(50, false));
|
|
139 Unit unit = GetUnit(unitType);
|
|
140 Assert.AreEqual(5, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
141 }
|
|
142
|
|
143 [Test()]
|
|
144 public void TestGetMinEquipmentCountForFixedLimitItemOnNumberLimitedSlotWithExistingEquipment()
|
|
145 {
|
|
146 UnitEquipmentItem equip = new MockNumericAmountUnitEquipmentItem();
|
|
147 equip.MinLimit = new NumericSizeConstrainedLimit(3);
|
|
148 equip.SlotName = "slot";
|
|
149 UnitType unitType = equip.EquipmentForUnit;
|
|
150 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
|
|
151 Unit unit =GetUnit(unitType);
|
|
152 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
|
|
153 equip2.SlotName = "slot";
|
|
154 unit.SetEquipmentAmount(equip2, 5);
|
|
155 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
156 }
|
|
157
|
|
158 [Test()]
|
|
159 public void TestGetMinEquipmentCountForPercentageLimitItemOnDefaultSlot()
|
|
160 {
|
|
161 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
162 UnitType unitType = equip.EquipmentForUnit;
|
|
163 Unit unit = GetUnit(unitType);
|
|
164 Assert.AreEqual(5, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
165 }
|
|
166
|
|
167 [Test()]
|
|
168 public void TestGetMinEquipmentCountForPercentageLimitItemOnNumberLimitedSlot()
|
|
169 {
|
|
170 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
171 equip.SlotName = "slot";
|
|
172 UnitType unitType = equip.EquipmentForUnit;
|
|
173 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(2));
|
|
174 Unit unit = GetUnit(unitType);
|
|
175 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
176 }
|
|
177
|
|
178 [Test()]
|
|
179 public void TestGetMinEquipmentCountForPercentageLimitItemOnPercentageLimitedSlot()
|
|
180 {
|
|
181 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
182 equip.SlotName = "slot";
|
|
183 UnitType unitType = equip.EquipmentForUnit;
|
|
184 unitType.AddEquipmentSlot("slot", new SimpleRoundedPercentageLimit(25, false));
|
|
185 Unit unit = GetUnit(unitType);
|
|
186 Assert.AreEqual(2, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
187 }
|
|
188
|
|
189 [Test()]
|
|
190 public void TestGetMinEquipmentCountForPercentageLimitItemOnNumberLimitedSlotWithExistingEquipment()
|
|
191 {
|
|
192 UnitEquipmentItem equip = new MockPercentageAmountUnitEquipmentItem();
|
|
193 equip.SlotName = "slot";
|
|
194 UnitType unitType = equip.EquipmentForUnit;
|
|
195 unitType.AddEquipmentSlot("slot", new AbsoluteNumericLimit(6));
|
|
196 Unit unit = GetUnit(unitType);
|
|
197 UnitEquipmentItem equip2 = new MockPercentageAmountUnitEquipmentItem(new MockEquipmentItem("equip2"), unitType);
|
|
198 equip2.SlotName = "slot";
|
|
199 unit.SetEquipmentAmount(equip2, 5);
|
|
200 Assert.AreEqual(1, UnitEquipmentUtil.GetMinEquipmentCount(unit, equip));
|
|
201 }
|
19
|
202
|
|
203 private static Unit GetUnit (UnitType unitType)
|
|
204 {
|
|
205 return new Unit ("unit", "Test Unit", 10, unitType, new MockArmyCategory (unitType.MainCategory));
|
|
206 }
|
18
|
207 }
|
|
208 }
|