comparison API/Objects/Requirement/UnitRequiresNoMoreThanNOfUnitTypeRequirementTest.cs @ 213:0416df2ab39b

Re #379: Fix validation of requirements to check for unit * Add army validation tests for UnitRequiresNoMoreThanNOfUnitTypeRequirementTest TODO: one test broken (should be NA, not Passed)
author IBBoard <dev@ibboard.co.uk>
date Sun, 26 Feb 2012 15:38:13 +0000
parents 325943cb1db0
children 1674a499168e
comparison
equal deleted inserted replaced
212:325943cb1db0 213:0416df2ab39b
191 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1); 191 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
192 req.AddUnitTypeRequirement(unitType2); 192 req.AddUnitTypeRequirement(unitType2);
193 req.AddUnitTypeRequirement(unitType3); 193 req.AddUnitTypeRequirement(unitType3);
194 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1); 0 × " + unitType3.Name + " (would have 1)."); 194 Assert_That__FailsAdding(req, unitType2, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (would have 1); 0 × " + unitType3.Name + " (would have 1).");
195 } 195 }
196
197 [Test()]
198 public void TestValidatingWithNoUnitsAndOneUnitTypeRequiredIsAllowed()
199 {
200 Army army = new Army(mockRace, "Test", 1000);
201 AddUnitOfTypeToArmy(unitType1, army);
202 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
203 req.AddUnitTypeRequirement(unitType2);
204 Assert_That__ValidationPasses(req, army);
205 }
206
207 [Test()]
208 public void TestValidatingWithOneUnitAndOneUnitTypeRequiredIsNotAllowed()
209 {
210 Army army = new Army(mockRace, "Test", 1000);
211 AddUnitOfTypeToArmy(unitType2, army);
212 AddUnitOfTypeToArmy(unitType1, army);
213 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
214 req.AddUnitTypeRequirement(unitType2);
215 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1).");
216 }
217
218 [Test()]
219 public void TestValidatingUnitTypeSetsLimit()
220 {
221 Army army = new Army(mockRace, "Test", 1000);
222 AddUnitOfTypeToArmy(unitType1, army);
223 AddUnitOfTypeToArmy(unitType2, army);
224 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
225 req.AddUnitTypeRequirement(unitType2, 1);
226 Assert_That__ValidationPasses(req, army);
227 }
228
229 [Test()]
230 public void TestSetsLimitForValidationFailure()
231 {
232 Army army = new Army(mockRace, "Test", 1000);
233 AddUnitOfTypeToArmy(unitType1, army);
234 AddUnitOfTypeToArmy(unitType2, army);
235 AddUnitOfTypeToArmy(unitType2, army);
236 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
237 req.AddUnitTypeRequirement(unitType2, 1);
238 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (have 2).");
239 }
240
241 [Test()]
242 public void TestAddingUnitTriggersValidationFailure()
243 {
244 Army army = new Army(mockRace, "Test", 1000);
245 AddUnitOfTypeToArmy(unitType1, army);
246 AddUnitOfTypeToArmy(unitType2, army);
247 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
248 req.AddUnitTypeRequirement(unitType2, 1);
249 Assert_That__ValidationPasses(req, army);
250 AddUnitOfTypeToArmy(unitType2, army);
251 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (have 2).");
252 }
253
254 [Test()]
255 public void TestValidationUnitTypeDefaultsToNoMoreThanZero()
256 {
257 Army army = new Army(mockRace, "Test", 1000);
258 AddUnitOfTypeToArmy(unitType1, army);
259 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
260 req.AddUnitTypeRequirement(unitType2);
261 Assert_That__ValidationPasses(req, army);
262 AddUnitOfTypeToArmy(unitType2, army);
263 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1).");
264 }
265
266 [Test]
267 public void TestRequirementValidationNotApplicableWhenAddingUnrelatedTypes()
268 {
269 Army army = new Army(mockRace, "Test", 1000);
270 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
271 req.AddUnitTypeRequirement(unitType2);
272 AddUnitOfTypeToArmy(unitType3, army);
273 Assert_That__NotApplicable(req, army);
274 AddUnitOfTypeToArmy(unitType2, army);
275 Assert_That__NotApplicable(req, army);
276 }
277
278 [Test()]
279 public void TestAddingRequirementUnitTriggersValidationFailure()
280 {
281 Army army = new Army(mockRace, "Test", 1000);
282 AddUnitOfTypeToArmy(unitType1, army);
283 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
284 req.AddUnitTypeRequirement(unitType2, 1);
285 AddUnitOfTypeToArmy(unitType2, army);
286 Assert_That__ValidationPasses(req, army);
287 AddUnitOfTypeToArmy(unitType2, army);
288 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 1 × " + unitType2.Name + " (have 2).");
289 }
290
291 [Test]
292 public void TestValidationFailsWithTwoUnitTypesProhibitedAndOneUnitTypeInArmy()
293 {
294 Army army = new Army(mockRace, "Test", 1000);
295 AddUnitOfTypeToArmy(unitType1, army);
296 AddUnitOfTypeToArmy(unitType2, army);
297 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
298 req.AddUnitTypeRequirement(unitType2);
299 req.AddUnitTypeRequirement(unitType3);
300 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1).");
301 }
302
303 [Test]
304 public void TestValidationFailsWithTwoUnitTypesProhibitedAndOneOfOtherUnitTypeInArmy()
305 {
306 Army army = new Army(mockRace, "Test", 1000);
307 AddUnitOfTypeToArmy(unitType1, army);
308 AddUnitOfTypeToArmy(unitType3, army);
309 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
310 req.AddUnitTypeRequirement(unitType2);
311 req.AddUnitTypeRequirement(unitType3);
312 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType3.Name + " (have 1).");
313 }
314
315 [Test]
316 public void TestValidationFailsWithTwoUnitTypesProhibitedAndOneUnitTypeAlreadyInArmy()
317 {
318 Army army = new Army(mockRace, "Test", 1000);
319 AddUnitOfTypeToArmy(unitType1, army);
320 AddUnitOfTypeToArmy(unitType2, army);
321 AddUnitOfTypeToArmy(unitType3, army);
322 UnitRequiresNoMoreThanNOfUnitTypeRequirement req = new UnitRequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
323 req.AddUnitTypeRequirement(unitType2);
324 req.AddUnitTypeRequirement(unitType3);
325 Assert_That__ValidationFails(req, army, "Army cannot contain more than: 0 × " + unitType2.Name + " (have 1); 0 × " + unitType3.Name + " (have 1).");
326 }
196 } 327 }
197 } 328 }
198 329