Mercurial > repos > IBDev-IBBoard.WarFoundry.API.Tests
comparison API/Objects/Requirement/RequiresNUnitsForMUnitsRequirementTest.cs @ 198:6a54d1787fbe
Re #350: Add requirement to allow N of unit for specific other units
* Add big stack of test methods to test additive requirements with allowed values other than one
* Add helper method to reduce repetition (used in new code, but not yet in old code)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Thu, 15 Dec 2011 21:00:37 +0000 |
parents | aa921248ffbf |
children | 925c37fa4feb |
comparison
equal
deleted
inserted
replaced
197:aa921248ffbf | 198:6a54d1787fbe |
---|---|
281 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed)); | 281 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed)); |
282 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 " + unitType2.Name + " or " + unitType3.Name + " for every 1 " + unitType1.Name + " (would have 2 for 3).")); | 282 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 " + unitType2.Name + " or " + unitType3.Name + " for every 1 " + unitType1.Name + " (would have 2 for 3).")); |
283 } | 283 } |
284 | 284 |
285 [Test()] | 285 [Test()] |
286 public void TestAddingUnrelatedUnitWithNoUnitsAndThreeForEachTwoCombinedUnitTypesRequiredIsNA() | |
287 { | |
288 Army army = new Army(mockRace, "Test", 1000); | |
289 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
290 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
291 Unit unit = CreateUnitOfType(unitType4, army); | |
292 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.NotApplicable)); | |
293 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty); | |
294 } | |
295 | |
296 [Test()] | |
297 public void TestAddingThirdUnitWithThreeForEachTwoUnitTypeComboRequiredAndUnitOfOneTypePasses() | |
298 { | |
299 Army army = new Army(mockRace, "Test", 1000); | |
300 AddUnitOfTypeToArmy(unitType2, army); | |
301 AddUnitsOfTypeToArmy(2, unitType1, army); | |
302 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
303 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
304 Unit unit = CreateUnitOfType(unitType1, army); | |
305 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed)); | |
306 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty); | |
307 } | |
308 | |
309 [Test()] | |
310 public void TestAddingThirdUnitWithThreeForEachTwoUnitTypeComboRequiredAndUnitOfOtherTypePasses() | |
311 { | |
312 Army army = new Army(mockRace, "Test", 1000); | |
313 AddUnitOfTypeToArmy(unitType3, army); | |
314 AddUnitsOfTypeToArmy(2, unitType1, army); | |
315 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
316 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
317 Unit unit = CreateUnitOfType(unitType1, army); | |
318 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed)); | |
319 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty); | |
320 } | |
321 | |
322 [Test()] | |
323 public void TestAddingSixthUnitWithThreeForEachTwoUnitTypeComboRequiredAndOneUnitOfBothTypesPasses() | |
324 { | |
325 Army army = new Army(mockRace, "Test", 1000); | |
326 AddUnitOfTypeToArmy(unitType3, army); | |
327 AddUnitOfTypeToArmy(unitType2, army); | |
328 AddUnitsOfTypeToArmy(5, unitType1, army); | |
329 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
330 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
331 Unit unit = CreateUnitOfType(unitType1, army); | |
332 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed)); | |
333 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty); | |
334 } | |
335 | |
336 [Test()] | |
337 public void TestAddingSixthUnitWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypePasses() | |
338 { | |
339 Army army = new Army(mockRace, "Test", 1000); | |
340 AddUnitsOfTypeToArmy(2, unitType3, army); | |
341 AddUnitsOfTypeToArmy(5, unitType1, army); | |
342 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
343 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
344 Unit unit = CreateUnitOfType(unitType1, army); | |
345 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed)); | |
346 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty); | |
347 } | |
348 | |
349 [Test()] | |
350 public void TestAddingSixthUnitWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypePasses() | |
351 { | |
352 Army army = new Army(mockRace, "Test", 1000); | |
353 AddUnitsOfTypeToArmy(2, unitType2, army); | |
354 AddUnitsOfTypeToArmy(5, unitType1, army); | |
355 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
356 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
357 Unit unit = CreateUnitOfType(unitType1, army); | |
358 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed)); | |
359 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty); | |
360 } | |
361 | |
362 [Test()] | |
363 public void TestAddingSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndOneUnitOfBothTypesFails() | |
364 { | |
365 Army army = new Army(mockRace, "Test", 1000); | |
366 AddUnitOfTypeToArmy(unitType3, army); | |
367 AddUnitOfTypeToArmy(unitType2, army); | |
368 AddUnitsOfTypeToArmy(6, unitType1, army); | |
369 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
370 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
371 Unit unit = CreateUnitOfType(unitType1, army); | |
372 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed)); | |
373 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 " + unitType2.Name + " or " + unitType3.Name + " for every 3 " + unitType1.Name + " (would have 2 for 7).")); | |
374 } | |
375 | |
376 [Test()] | |
377 public void TestAddingSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypeFails() | |
378 { | |
379 Army army = new Army(mockRace, "Test", 1000); | |
380 AddUnitsOfTypeToArmy(2, unitType3, army); | |
381 AddUnitsOfTypeToArmy(6, unitType1, army); | |
382 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
383 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
384 Unit unit = CreateUnitOfType(unitType1, army); | |
385 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed)); | |
386 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 " + unitType2.Name + " or " + unitType3.Name + " for every 3 " + unitType1.Name + " (would have 2 for 7).")); | |
387 } | |
388 | |
389 [Test()] | |
390 public void TestAddingSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypeFails() | |
391 { | |
392 Army army = new Army(mockRace, "Test", 1000); | |
393 AddUnitsOfTypeToArmy(2, unitType2, army); | |
394 AddUnitsOfTypeToArmy(6, unitType1, army); | |
395 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | |
396 req.AddUnitTypeRequirement(3, unitType2, unitType3); | |
397 Unit unit = CreateUnitOfType(unitType1, army); | |
398 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed)); | |
399 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 " + unitType2.Name + " or " + unitType3.Name + " for every 3 " + unitType1.Name + " (would have 2 for 7).")); | |
400 } | |
401 | |
402 [Test()] | |
286 public void TestValidatingArmyWithNoUnitsAndOneUnitTypeRequiredIsNA() | 403 public void TestValidatingArmyWithNoUnitsAndOneUnitTypeRequiredIsNA() |
287 { | 404 { |
288 Army army = new Army(mockRace, "Test", 1000); | 405 Army army = new Army(mockRace, "Test", 1000); |
289 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1, unitType2); | 406 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1, unitType2); |
290 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.NotApplicable)); | 407 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.NotApplicable)); |
403 AddUnitOfTypeToArmy(unitType1, army); | 520 AddUnitOfTypeToArmy(unitType1, army); |
404 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); | 521 RequiresNUnitsForMUnitsRequirement req = new RequiresNUnitsForMUnitsRequirement(unitType1); |
405 req.AddUnitTypeRequirement(unitType2, 1, 2); | 522 req.AddUnitTypeRequirement(unitType2, 1, 2); |
406 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed)); | 523 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed)); |
407 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 " + unitType2.Name + " for every 2 " + unitType1.Name + " (have 1 for 3).")); | 524 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 " + unitType2.Name + " for every 2 " + unitType1.Name + " (have 1 for 3).")); |
525 } | |
526 | |
527 private static void AddUnitsOfTypeToArmy(int count, UnitType unitType, Army army) | |
528 { | |
529 for (int i = 0; i < count; i++) | |
530 { | |
531 AddUnitOfTypeToArmy(unitType, army); | |
532 } | |
408 } | 533 } |
409 | 534 |
410 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army) | 535 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army) |
411 { | 536 { |
412 army.AddUnit(CreateUnitOfType(unitType, army)); | 537 army.AddUnit(CreateUnitOfType(unitType, army)); |