Mercurial > repos > IBBoard.WarFoundry.API.Tests
annotate API/Objects/Requirement/UnitRequiresNParentModelsForMUnitsRequirementTests.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 | |
children | fdebdeb52a40 |
rev | line source |
---|---|
231
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
1 // This file (UnitRequiresNoMoreThanNUnitsPerMModelsInParentUnitRequirementTests.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2012 IBBoard |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 // |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
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. |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 using System; |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 using NUnit.Framework; |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 using NUnit.Framework.SyntaxHelpers; |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 using IBBoard.WarFoundry.API.Objects.Requirement.Context; |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 namespace IBBoard.WarFoundry.API.Objects.Requirement |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 [TestFixture()] |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 public class UnitRequiresNParentModelsForMUnitsRequirementTests: AbstractUnitTypeUnitRequirementTest<UnitType, UnitRequiresNParentModelsForMUnitsRequirement> |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
13 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
14 [Test()] |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
15 public void TestAddingUnitTypeWithNoParentAndOneUnitTypeRequiredIsAllowed() |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
17 Army army = new Army(mockRace, "Test", 1000); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
18 UnitRequiresNParentModelsForMUnitsRequirement req = new UnitRequiresNParentModelsForMUnitsRequirement(unitType1); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
19 req.AddUnitTypeRequirement(unitType2); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
20 Assert_That__AddingNotApplicable(req, unitType1, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
21 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
22 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
23 [Test()] |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
24 public void TestAddingUnitTypeWithParentAndOneUnitTypeRequiredIsAllowed() |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
25 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
26 Army army = new Army(mockRace, "Test", 1000); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
27 Unit parent = AddUnitOfTypeToArmy(unitType2, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
28 UnitRequiresNParentModelsForMUnitsRequirement req = new UnitRequiresNParentModelsForMUnitsRequirement(unitType1); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
29 req.AddUnitTypeRequirement(unitType2); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
30 Assert_That__PassesAdding(req, unitType1, parent, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
31 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
32 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
33 [Test()] |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
34 public void TestAddingUnitTypeWithWrongParentAndOneUnitTypeRequiredIsNotApplicable() |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
35 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
36 Army army = new Army(mockRace, "Test", 1000); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
37 Unit parent = AddUnitOfTypeToArmy(unitType2, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
38 UnitRequiresNParentModelsForMUnitsRequirement req = new UnitRequiresNParentModelsForMUnitsRequirement(unitType1); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
39 req.AddUnitTypeRequirement(unitType3); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
40 Assert_That__AddingNotApplicable(req, unitType1, parent, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
41 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
42 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
43 [Test()] |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
44 public void TestAddingTooManyUnitTypesWithParentAndOneUnitTypeRequiredFails() |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
45 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
46 Army army = new Army(mockRace, "Test", 1000); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
47 Unit parent = AddUnitOfTypeToArmy(unitType3, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
48 Unit firstChild = AddUnitOfTypeToArmy(unitType1, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
49 parent.AddContainedUnit(firstChild); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
50 UnitRequiresNParentModelsForMUnitsRequirement req = new UnitRequiresNParentModelsForMUnitsRequirement(unitType1); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
51 req.AddUnitTypeRequirement(unitType3); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
52 Assert_That__FailsAdding(req, unitType1, parent, army, "Army can only contain 1 × " + unitType1.Name + " as a sub-unit of each " + unitType3.Name + ", would have 2"); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
53 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
54 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
55 protected override UnitRequiresNParentModelsForMUnitsRequirement CreateRequirement(UnitType requirementOn) |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
56 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
57 return new UnitRequiresNParentModelsForMUnitsRequirement(requirementOn); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
58 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
59 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
60 protected static void Assert_That__PassesAdding(AbstractUnitRequirement<UnitType> req, UnitType unitType, Unit parent, Army army) |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
61 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
62 AddingToParentContext ctx = new AddingToParentContext(parent); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
63 Assert.That(req.AllowsAdding(unitType, army, ctx), Is.EqualTo(Validation.Passed)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
64 Assert.That(req.GetAllowsAddingMessage(unitType, army, ctx), Is.Empty); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
65 Unit unit = CreateUnitOfType(unitType, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
66 Assert.That(req.AllowsAdding(unit, army, ctx), Is.EqualTo(Validation.Passed)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
67 Assert.That(req.GetAllowsAddingMessage(unit, army, ctx), Is.Empty); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
68 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
69 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
70 protected static void Assert_That__AddingNotApplicable(AbstractUnitRequirement<UnitType> req, UnitType unitType, Unit parent, Army army) |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
71 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
72 AddingToParentContext ctx = new AddingToParentContext(parent); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
73 Assert.That(req.AllowsAdding(unitType, army, ctx), Is.EqualTo(Validation.NotApplicable)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
74 Assert.That(req.GetAllowsAddingMessage(unitType, army, ctx), Is.Empty); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
75 Unit unit = CreateUnitOfType(unitType, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
76 Assert.That(req.AllowsAdding(unit, army, ctx), Is.EqualTo(Validation.NotApplicable)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
77 Assert.That(req.GetAllowsAddingMessage(unit, army, ctx), Is.Empty); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
78 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
79 |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
80 protected static void Assert_That__FailsAdding(AbstractUnitRequirement<UnitType> req, UnitType unitType, Unit parent, Army army, string message) |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
81 { |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
82 AddingToParentContext ctx = new AddingToParentContext(parent); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
83 Assert.That(req.AllowsAdding(unitType, army, ctx), Is.EqualTo(Validation.Failed)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
84 Assert.That(req.GetAllowsAddingMessage(unitType, army, ctx), Is.EqualTo(message)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
85 Unit unit = CreateUnitOfType(unitType, army); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
86 Assert.That(req.AllowsAdding(unit, army, ctx), Is.EqualTo(Validation.Failed)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
87 Assert.That(req.GetAllowsAddingMessage(unit, army, ctx), Is.EqualTo(message)); |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
88 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
89 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
90 } |
5e03b68dd214
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
91 |