Mercurial > repos > IBBoard.WarFoundry.API.Tests
comparison API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirementTest.cs @ 116:49fb69ea13f2
Re #27: Unit requirements
* Switch to enumeration and update tests as appropriate
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 04 Apr 2011 19:05:47 +0000 |
parents | 4fcac7e162fe |
children | 5f389466e8a8 |
comparison
equal
deleted
inserted
replaced
115:bcca07bee8ea | 116:49fb69ea13f2 |
---|---|
33 { | 33 { |
34 Army army = new Army(mockRace, "Test", 1000); | 34 Army army = new Army(mockRace, "Test", 1000); |
35 Unit unit = CreateUnitOfType(unitType1, army); | 35 Unit unit = CreateUnitOfType(unitType1, army); |
36 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 36 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
37 req.AddUnitTypeRequirement(unitType2); | 37 req.AddUnitTypeRequirement(unitType2); |
38 Assert.That(req.AllowsAdding(unit, army), Is.False); | 38 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed)); |
39 } | 39 } |
40 | 40 |
41 [Test()] | 41 [Test()] |
42 public void TestAddingUnitWithOneUnitAndOneUnitTypeRequired() | 42 public void TestAddingUnitWithOneUnitAndOneUnitTypeRequired() |
43 { | 43 { |
44 Army army = new Army(mockRace, "Test", 1000); | 44 Army army = new Army(mockRace, "Test", 1000); |
45 AddUnitOfTypeToArmy(unitType2, army); | 45 AddUnitOfTypeToArmy(unitType2, army); |
46 Unit unit = CreateUnitOfType(unitType1, army); | 46 Unit unit = CreateUnitOfType(unitType1, army); |
47 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 47 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
48 req.AddUnitTypeRequirement(unitType2); | 48 req.AddUnitTypeRequirement(unitType2); |
49 Assert.That(req.AllowsAdding(unit, army), Is.True); | 49 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed)); |
50 } | 50 } |
51 | 51 |
52 [Test()] | 52 [Test()] |
53 public void TestAddingUnitTypeWithNoUnitsAndOneUnitTypeRequired() | 53 public void TestAddingUnitTypeWithNoUnitsAndOneUnitTypeRequired() |
54 { | 54 { |
55 Army army = new Army(mockRace, "Test", 1000); | 55 Army army = new Army(mockRace, "Test", 1000); |
56 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 56 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
57 req.AddUnitTypeRequirement(unitType2); | 57 req.AddUnitTypeRequirement(unitType2); |
58 Assert.That(req.AllowsAdding(unitType1, army), Is.False); | 58 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); |
59 } | 59 } |
60 | 60 |
61 [Test()] | 61 [Test()] |
62 public void TestAddingUnitTypeWithOneUnitAndOneUnitTypeRequired() | 62 public void TestAddingUnitTypeWithOneUnitAndOneUnitTypeRequired() |
63 { | 63 { |
64 Army army = new Army(mockRace, "Test", 1000); | 64 Army army = new Army(mockRace, "Test", 1000); |
65 AddUnitOfTypeToArmy(unitType2, army); | 65 AddUnitOfTypeToArmy(unitType2, army); |
66 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 66 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
67 req.AddUnitTypeRequirement(unitType2); | 67 req.AddUnitTypeRequirement(unitType2); |
68 Assert.That(req.AllowsAdding(unitType1, army), Is.True); | 68 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); |
69 } | 69 } |
70 | 70 |
71 [Test()] | 71 [Test()] |
72 public void TestAddingUnitTypeWithNoUnitsAndTwoUnitTypesRequired() | 72 public void TestAddingUnitTypeWithNoUnitsAndTwoUnitTypesRequired() |
73 { | 73 { |
74 Army army = new Army(mockRace, "Test", 1000); | 74 Army army = new Army(mockRace, "Test", 1000); |
75 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 75 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
76 req.AddUnitTypeRequirement(unitType2); | 76 req.AddUnitTypeRequirement(unitType2); |
77 req.AddUnitTypeRequirement(unitType3); | 77 req.AddUnitTypeRequirement(unitType3); |
78 Assert.That(req.AllowsAdding(unitType1, army), Is.False); | 78 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); |
79 } | 79 } |
80 | 80 |
81 [Test()] | 81 [Test()] |
82 public void TestAddingUnitTypeWithOneUnitAndTwoUnitTypesRequired() | 82 public void TestAddingUnitTypeWithOneUnitAndTwoUnitTypesRequired() |
83 { | 83 { |
84 Army army = new Army(mockRace, "Test", 1000); | 84 Army army = new Army(mockRace, "Test", 1000); |
85 AddUnitOfTypeToArmy(unitType2, army); | 85 AddUnitOfTypeToArmy(unitType2, army); |
86 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 86 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
87 req.AddUnitTypeRequirement(unitType2); | 87 req.AddUnitTypeRequirement(unitType2); |
88 req.AddUnitTypeRequirement(unitType3); | 88 req.AddUnitTypeRequirement(unitType3); |
89 Assert.That(req.AllowsAdding(unitType1, army), Is.False); | 89 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); |
90 } | 90 } |
91 | 91 |
92 [Test()] | 92 [Test()] |
93 public void TestAddingUnitTypeWithBothUnitsAndTwoUnitTypesRequired() | 93 public void TestAddingUnitTypeWithBothUnitsAndTwoUnitTypesRequired() |
94 { | 94 { |
96 AddUnitOfTypeToArmy(unitType2, army); | 96 AddUnitOfTypeToArmy(unitType2, army); |
97 AddUnitOfTypeToArmy(unitType3, army); | 97 AddUnitOfTypeToArmy(unitType3, army); |
98 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 98 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
99 req.AddUnitTypeRequirement(unitType2); | 99 req.AddUnitTypeRequirement(unitType2); |
100 req.AddUnitTypeRequirement(unitType3); | 100 req.AddUnitTypeRequirement(unitType3); |
101 Assert.That(req.AllowsAdding(unitType1, army), Is.True); | 101 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); |
102 } | 102 } |
103 | 103 |
104 [Test()] | 104 [Test()] |
105 public void TestAddingUnitTypeWithOneUnitAndTwoOfOneUnitTypeRequired() | 105 public void TestAddingUnitTypeWithOneUnitAndTwoOfOneUnitTypeRequired() |
106 { | 106 { |
107 Army army = new Army(mockRace, "Test", 1000); | 107 Army army = new Army(mockRace, "Test", 1000); |
108 AddUnitOfTypeToArmy(unitType2, army); | 108 AddUnitOfTypeToArmy(unitType2, army); |
109 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 109 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
110 req.AddUnitTypeRequirement(unitType2, 2); | 110 req.AddUnitTypeRequirement(unitType2, 2); |
111 Assert.That(req.AllowsAdding(unitType1, army), Is.False); | 111 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Failed)); |
112 } | 112 } |
113 | 113 |
114 [Test()] | 114 [Test()] |
115 public void TestAddingUnrelatedUnitTypeIsAllowedWhenRequirementsNotMet() | 115 public void TestAddingUnrelatedUnitTypeIsAllowedWhenRequirementsNotMet() |
116 { | 116 { |
117 Army army = new Army(mockRace, "Test", 1000); | 117 Army army = new Army(mockRace, "Test", 1000); |
118 AddUnitOfTypeToArmy(unitType2, army); | 118 AddUnitOfTypeToArmy(unitType2, army); |
119 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 119 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
120 req.AddUnitTypeRequirement(unitType2, 2); | 120 req.AddUnitTypeRequirement(unitType2, 2); |
121 Assert.That(req.AllowsAdding(unitType3, army), Is.True); | 121 Assert.That(req.AllowsAdding(unitType3, army), Is.EqualTo(Validation.NotApplicable)); |
122 } | 122 } |
123 | 123 |
124 [Test()] | 124 [Test()] |
125 public void TestAddingUnitTypeWithTwoUnitsAndTwoOfOneUnitTypeRequired() | 125 public void TestAddingUnitTypeWithTwoUnitsAndTwoOfOneUnitTypeRequired() |
126 { | 126 { |
127 Army army = new Army(mockRace, "Test", 1000); | 127 Army army = new Army(mockRace, "Test", 1000); |
128 AddUnitOfTypeToArmy(unitType2, army); | 128 AddUnitOfTypeToArmy(unitType2, army); |
129 AddUnitOfTypeToArmy(unitType2, army); | 129 AddUnitOfTypeToArmy(unitType2, army); |
130 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 130 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
131 req.AddUnitTypeRequirement(unitType2, 2); | 131 req.AddUnitTypeRequirement(unitType2, 2); |
132 Assert.That(req.AllowsAdding(unitType1, army), Is.True); | 132 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); |
133 } | 133 } |
134 | 134 |
135 [Test()] | 135 [Test()] |
136 public void TestAddingUnitTypeRequirementWithNoNumberDefaultsToHavingOne() | 136 public void TestAddingUnitTypeRequirementWithNoNumberDefaultsToHavingOne() |
137 { | 137 { |
138 Army army = new Army(mockRace, "Test", 1000); | 138 Army army = new Army(mockRace, "Test", 1000); |
139 AddUnitOfTypeToArmy(unitType2, army); | 139 AddUnitOfTypeToArmy(unitType2, army); |
140 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 140 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
141 req.AddUnitTypeRequirement(unitType2); | 141 req.AddUnitTypeRequirement(unitType2); |
142 Assert.That(req.AllowsAdding(unitType1, army), Is.True); | 142 Assert.That(req.AllowsAdding(unitType1, army), Is.EqualTo(Validation.Passed)); |
143 } | 143 } |
144 | 144 |
145 [Test()] | 145 [Test()] |
146 public void TestValidityOfArmyWithNoUnitsAndOneUnitTypeRequired() | 146 public void TestValidityOfArmyWithNoUnitsAndOneUnitTypeRequired() |
147 { | 147 { |
148 Army army = new Army(mockRace, "Test", 1000); | 148 Army army = new Army(mockRace, "Test", 1000); |
149 AddUnitOfTypeToArmy(unitType1, army); | 149 AddUnitOfTypeToArmy(unitType1, army); |
150 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 150 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
151 req.AddUnitTypeRequirement(unitType2); | 151 req.AddUnitTypeRequirement(unitType2); |
152 Assert.That(req.ValidatesArmy(army), Is.False); | 152 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed)); |
153 } | 153 } |
154 | 154 |
155 [Test()] | 155 [Test()] |
156 public void TestValidityOfArmyWithOneUnitAndOneUnitTypeRequired() | 156 public void TestValidityOfArmyWithOneUnitAndOneUnitTypeRequired() |
157 { | 157 { |
158 Army army = new Army(mockRace, "Test", 1000); | 158 Army army = new Army(mockRace, "Test", 1000); |
159 AddUnitOfTypeToArmy(unitType2, army); | 159 AddUnitOfTypeToArmy(unitType2, army); |
160 AddUnitOfTypeToArmy(unitType1, army); | 160 AddUnitOfTypeToArmy(unitType1, army); |
161 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 161 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
162 req.AddUnitTypeRequirement(unitType2); | 162 req.AddUnitTypeRequirement(unitType2); |
163 Assert.That(req.ValidatesArmy(army), Is.True); | 163 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed)); |
164 } | 164 } |
165 | 165 |
166 [Test()] | 166 [Test()] |
167 public void TestValidityOfArmyWhenNoRequireeAndRequirementNotMet() | 167 public void TestValidityOfArmyWhenNoRequireeAndRequirementNotMet() |
168 { | 168 { |
169 Army army = new Army(mockRace, "Test", 1000); | 169 Army army = new Army(mockRace, "Test", 1000); |
170 AddUnitOfTypeToArmy(unitType2, army); | 170 AddUnitOfTypeToArmy(unitType2, army); |
171 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); | 171 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType1); |
172 req.AddUnitTypeRequirement(unitType2, 2); | 172 req.AddUnitTypeRequirement(unitType2, 2); |
173 Assert.That(req.ValidatesArmy(army), Is.True); | 173 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.NotApplicable)); |
174 } | 174 } |
175 | |
175 | 176 |
176 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army) | 177 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army) |
177 { | 178 { |
178 army.AddUnit(CreateUnitOfType(unitType, army)); | 179 army.AddUnit(CreateUnitOfType(unitType, army)); |
179 } | 180 } |
181 | |
182 | |
180 private static Unit CreateUnitOfType(UnitType unitType, Army army) | 183 private static Unit CreateUnitOfType(UnitType unitType, Army army) |
181 { | 184 { |
182 return new Unit(unitType, army.GetCategory(unitType.MainCategory)); | 185 return new Unit(unitType, army.GetCategory(unitType.MainCategory)); |
183 } | 186 } |
184 } | 187 } |