Mercurial > repos > IBBoard.WarFoundry.API.Tests
comparison API/Objects/Requirement/UnitRequiresNoMoreThanNOfUnitTypeRequirementTest.cs @ 213:0416df2ab39b
Re #379: Fix validation of requirements to check for unit
* Add army validation tests for UnitRequiresNoMoreThanNOfUnitTypeRequirementTest
TODO: one test broken (should be NA, not Passed)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 26 Feb 2012 15:38:13 +0000 |
parents | 325943cb1db0 |
children | 1674a499168e |
comparison
equal
deleted
inserted
replaced
212:325943cb1db0 | 213:0416df2ab39b |
---|---|
191 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | 191 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); |
192 req.AddUnitTypeRequirement(unitType2); | 192 req.AddUnitTypeRequirement(unitType2); |
193 req.AddUnitTypeRequirement(unitType3); | 193 req.AddUnitTypeRequirement(unitType3); |
194 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1); 0 × " + unitType3.Name + " (would have 1)."); | 194 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1); 0 × " + unitType3.Name + " (would have 1)."); |
195 } | 195 } |
196 | |
197 [Test()] | |
198 public void TestValidatingWithNoUnitsAndOneUnitTypeRequiredIsAllowed() | |
199 { | |
200 Army army = new Army(mockRace, "Test", 1000); | |
201 AddUnitOfTypeToArmy(unitType1, army); | |
202 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
203 req.AddUnitTypeRequirement(unitType2); | |
204 Assert_That__ValidationPasses(req, army); | |
205 } | |
206 | |
207 [Test()] | |
208 public void TestValidatingWithOneUnitAndOneUnitTypeRequiredIsNotAllowed() | |
209 { | |
210 Army army = new Army(mockRace, "Test", 1000); | |
211 AddUnitOfTypeToArmy(unitType2, army); | |
212 AddUnitOfTypeToArmy(unitType1, army); | |
213 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
214 req.AddUnitTypeRequirement(unitType2); | |
215 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."); | |
216 } | |
217 | |
218 [Test()] | |
219 public void TestValidatingUnitTypeSetsLimit() | |
220 { | |
221 Army army = new Army(mockRace, "Test", 1000); | |
222 AddUnitOfTypeToArmy(unitType1, army); | |
223 AddUnitOfTypeToArmy(unitType2, army); | |
224 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
225 req.AddUnitTypeRequirement(unitType2, 1); | |
226 Assert_That__ValidationPasses(req, army); | |
227 } | |
228 | |
229 [Test()] | |
230 public void TestSetsLimitForValidationFailure() | |
231 { | |
232 Army army = new Army(mockRace, "Test", 1000); | |
233 AddUnitOfTypeToArmy(unitType1, army); | |
234 AddUnitOfTypeToArmy(unitType2, army); | |
235 AddUnitOfTypeToArmy(unitType2, army); | |
236 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
237 req.AddUnitTypeRequirement(unitType2, 1); | |
238 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (have 2)."); | |
239 } | |
240 | |
241 [Test()] | |
242 public void TestAddingUnitTriggersValidationFailure() | |
243 { | |
244 Army army = new Army(mockRace, "Test", 1000); | |
245 AddUnitOfTypeToArmy(unitType1, army); | |
246 AddUnitOfTypeToArmy(unitType2, army); | |
247 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
248 req.AddUnitTypeRequirement(unitType2, 1); | |
249 Assert_That__ValidationPasses(req, army); | |
250 AddUnitOfTypeToArmy(unitType2, army); | |
251 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (have 2)."); | |
252 } | |
253 | |
254 [Test()] | |
255 public void TestValidationUnitTypeDefaultsToNoMoreThanZero() | |
256 { | |
257 Army army = new Army(mockRace, "Test", 1000); | |
258 AddUnitOfTypeToArmy(unitType1, army); | |
259 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
260 req.AddUnitTypeRequirement(unitType2); | |
261 Assert_That__ValidationPasses(req, army); | |
262 AddUnitOfTypeToArmy(unitType2, army); | |
263 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."); | |
264 } | |
265 | |
266 [Test] | |
267 public void TestRequirementValidationNotApplicableWhenAddingUnrelatedTypes() | |
268 { | |
269 Army army = new Army(mockRace, "Test", 1000); | |
270 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
271 req.AddUnitTypeRequirement(unitType2); | |
272 AddUnitOfTypeToArmy(unitType3, army); | |
273 Assert_That__NotApplicable(req, army); | |
274 AddUnitOfTypeToArmy(unitType2, army); | |
275 Assert_That__NotApplicable(req, army); | |
276 } | |
277 | |
278 [Test()] | |
279 public void TestAddingRequirementUnitTriggersValidationFailure() | |
280 { | |
281 Army army = new Army(mockRace, "Test", 1000); | |
282 AddUnitOfTypeToArmy(unitType1, army); | |
283 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
284 req.AddUnitTypeRequirement(unitType2, 1); | |
285 AddUnitOfTypeToArmy(unitType2, army); | |
286 Assert_That__ValidationPasses(req, army); | |
287 AddUnitOfTypeToArmy(unitType2, army); | |
288 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (have 2)."); | |
289 } | |
290 | |
291 [Test] | |
292 public void TestValidationFailsWithTwoUnitTypesProhibitedAndOneUnitTypeInArmy() | |
293 { | |
294 Army army = new Army(mockRace, "Test", 1000); | |
295 AddUnitOfTypeToArmy(unitType1, army); | |
296 AddUnitOfTypeToArmy(unitType2, army); | |
297 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
298 req.AddUnitTypeRequirement(unitType2); | |
299 req.AddUnitTypeRequirement(unitType3); | |
300 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."); | |
301 } | |
302 | |
303 [Test] | |
304 public void TestValidationFailsWithTwoUnitTypesProhibitedAndOneOfOtherUnitTypeInArmy() | |
305 { | |
306 Army army = new Army(mockRace, "Test", 1000); | |
307 AddUnitOfTypeToArmy(unitType1, army); | |
308 AddUnitOfTypeToArmy(unitType3, army); | |
309 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
310 req.AddUnitTypeRequirement(unitType2); | |
311 req.AddUnitTypeRequirement(unitType3); | |
312 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType3.Name + " (have 1)."); | |
313 } | |
314 | |
315 [Test] | |
316 public void TestValidationFailsWithTwoUnitTypesProhibitedAndOneUnitTypeAlreadyInArmy() | |
317 { | |
318 Army army = new Army(mockRace, "Test", 1000); | |
319 AddUnitOfTypeToArmy(unitType1, army); | |
320 AddUnitOfTypeToArmy(unitType2, army); | |
321 AddUnitOfTypeToArmy(unitType3, army); | |
322 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); | |
323 req.AddUnitTypeRequirement(unitType2); | |
324 req.AddUnitTypeRequirement(unitType3); | |
325 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1); 0 × " + unitType3.Name + " (have 1)."); | |
326 } | |
196 } | 327 } |
197 } | 328 } |
198 | 329 |