annotate API/Objects/Requirement/AbstractUnitRequirementTest.cs @ 231:5e03b68dd214

Re #410: Create "N units per M models in parent unit" requirement * Add required usage of context objects * Add tests for new requirement * Add some extras to test unit type setup that the new requirement needs
author IBBoard <dev@ibboard.co.uk>
date Fri, 27 Jul 2012 20:33:40 +0100
parents f951595143a9
children 99248d05ba9c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 // This file (AbstractUnitRequirementTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2012 IBBoard
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
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.
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System;
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using NUnit.Framework;
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using NUnit.Framework.SyntaxHelpers;
217
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
7 using IBBoard.NUnit;
231
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
8 using System.Collections.Generic;
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 namespace IBBoard.WarFoundry.API.Objects.Requirement
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 /// <summary>
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 /// Base class of helper methods for checking unit requirements
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 /// </summary>
217
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
15 public abstract class AbstractUnitRequirementTest<OBJECT_TYPE, TEST_CLASS> : AbstractEqualityTest<TEST_CLASS> where OBJECT_TYPE : IWarFoundryObject where TEST_CLASS : AbstractUnitRequirement<OBJECT_TYPE>
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 protected static void Assert_That__PassesAdding(AbstractUnitRequirement<OBJECT_TYPE> req, UnitType unitType, Army army)
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 Assert.That(req.AllowsAdding(unitType, army), Is.EqualTo(Validation.Passed));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 Assert.That(req.GetAllowsAddingMessage(unitType, army), Is.Empty);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
21 Unit unit = CreateUnitOfType(unitType, army);
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 Assert.That(req.GetAllowsAddingMessage(unit, army), Is.Empty);
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 protected static void Assert_That__AddingNotApplicable(AbstractUnitRequirement<OBJECT_TYPE> req, UnitType unitType, Army army)
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 Assert.That(req.AllowsAdding(unitType, army), Is.EqualTo(Validation.NotApplicable));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 Assert.That(req.GetAllowsAddingMessage(unitType, army), Is.Empty);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
30 Unit unit = CreateUnitOfType(unitType, army);
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.NotApplicable));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 Assert.That(req.GetAllowsAddingMessage(unit, army), Is.Empty);
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35 protected static void Assert_That__FailsAdding(AbstractUnitRequirement<OBJECT_TYPE> req, UnitType unitType, Army army, string message)
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 Assert.That(req.AllowsAdding(unitType, army), Is.EqualTo(Validation.Failed));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38 Assert.That(req.GetAllowsAddingMessage(unitType, army), Is.EqualTo(message));
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
39 Unit unit = CreateUnitOfType(unitType, army);
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 Assert.That(req.GetAllowsAddingMessage(unit, army), Is.EqualTo(message));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44 protected static void Assert_That__ValidationPasses(AbstractUnitRequirement<OBJECT_TYPE> req, Army army)
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
46 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
47 Assert.That(req.GetValidationMessage(army), Is.Empty);
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
50 protected static void Assert_That__NotApplicable(AbstractUnitRequirement<OBJECT_TYPE> req, Army army)
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
51 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
52 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.NotApplicable));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
53 Assert.That(req.GetValidationMessage(army), Is.Empty);
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
54 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
55
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
56 protected static void Assert_That__ValidationFails(AbstractUnitRequirement<OBJECT_TYPE> req, Army army, string message)
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
57 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
58 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
59 Assert.That(req.GetValidationMessage(army), Is.EqualTo(message));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
60 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
61
231
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
62 protected static ICollection<Unit> AddUnitsOfTypeToArmy(int count, UnitType unitType, Army army)
219
f951595143a9 Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
63 {
231
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
64 ICollection<Unit> units = new List<Unit>();
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
65
219
f951595143a9 Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
66 for (int i = 0; i < count; i++)
f951595143a9 Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
67 {
231
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
68 units.Add(AddUnitOfTypeToArmy(unitType, army));
219
f951595143a9 Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
69 }
231
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
70
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
71 return units;
219
f951595143a9 Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
72 }
f951595143a9 Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
73
231
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
74 protected static Unit AddUnitOfTypeToArmy(UnitType unitType, Army army)
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
75 {
231
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
76 Unit unit = CreateUnitOfType(unitType, army);
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
77 army.AddUnit(unit);
5e03b68dd214 Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents: 219
diff changeset
78 return unit;
212
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
79 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
80
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
81 protected static Unit CreateUnitOfType(UnitType unitType, Army army)
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
82 {
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
83 return new Unit(unitType, army.GetCategory(unitType.MainCategory));
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
84 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
85 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
86 }
325943cb1db0 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
87