Mercurial > repos > IBBoard.WarFoundry.API.Tests
comparison API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirementTest.cs @ 221:c40cb2048fc3
Re #394:
* Fix UnitRequiresNUnitsForMUnitsRequirementTests unit test so it actually does test the other value
* Add tests to "requires at least N" requirement and factory to test alternatives (Rollcall's "-1,X|Y" notation)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 24 Mar 2012 20:34:42 +0000 |
parents | 9bf34e88da89 |
children |
comparison
equal
deleted
inserted
replaced
220:0fa634c6391b | 221:c40cb2048fc3 |
---|---|
31 } | 31 } |
32 | 32 |
33 [Test()] | 33 [Test()] |
34 public void TestAddingUnitTypeWithNoUnitsAndTwoUnitTypesRequired() | 34 public void TestAddingUnitTypeWithNoUnitsAndTwoUnitTypesRequired() |
35 { | 35 { |
36 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both | |
36 Army army = new Army(mockRace, "Test", 1000); | 37 Army army = new Army(mockRace, "Test", 1000); |
37 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 38 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
38 req.AddUnitTypeRequirement(unitType2); | 39 req.AddUnitTypeRequirement(unitType2); |
39 req.AddUnitTypeRequirement(unitType3); | 40 req.AddUnitTypeRequirement(unitType3); |
40 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0); 1 × " + unitType3.Name + " (would have 0)."); | 41 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " (would have 0); 1 × " + unitType3.Name + " (would have 0)."); |
41 } | 42 } |
42 | 43 |
43 [Test()] | 44 [Test()] |
44 public void TestAddingUnitTypeWithOneUnitAndTwoUnitTypesRequired() | 45 public void TestAddingUnitTypeWithOneUnitAndTwoUnitTypesRequired() |
45 { | 46 { |
47 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both | |
46 Army army = new Army(mockRace, "Test", 1000); | 48 Army army = new Army(mockRace, "Test", 1000); |
47 AddUnitOfTypeToArmy(unitType2, army); | 49 AddUnitOfTypeToArmy(unitType2, army); |
48 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 50 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
49 req.AddUnitTypeRequirement(unitType2); | 51 req.AddUnitTypeRequirement(unitType2); |
50 req.AddUnitTypeRequirement(unitType3); | 52 req.AddUnitTypeRequirement(unitType3); |
52 } | 54 } |
53 | 55 |
54 [Test()] | 56 [Test()] |
55 public void TestAddingUnitTypeWithOtherOneUnitAndTwoUnitTypesRequired() | 57 public void TestAddingUnitTypeWithOtherOneUnitAndTwoUnitTypesRequired() |
56 { | 58 { |
59 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both | |
57 Army army = new Army(mockRace, "Test", 1000); | 60 Army army = new Army(mockRace, "Test", 1000); |
58 AddUnitOfTypeToArmy(unitType3, army); | 61 AddUnitOfTypeToArmy(unitType3, army); |
59 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 62 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
60 req.AddUnitTypeRequirement(unitType2); | 63 req.AddUnitTypeRequirement(unitType2); |
61 req.AddUnitTypeRequirement(unitType3); | 64 req.AddUnitTypeRequirement(unitType3); |
63 } | 66 } |
64 | 67 |
65 [Test()] | 68 [Test()] |
66 public void TestAddingUnitTypeWithBothUnitsAndTwoUnitTypesRequired() | 69 public void TestAddingUnitTypeWithBothUnitsAndTwoUnitTypesRequired() |
67 { | 70 { |
71 //Rollcall's "-1,X,-1,Y" requirement - unlimited once you have one of both | |
68 Army army = new Army(mockRace, "Test", 1000); | 72 Army army = new Army(mockRace, "Test", 1000); |
69 AddUnitOfTypeToArmy(unitType2, army); | 73 AddUnitOfTypeToArmy(unitType2, army); |
70 AddUnitOfTypeToArmy(unitType3, army); | 74 AddUnitOfTypeToArmy(unitType3, army); |
71 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 75 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
72 req.AddUnitTypeRequirement(unitType2); | 76 req.AddUnitTypeRequirement(unitType2); |
134 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " (would have 1)."); | 138 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " (would have 1)."); |
135 AddUnitOfTypeToArmy(unitType2, army); | 139 AddUnitOfTypeToArmy(unitType2, army); |
136 Assert_That__PassesAdding(req, unitType1, army); | 140 Assert_That__PassesAdding(req, unitType1, army); |
137 } | 141 } |
138 | 142 |
143 [Test] | |
144 public void TestAddingRequirementWithOR() | |
145 { | |
146 //Rollcall's "-1,X|Y" requirement - unlimited for one of either | |
147 Army army = new Army(mockRace, "Test", 1000); | |
148 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
149 req.AddUnitTypeRequirement(unitType2, unitType3); | |
150 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0)."); | |
151 AddUnitOfTypeToArmy(unitType2, army); | |
152 Assert_That__PassesAdding(req, unitType1, army); | |
153 } | |
154 | |
155 [Test] | |
156 public void TestAddingRequirementWithORWithOtherUnit() | |
157 { | |
158 //Rollcall's "-1,X|Y" requirement - unlimited for one of either | |
159 Army army = new Army(mockRace, "Test", 1000); | |
160 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
161 req.AddUnitTypeRequirement(unitType2, unitType3); | |
162 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0)."); | |
163 AddUnitOfTypeToArmy(unitType3, army); | |
164 Assert_That__PassesAdding(req, unitType1, army); | |
165 } | |
166 | |
167 [Test] | |
168 public void TestAddingRequirementWithORWithLimit() | |
169 { | |
170 Army army = new Army(mockRace, "Test", 1000); | |
171 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
172 req.AddUnitTypeRequirement(2, unitType2, unitType3); | |
173 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0)."); | |
174 AddUnitOfTypeToArmy(unitType2, army); | |
175 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 1)."); | |
176 AddUnitOfTypeToArmy(unitType2, army); | |
177 Assert_That__PassesAdding(req, unitType1, army); | |
178 } | |
179 | |
180 [Test] | |
181 public void TestAddingRequirementWithORWithLimitWithOtherUnit() | |
182 { | |
183 Army army = new Army(mockRace, "Test", 1000); | |
184 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
185 req.AddUnitTypeRequirement(2, unitType2, unitType3); | |
186 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 0)."); | |
187 AddUnitOfTypeToArmy(unitType3, army); | |
188 Assert_That__FailsAdding(req, unitType1, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (would have 1)."); | |
189 AddUnitOfTypeToArmy(unitType3, army); | |
190 Assert_That__PassesAdding(req, unitType1, army); | |
191 } | |
192 | |
139 [Test()] | 193 [Test()] |
140 public void TestValidatingWithNoUnitsAndOneUnitTypeRequired() | 194 public void TestValidatingWithNoUnitsAndOneUnitTypeRequired() |
141 { | 195 { |
142 Army army = new Army(mockRace, "Test", 1000); | 196 Army army = new Army(mockRace, "Test", 1000); |
143 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 197 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
259 AddUnitOfTypeToArmy(unitType2, army); | 313 AddUnitOfTypeToArmy(unitType2, army); |
260 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 314 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
261 req.AddUnitTypeRequirement(unitType2, 2); | 315 req.AddUnitTypeRequirement(unitType2, 2); |
262 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " (have 1)."); | 316 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " (have 1)."); |
263 AddUnitOfTypeToArmy(unitType2, army); | 317 AddUnitOfTypeToArmy(unitType2, army); |
318 Assert_That__ValidationPasses(req, army); | |
319 } | |
320 | |
321 [Test] | |
322 public void TestRequirementWithOR() | |
323 { | |
324 //Rollcall's "-1,X|Y" requirement - unlimited for one of either | |
325 Army army = new Army(mockRace, "Test", 1000); | |
326 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
327 req.AddUnitTypeRequirement(unitType2, unitType3); | |
328 AddUnitOfTypeToArmy(unitType1, army); | |
329 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (have 0)."); | |
330 AddUnitOfTypeToArmy(unitType2, army); | |
331 Assert_That__ValidationPasses(req, army); | |
332 } | |
333 | |
334 [Test] | |
335 public void TestRequirementWithORWithOtherUnit() | |
336 { | |
337 //Rollcall's "-1,X|Y" requirement - unlimited for one of either | |
338 Army army = new Army(mockRace, "Test", 1000); | |
339 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
340 req.AddUnitTypeRequirement(unitType2, unitType3); | |
341 AddUnitOfTypeToArmy(unitType1, army); | |
342 Assert_That__ValidationFails(req, army, "Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " (have 0)."); | |
343 AddUnitOfTypeToArmy(unitType3, army); | |
344 Assert_That__ValidationPasses(req, army); | |
345 } | |
346 | |
347 [Test] | |
348 public void TestRequirementWithORWithLimit() | |
349 { | |
350 Army army = new Army(mockRace, "Test", 1000); | |
351 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
352 req.AddUnitTypeRequirement(2, unitType2, unitType3); | |
353 AddUnitOfTypeToArmy(unitType1, army); | |
354 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 0)."); | |
355 AddUnitOfTypeToArmy(unitType2, army); | |
356 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 1)."); | |
357 AddUnitOfTypeToArmy(unitType2, army); | |
358 Assert_That__ValidationPasses(req, army); | |
359 } | |
360 | |
361 [Test] | |
362 public void TestRequirementWithORWithLimitWithOtherUnit() | |
363 { | |
364 Army army = new Army(mockRace, "Test", 1000); | |
365 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | |
366 req.AddUnitTypeRequirement(2, unitType2, unitType3); | |
367 AddUnitOfTypeToArmy(unitType1, army); | |
368 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 0)."); | |
369 AddUnitOfTypeToArmy(unitType3, army); | |
370 Assert_That__ValidationFails(req, army, "Army must contain: 2 × " + unitType2.Name + " or " + unitType3.Name + " (have 1)."); | |
371 AddUnitOfTypeToArmy(unitType3, army); | |
264 Assert_That__ValidationPasses(req, army); | 372 Assert_That__ValidationPasses(req, army); |
265 } | 373 } |
266 | 374 |
267 protected override UnitRequiresAtLeastNUnitsRequirement CreateRequirement(UnitType requirementOn) | 375 protected override UnitRequiresAtLeastNUnitsRequirement CreateRequirement(UnitType requirementOn) |
268 { | 376 { |