Mercurial > repos > IBBoard.WarFoundry.API.Tests
comparison API/Objects/Requirement/RaceRequiresNoMoreThanNUnitsRequirementTest.cs @ 216:442bcf7306b9
Re #379: Fix validation of requirements to check for unit
* Add tests for max limit on units in army
* Re-add code for unit type requirement checking with min/max limits
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 04 Mar 2012 21:12:44 +0000 |
parents | |
children | 9bf34e88da89 |
comparison
equal
deleted
inserted
replaced
215:7e7296c0ae1f | 216:442bcf7306b9 |
---|---|
1 // This file (RaceRequiresNoMoreThanNUnitsRequirementTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 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 using System; | |
5 using NUnit.Framework; | |
6 using IBBoard.WarFoundry.API.Objects.Mock; | |
7 using NUnit.Framework.SyntaxHelpers; | |
8 | |
9 namespace IBBoard.WarFoundry.API.Objects.Requirement | |
10 { | |
11 [TestFixture()] | |
12 public class RaceRequiresNoMoreThanNUnitsRequirementTest : AbstractUnitRequirementTest<Race> | |
13 { | |
14 private MockRace mockRace; | |
15 private UnitType unitType1; | |
16 private UnitType unitType2; | |
17 private UnitType unitType3; | |
18 | |
19 [TestFixtureSetUp()] | |
20 public void SetupRace() | |
21 { | |
22 mockRace = new MockRace(); | |
23 unitType1 = new MockUnitType("type1", "Unit Type 1"); | |
24 mockRace.AddUnitType(unitType1); | |
25 unitType2 = new MockUnitType("type2", "Unit Type 2"); | |
26 mockRace.AddUnitType(unitType2); | |
27 unitType3 = new MockUnitType("type3", "Unit Type 3"); | |
28 mockRace.AddUnitType(unitType3); | |
29 } | |
30 | |
31 [Test()] | |
32 public void TestAddingUnitTypeWithNoUnitAndOneUnitTypeRequired() | |
33 { | |
34 Army army = new Army(mockRace, "Test", 1000); | |
35 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
36 req.AddUnitTypeRequirement(unitType2); | |
37 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1)."); | |
38 } | |
39 | |
40 [Test()] | |
41 public void TestAddingUnitTypeWithOneUnitAndOneUnitTypeRequired() | |
42 { | |
43 Army army = new Army(mockRace, "Test", 1000); | |
44 AddUnitOfTypeToArmy(unitType2, army); | |
45 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
46 req.AddUnitTypeRequirement(unitType2); | |
47 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 2)."); | |
48 } | |
49 | |
50 [Test()] | |
51 public void TestAddingUnitTypeWithNoUnitsAndTwoUnitTypesRequiredFails() | |
52 { | |
53 Army army = new Army(mockRace, "Test", 1000); | |
54 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
55 req.AddUnitTypeRequirement(unitType2); | |
56 req.AddUnitTypeRequirement(unitType3); | |
57 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1)."); | |
58 Assert_That__FailsAdding(req, unitType3, army, "Army cannot contain more than: 0 × " + unitType3.Name + " (would have 1)."); | |
59 } | |
60 | |
61 [Test()] | |
62 public void TestAddingUnitTypeWithOneUnitAndTwoUnitTypesRequired() | |
63 { | |
64 Army army = new Army(mockRace, "Test", 1000); | |
65 AddUnitOfTypeToArmy(unitType2, army); | |
66 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
67 req.AddUnitTypeRequirement(unitType2); | |
68 req.AddUnitTypeRequirement(unitType3); | |
69 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 2)."); | |
70 } | |
71 | |
72 [Test()] | |
73 public void TestAddingUnitTypeWithOtherOneUnitAndTwoUnitTypesRequired() | |
74 { | |
75 Army army = new Army(mockRace, "Test", 1000); | |
76 AddUnitOfTypeToArmy(unitType3, army); | |
77 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
78 req.AddUnitTypeRequirement(unitType2); | |
79 req.AddUnitTypeRequirement(unitType3); | |
80 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1); 0 × " + unitType3.Name + " (would have 1)."); | |
81 } | |
82 | |
83 [Test()] | |
84 public void TestAddingOtherUnitTypeWithOneUnitAndTwoUnitTypesRequired() | |
85 { | |
86 Army army = new Army(mockRace, "Test", 1000); | |
87 AddUnitOfTypeToArmy(unitType2, army); | |
88 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
89 req.AddUnitTypeRequirement(unitType2); | |
90 req.AddUnitTypeRequirement(unitType3); | |
91 Assert_That__FailsAdding(req, unitType3, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1); 0 × " + unitType3.Name + " (would have 1)."); | |
92 } | |
93 | |
94 [Test()] | |
95 public void TestAddingOtherUnitTypeWithOtherOneUnitAndTwoUnitTypesRequired() | |
96 { | |
97 Army army = new Army(mockRace, "Test", 1000); | |
98 AddUnitOfTypeToArmy(unitType3, army); | |
99 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
100 req.AddUnitTypeRequirement(unitType2); | |
101 req.AddUnitTypeRequirement(unitType3); | |
102 Assert_That__FailsAdding(req, unitType3, army, "Army cannot contain more than: 0 × " + unitType3.Name + " (would have 2)."); | |
103 } | |
104 | |
105 [Test()] | |
106 public void TestAddingUnitTypeWithBothUnitsAndTwoUnitTypesRequired() | |
107 { | |
108 Army army = new Army(mockRace, "Test", 1000); | |
109 AddUnitOfTypeToArmy(unitType2, army); | |
110 AddUnitOfTypeToArmy(unitType3, army); | |
111 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
112 req.AddUnitTypeRequirement(unitType2); | |
113 req.AddUnitTypeRequirement(unitType3); | |
114 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 2); 0 × " + unitType3.Name + " (would have 1)."); | |
115 Assert_That__FailsAdding(req, unitType3, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1); 0 × " + unitType3.Name + " (would have 2)."); | |
116 } | |
117 | |
118 [Test()] | |
119 public void TestAddingUnitTypeWithOneUnitAndTwoOfOneUnitTypeRequired() | |
120 { | |
121 Army army = new Army(mockRace, "Test", 1000); | |
122 AddUnitOfTypeToArmy(unitType2, army); | |
123 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
124 req.AddUnitTypeRequirement(unitType2, 2); | |
125 Assert_That__PassesAdding(req, unitType2, army); | |
126 } | |
127 | |
128 [Test()] | |
129 public void TestAddingUnrelatedUnitTypeValidatesAsNotApplicable() | |
130 { | |
131 Army army = new Army(mockRace, "Test", 1000); | |
132 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
133 req.AddUnitTypeRequirement(unitType2, 2); | |
134 Assert_That__AddingNotApplicable(req, unitType1, army); | |
135 } | |
136 | |
137 [Test()] | |
138 public void TestAddingUnrelatedUnitTypeValidatesAsNotApplicableWhenRequirementsNotMet() | |
139 { | |
140 Army army = new Army(mockRace, "Test", 1000); | |
141 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
142 req.AddUnitTypeRequirement(unitType2, 2); | |
143 Assert_That__AddingNotApplicable(req, unitType1, army); | |
144 } | |
145 | |
146 [Test()] | |
147 public void TestAddingUnitTypeWithTwoUnitsAndTwoOfOneUnitTypeRequired() | |
148 { | |
149 Army army = new Army(mockRace, "Test", 1000); | |
150 AddUnitOfTypeToArmy(unitType2, army); | |
151 AddUnitOfTypeToArmy(unitType2, army); | |
152 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
153 req.AddUnitTypeRequirement(unitType2, 2); | |
154 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 2 × " + unitType2.Name + " (would have 3)."); | |
155 } | |
156 | |
157 [Test()] | |
158 public void TestAddingUnitTypeRequirementWithNoNumberDefaultsToHavingZero() | |
159 { | |
160 Army army = new Army(mockRace, "Test", 1000); | |
161 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
162 req.AddUnitTypeRequirement(unitType2); | |
163 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1)."); | |
164 } | |
165 | |
166 [Test()] | |
167 public void TestAddingUnitTypeMakesRequirementFail() | |
168 { | |
169 Army army = new Army(mockRace, "Test", 1000); | |
170 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
171 req.AddUnitTypeRequirement(unitType2, 1); | |
172 Assert_That__PassesAdding(req, unitType2, army); | |
173 AddUnitOfTypeToArmy(unitType2, army); | |
174 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (would have 2)."); | |
175 } | |
176 | |
177 [Test()] | |
178 public void TestValidatingWithNoUnitsAndOneUnitTypeRequired() | |
179 { | |
180 Army army = new Army(mockRace, "Test", 1000); | |
181 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
182 req.AddUnitTypeRequirement(unitType2); | |
183 Assert_That__ValidationPasses(req, army); | |
184 } | |
185 | |
186 [Test()] | |
187 public void TestValidatingWithOneUnitAndOneUnitTypeRequired() | |
188 { | |
189 Army army = new Army(mockRace, "Test", 1000); | |
190 AddUnitOfTypeToArmy(unitType2, army); | |
191 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
192 req.AddUnitTypeRequirement(unitType2); | |
193 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."); | |
194 } | |
195 | |
196 [Test()] | |
197 public void TestValidatingWithNoUnitsAndTwoUnitTypesRequired() | |
198 { | |
199 Army army = new Army(mockRace, "Test", 1000); | |
200 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
201 req.AddUnitTypeRequirement(unitType2); | |
202 req.AddUnitTypeRequirement(unitType3); | |
203 Assert_That__ValidationPasses(req, army); | |
204 } | |
205 | |
206 [Test()] | |
207 public void TestValidatingWithOneUnitAndTwoUnitTypesRequired() | |
208 { | |
209 Army army = new Army(mockRace, "Test", 1000); | |
210 AddUnitOfTypeToArmy(unitType2, army); | |
211 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
212 req.AddUnitTypeRequirement(unitType2); | |
213 req.AddUnitTypeRequirement(unitType3); | |
214 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."); | |
215 } | |
216 | |
217 [Test()] | |
218 public void TestValidatingWithOtherOneUnitAndTwoUnitTypesRequired() | |
219 { | |
220 Army army = new Army(mockRace, "Test", 1000); | |
221 AddUnitOfTypeToArmy(unitType3, army); | |
222 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
223 req.AddUnitTypeRequirement(unitType2); | |
224 req.AddUnitTypeRequirement(unitType3); | |
225 AddUnitOfTypeToArmy(unitType1, army); | |
226 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType3.Name + " (have 1)."); | |
227 } | |
228 | |
229 [Test()] | |
230 public void TestValidatingWithBothUnitsAndTwoUnitTypesRequired() | |
231 { | |
232 Army army = new Army(mockRace, "Test", 1000); | |
233 AddUnitOfTypeToArmy(unitType2, army); | |
234 AddUnitOfTypeToArmy(unitType3, army); | |
235 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
236 req.AddUnitTypeRequirement(unitType2); | |
237 req.AddUnitTypeRequirement(unitType3); | |
238 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1); 0 × " + unitType3.Name + " (have 1)."); | |
239 } | |
240 | |
241 [Test()] | |
242 public void TestValidatingWithBothUnitsUnderLimitAndTwoUnitTypesRequired() | |
243 { | |
244 Army army = new Army(mockRace, "Test", 1000); | |
245 AddUnitOfTypeToArmy(unitType2, army); | |
246 AddUnitOfTypeToArmy(unitType3, army); | |
247 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
248 req.AddUnitTypeRequirement(unitType2, 1); | |
249 req.AddUnitTypeRequirement(unitType3, 1); | |
250 Assert_That__ValidationPasses(req, army); | |
251 } | |
252 | |
253 [Test()] | |
254 public void TestValidatingWithOneUnitAndTwoOfOneUnitTypeRequired() | |
255 { | |
256 Army army = new Army(mockRace, "Test", 1000); | |
257 AddUnitOfTypeToArmy(unitType2, army); | |
258 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
259 req.AddUnitTypeRequirement(unitType2, 2); | |
260 Assert_That__ValidationPasses(req, army); | |
261 } | |
262 | |
263 [Test()] | |
264 public void TestValidatingWithUnrelatedUnitTypeValidatesAsPass() | |
265 { | |
266 Army army = new Army(mockRace, "Test", 1000); | |
267 AddUnitOfTypeToArmy(unitType3, army); | |
268 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
269 req.AddUnitTypeRequirement(unitType2, 2); | |
270 Assert_That__ValidationPasses(req, army); | |
271 } | |
272 | |
273 [Test()] | |
274 public void TestValidatingWithTwoUnitsAndTwoOfOneUnitTypeRequired() | |
275 { | |
276 Army army = new Army(mockRace, "Test", 1000); | |
277 AddUnitOfTypeToArmy(unitType2, army); | |
278 AddUnitOfTypeToArmy(unitType2, army); | |
279 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
280 req.AddUnitTypeRequirement(unitType2, 2); | |
281 Assert_That__ValidationPasses(req, army); | |
282 } | |
283 | |
284 [Test()] | |
285 public void TestValidatingRequirementWithNoNumberDefaultsToHavingZero() | |
286 { | |
287 Army army = new Army(mockRace, "Test", 1000); | |
288 AddUnitOfTypeToArmy(unitType2, army); | |
289 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
290 req.AddUnitTypeRequirement(unitType2); | |
291 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."); | |
292 } | |
293 | |
294 [Test()] | |
295 public void TestAddingUnitTypeMakesRequirementFailValidating() | |
296 { | |
297 Army army = new Army(mockRace, "Test", 1000); | |
298 AddUnitOfTypeToArmy(unitType2, army); | |
299 RaceRequiresNoMoreThanNUnitsRequirement req = new RaceRequiresNoMoreThanNUnitsRequirement(mockRace); | |
300 req.AddUnitTypeRequirement(unitType2, 1); | |
301 Assert_That__ValidationPasses(req, army); | |
302 AddUnitOfTypeToArmy(unitType2, army); | |
303 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (have 2)."); | |
304 } | |
305 } | |
306 } | |
307 |