Mercurial > repos > IBBoard.WarFoundry.API.Tests
annotate API/Objects/Requirement/AbstractUnitRequirementTest.cs @ 219:f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
* Add unit tests that match text
* "N for M" factory already handled "2,X|Y" (format: "X;Y:2" - "X|Y" is equivalent to Rollcall's "1,X,1,Y")
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 24 Mar 2012 16:46:06 +0000 |
parents | 9bf34e88da89 |
children | 5e03b68dd214 |
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; |
212
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 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
|
10 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 /// <summary> |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 /// 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
|
13 /// </summary> |
217
9bf34e88da89
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
214
diff
changeset
|
14 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
|
15 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 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
|
17 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
18 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
|
19 Assert.That(req.GetAllowsAddingMessage(unitType, army), Is.Empty); |
214 | 20 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
|
21 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
|
22 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
|
23 } |
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 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
|
26 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
27 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
|
28 Assert.That(req.GetAllowsAddingMessage(unitType, army), Is.Empty); |
214 | 29 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
|
30 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
|
31 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
|
32 } |
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 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
|
35 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
36 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
|
37 Assert.That(req.GetAllowsAddingMessage(unitType, army), Is.EqualTo(message)); |
214 | 38 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
|
39 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
|
40 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
|
41 } |
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 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
|
44 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
45 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
|
46 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
|
47 } |
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 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
|
50 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
51 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
|
52 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
|
53 } |
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 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
|
56 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
57 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
|
58 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
|
59 } |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
60 |
219
f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents:
217
diff
changeset
|
61 protected static void AddUnitsOfTypeToArmy(int count, UnitType unitType, Army army) |
f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents:
217
diff
changeset
|
62 { |
f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents:
217
diff
changeset
|
63 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
|
64 { |
f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents:
217
diff
changeset
|
65 AddUnitOfTypeToArmy(unitType, army); |
f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents:
217
diff
changeset
|
66 } |
f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents:
217
diff
changeset
|
67 } |
f951595143a9
Re #394: Make requirements (or factory) more closely match Rollcall methods
IBBoard <dev@ibboard.co.uk>
parents:
217
diff
changeset
|
68 |
212
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
69 protected static void AddUnitOfTypeToArmy(UnitType unitType, Army army) |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
70 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
71 army.AddUnit(CreateUnitOfType(unitType, army)); |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
72 } |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
73 |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
74 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
|
75 { |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
76 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
|
77 } |
325943cb1db0
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
78 } |
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 |