annotate API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirementTest.cs @ 239:370bec16a364 default tip

Add initial testing for equipment with type (incomplete)
author IBBoard <dev@ibboard.co.uk>
date Sun, 16 Oct 2016 20:29:35 +0100
parents e173c5512067
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
1 // This file (UnitRequiresAtLeastNUnitsRequirementTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
2 //
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
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.
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
4 using System;
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
5 using NUnit.Framework;
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
6 using IBBoard.WarFoundry.API.Objects.Mock;
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
7
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
8 namespace IBBoard.WarFoundry.API.Objects.Requirement
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
9 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
10 [TestFixture()]
217
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
11 public class UnitRequiresAtLeastNUnitsRequirementTest : AbstractUnitTypeUnitRequirementTest<UnitType, UnitRequiresAtLeastNUnitsRequirement>
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
12 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
13 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
14 public void TestAddingUnitWithNoUnitsAndOneUnitTypeRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
15 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
16 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
17 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
18 req.AddUnitTypeRequirement(unitType2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
19 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
20 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
21
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
22 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
23 public void TestAddingUnitTypeWithOneUnitAndOneUnitTypeRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
24 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
25 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
26 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
27 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
28 req.AddUnitTypeRequirement(unitType2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
29 Assert_That__PassesAdding(req, unitType1, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
30 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
31
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
32 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
33 public void TestAddingUnitTypeWithNoUnitsAndTwoUnitTypesRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
34 {
221
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
35 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
36 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
37 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
38 req.AddUnitTypeRequirement(unitType2);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
39 req.AddUnitTypeRequirement(unitType3);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
40 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0); 1 × " + unitType3.Name + " (would have 0).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
41 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
42
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
43 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
44 public void TestAddingUnitTypeWithOneUnitAndTwoUnitTypesRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
45 {
221
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
46 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
47 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
48 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
49 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
50 req.AddUnitTypeRequirement(unitType2);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
51 req.AddUnitTypeRequirement(unitType3);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
52 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType3.Name + " (would have 0).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
53 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
54
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
55 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
56 public void TestAddingUnitTypeWithOtherOneUnitAndTwoUnitTypesRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
57 {
221
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
58 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
59 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
60 AddUnitOfTypeToArmy(unitType3, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
61 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
62 req.AddUnitTypeRequirement(unitType2);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
63 req.AddUnitTypeRequirement(unitType3);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
64 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
65 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
66
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
67 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
68 public void TestAddingUnitTypeWithBothUnitsAndTwoUnitTypesRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
69 {
221
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
70 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
71 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
72 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
73 AddUnitOfTypeToArmy(unitType3, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
74 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
75 req.AddUnitTypeRequirement(unitType2);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
76 req.AddUnitTypeRequirement(unitType3);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
77 Assert_That__PassesAdding(req, unitType1, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
78 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
79
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
80 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
81 public void TestAddingUnitTypeWithOneUnitAndTwoOfOneUnitTypeRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
82 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
83 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
84 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
85 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
86 req.AddUnitTypeRequirement(unitType2, 2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
87 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " (would have 1).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
88 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
89
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
90 [Test()]
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
91 public void TestAddingUnrelatedUnitTypeValidatesAsNotApplicable()
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
92 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
93 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
94 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
95 req.AddUnitTypeRequirement(unitType2, 2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
96 Assert_That__AddingNotApplicable(req, unitType3, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
97 }
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
98
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
99 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
100 public void TestAddingUnrelatedUnitTypeValidatesAsNotApplicableWhenRequirementsNotMet()
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
101 {
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
102 Army army = new Army(mockRace, "Test", 1000);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
103 AddUnitOfTypeToArmy(unitType1, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
104 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
105 req.AddUnitTypeRequirement(unitType2, 2);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
106 Assert_That__AddingNotApplicable(req, unitType3, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
107 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
108
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
109 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
110 public void TestAddingUnitTypeWithTwoUnitsAndTwoOfOneUnitTypeRequired()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
111 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
112 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
113 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
114 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
115 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
116 req.AddUnitTypeRequirement(unitType2, 2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
117 Assert_That__PassesAdding(req, unitType1, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
118 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
119
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
120 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
121 public void TestAddingUnitTypeRequirementWithNoNumberDefaultsToHavingOne()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
122 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
123 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
124 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
125 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
126 req.AddUnitTypeRequirement(unitType2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
127 Assert_That__PassesAdding(req, unitType1, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
128 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
129
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
130 [Test()]
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
131 public void TestAddingUnitTypeMakesRequirementPass()
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
132 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
133 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
134 AddUnitOfTypeToArmy(unitType2, army);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
135 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
136 req.AddUnitTypeRequirement(unitType2, 2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
137 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " (would have 1).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
138 AddUnitOfTypeToArmy(unitType2, army);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
139 Assert_That__PassesAdding(req, unitType1, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
140 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
141
221
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
142 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
143 public void TestAddingRequirementWithOR()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
144 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
145 //Rollcall's "-1,X|Y" requirement - unlimited for one of either
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
146 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
147 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
148 req.AddUnitTypeRequirement(unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
149 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
150 AddUnitOfTypeToArmy(unitType2, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
151 Assert_That__PassesAdding(req, unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
152 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
153
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
154 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
155 public void TestAddingRequirementWithORWithOtherUnit()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
156 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
157 //Rollcall's "-1,X|Y" requirement - unlimited for one of either
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
158 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
159 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
160 req.AddUnitTypeRequirement(unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
161 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
162 AddUnitOfTypeToArmy(unitType3, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
163 Assert_That__PassesAdding(req, unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
164 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
165
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
166 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
167 public void TestAddingRequirementWithORWithLimit()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
168 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
169 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
170 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
171 req.AddUnitTypeRequirement(2, unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
172 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
173 AddUnitOfTypeToArmy(unitType2, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
174 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 1).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
175 AddUnitOfTypeToArmy(unitType2, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
176 Assert_That__PassesAdding(req, unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
177 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
178
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
179 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
180 public void TestAddingRequirementWithORWithLimitWithOtherUnit()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
181 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
182 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
183 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
184 req.AddUnitTypeRequirement(2, unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
185 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
186 AddUnitOfTypeToArmy(unitType3, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
187 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 1).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
188 AddUnitOfTypeToArmy(unitType3, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
189 Assert_That__PassesAdding(req, unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
190 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
191
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
192 [Test()]
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
193 public void TestValidatingWithNoUnitsAndOneUnitTypeRequired()
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
194 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
195 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
196 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
197 req.AddUnitTypeRequirement(unitType2);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
198 AddUnitOfTypeToArmy(unitType1, army);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
199 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " (have 0).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
200 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
201
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
202 [Test()]
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
203 public void TestValidatingWithOneUnitAndOneUnitTypeRequired()
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
204 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
205 Army army = new Army(mockRace, "Test", 1000);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
206 AddUnitOfTypeToArmy(unitType1, army);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
207 AddUnitOfTypeToArmy(unitType2, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
208 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
209 req.AddUnitTypeRequirement(unitType2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
210 Assert_That__ValidationPasses(req, army);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
211 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
212
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
213 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
214 public void TestValidatingWithNoUnitsAndTwoUnitTypesRequired()
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
215 {
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
216 Army army = new Army(mockRace, "Test", 1000);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
217 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
218 req.AddUnitTypeRequirement(unitType2);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
219 req.AddUnitTypeRequirement(unitType3);
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
220 AddUnitOfTypeToArmy(unitType1, army);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
221 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " (have 0); 1 × " + unitType3.Name + " (have 0).");
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
222 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
223
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
224 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
225 public void TestValidatingWithOneUnitAndTwoUnitTypesRequired()
142
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
226 {
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
227 Army army = new Army(mockRace, "Test", 1000);
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
228 AddUnitOfTypeToArmy(unitType1, army);
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
229 AddUnitOfTypeToArmy(unitType2, army);
208
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 207
diff changeset
230 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
142
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
231 req.AddUnitTypeRequirement(unitType2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
232 req.AddUnitTypeRequirement(unitType3);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
233 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType3.Name + " (have 0).");
142
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
234 }
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
235
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
236 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
237 public void TestValidatingWithOtherOneUnitAndTwoUnitTypesRequired()
142
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
238 {
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
239 Army army = new Army(mockRace, "Test", 1000);
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
240 AddUnitOfTypeToArmy(unitType1, army);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
241 AddUnitOfTypeToArmy(unitType3, army);
208
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 207
diff changeset
242 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
142
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
243 req.AddUnitTypeRequirement(unitType2);
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
244 req.AddUnitTypeRequirement(unitType3);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
245 AddUnitOfTypeToArmy(unitType1, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
246 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " (have 0).");
142
f36b5e5e51e6 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
247 }
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
248
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
249 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
250 public void TestValidatingWithBothUnitsAndTwoUnitTypesRequired()
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
251 {
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
252 Army army = new Army(mockRace, "Test", 1000);
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
253 AddUnitOfTypeToArmy(unitType1, army);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
254 AddUnitOfTypeToArmy(unitType2, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
255 AddUnitOfTypeToArmy(unitType3, army);
208
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 207
diff changeset
256 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
257 req.AddUnitTypeRequirement(unitType2);
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
258 req.AddUnitTypeRequirement(unitType3);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
259 Assert_That__ValidationPasses(req, army);
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
260 }
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
261
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
262 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
263 public void TestValidatingWithOneUnitAndTwoOfOneUnitTypeRequired()
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
264 {
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
265 Army army = new Army(mockRace, "Test", 1000);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
266 AddUnitOfTypeToArmy(unitType1, army);
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
267 AddUnitOfTypeToArmy(unitType2, army);
208
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 207
diff changeset
268 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
269 req.AddUnitTypeRequirement(unitType2, 2);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
270 AddUnitOfTypeToArmy(unitType1, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
271 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " (have 1).");
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
272 }
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
273
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
274 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
275 public void TestValidatingWithUnrelatedUnitTypeValidatesAsNotApplicable()
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
276 {
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
277 Army army = new Army(mockRace, "Test", 1000);
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
278 AddUnitOfTypeToArmy(unitType3, army);
208
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 207
diff changeset
279 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
280 req.AddUnitTypeRequirement(unitType2, 2);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
281 Assert_That__NotApplicable(req, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
282 }
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
283
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
284 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
285 public void TestValidatingWithTwoUnitsAndTwoOfOneUnitTypeRequired()
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
286 {
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
287 Army army = new Army(mockRace, "Test", 1000);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
288 AddUnitOfTypeToArmy(unitType1, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
289 AddUnitOfTypeToArmy(unitType2, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
290 AddUnitOfTypeToArmy(unitType2, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
291 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
292 req.AddUnitTypeRequirement(unitType2, 2);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
293 Assert_That__ValidationPasses(req, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
294 }
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
295
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
296 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
297 public void TestValidatingRequirementWithNoNumberDefaultsToHavingOne()
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
298 {
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
299 Army army = new Army(mockRace, "Test", 1000);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
300 AddUnitOfTypeToArmy(unitType1, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
301 AddUnitOfTypeToArmy(unitType2, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
302 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
303 req.AddUnitTypeRequirement(unitType2);
214
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
304 Assert_That__ValidationPasses(req, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
305 }
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
306
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
307 [Test()]
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
308 public void TestAddingUnitTypeMakesRequirementPassValidating()
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
309 {
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
310 Army army = new Army(mockRace, "Test", 1000);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
311 AddUnitOfTypeToArmy(unitType1, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
312 AddUnitOfTypeToArmy(unitType2, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
313 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
314 req.AddUnitTypeRequirement(unitType2, 2);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
315 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " (have 1).");
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
316 AddUnitOfTypeToArmy(unitType2, army);
1674a499168e Re #379:
IBBoard <dev@ibboard.co.uk>
parents: 212
diff changeset
317 Assert_That__ValidationPasses(req, army);
146
8c519a44e699 Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents: 142
diff changeset
318 }
217
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
319
221
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
320 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
321 public void TestRequirementWithOR()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
322 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
323 //Rollcall's "-1,X|Y" requirement - unlimited for one of either
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
324 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
325 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
326 req.AddUnitTypeRequirement(unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
327 AddUnitOfTypeToArmy(unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
328 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
329 AddUnitOfTypeToArmy(unitType2, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
330 Assert_That__ValidationPasses(req, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
331 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
332
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
333 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
334 public void TestRequirementWithORWithOtherUnit()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
335 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
336 //Rollcall's "-1,X|Y" requirement - unlimited for one of either
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
337 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
338 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
339 req.AddUnitTypeRequirement(unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
340 AddUnitOfTypeToArmy(unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
341 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
342 AddUnitOfTypeToArmy(unitType3, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
343 Assert_That__ValidationPasses(req, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
344 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
345
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
346 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
347 public void TestRequirementWithORWithLimit()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
348 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
349 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
350 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
351 req.AddUnitTypeRequirement(2, unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
352 AddUnitOfTypeToArmy(unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
353 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
354 AddUnitOfTypeToArmy(unitType2, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
355 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 1).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
356 AddUnitOfTypeToArmy(unitType2, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
357 Assert_That__ValidationPasses(req, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
358 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
359
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
360 [Test]
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
361 public void TestRequirementWithORWithLimitWithOtherUnit()
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
362 {
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
363 Army army = new Army(mockRace, "Test", 1000);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
364 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
365 req.AddUnitTypeRequirement(2, unitType2, unitType3);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
366 AddUnitOfTypeToArmy(unitType1, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
367 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 0).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
368 AddUnitOfTypeToArmy(unitType3, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
369 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 1).");
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
370 AddUnitOfTypeToArmy(unitType3, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
371 Assert_That__ValidationPasses(req, army);
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
372 }
c40cb2048fc3 Re #394:
IBBoard <dev@ibboard.co.uk>
parents: 217
diff changeset
373
217
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
374 protected override UnitRequiresAtLeastNUnitsRequirement CreateRequirement(UnitType requirementOn)
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
375 {
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
376 return new UnitRequiresAtLeastNUnitsRequirement(requirementOn);
9bf34e88da89 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
377 }
132
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
378 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
379 }
8f1af48e120c Re #27: Unit requirements
IBBoard <dev@ibboard.co.uk>
parents: 125
diff changeset
380