comparison API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirementTest.cs @ 144:eced294e82f2

Re #345: Add failure message to requirements * Add tests for "no more than" requirements
author IBBoard <dev@ibboard.co.uk>
date Sun, 01 May 2011 15:38:01 +0000
parents 2ae80631ec9c
children 8c519a44e699
comparison
equal deleted inserted replaced
143:6fdb76d48e04 144:eced294e82f2
108 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed)); 108 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
109 AddUnitOfTypeToArmy(unitType2, army); 109 AddUnitOfTypeToArmy(unitType2, army);
110 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed)); 110 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
111 } 111 }
112 112
113 [Test]
114 public void TestValidationMessageIsBlankForPass()
115 {
116 Army army = new Army(mockRace, "Test", 1000);
117 RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
118 Assert.That(req.GetValidationMessage(army), Is.Empty);
119 }
120
121 [Test]
122 public void TestValidationMessageIsCorrectForFailWithOneUnitProhibited()
123 {
124 Army army = new Army(mockRace, "Test", 1000);
125 AddUnitOfTypeToArmy(unitType1, army);
126 RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement(unitType1);
127 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (have 1)."));
128 }
129
130 [Test]
131 public void TestValidationMessageIsCorrectForFailWithTwoOfOneUnitLimit()
132 {
133 Army army = new Army(mockRace, "Test", 1000);
134 AddUnitOfTypeToArmy(unitType1, army);
135 AddUnitOfTypeToArmy(unitType1, army);
136 AddUnitOfTypeToArmy(unitType1, army);
137 RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
138 req.AddUnitTypeRequirement(unitType1, 2);
139 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 2 × " + unitType1.Name + " (have 3)."));
140 }
141
142 [Test]
143 public void TestValidationMessageIsCorrectForFailWithTwoUnitsProhibited()
144 {
145 Army army = new Army(mockRace, "Test", 1000);
146 AddUnitOfTypeToArmy(unitType1, army);
147 AddUnitOfTypeToArmy(unitType2, army);
148 RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
149 req.AddUnitTypeRequirement(unitType1);
150 req.AddUnitTypeRequirement(unitType2);
151 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (have 1); 0 × " + unitType2.Name + " (have 1)."));
152 }
153
154 [Test]
155 public void TestValidationMessageIsCorrectForFailWithTwoUnitsProhibitedAndOneUnitInArmy()
156 {
157 Army army = new Army(mockRace, "Test", 1000);
158 AddUnitOfTypeToArmy(unitType1, army);
159 RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
160 req.AddUnitTypeRequirement(unitType1);
161 req.AddUnitTypeRequirement(unitType2);
162 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType1.Name + " (have 1)."));
163 }
164
165 [Test]
166 public void TestValidationMessageIsCorrectForFailWithTwoUnitsProhibitedAndOtherUnitInArmy()
167 {
168 Army army = new Army(mockRace, "Test", 1000);
169 AddUnitOfTypeToArmy(unitType2, army);
170 RequiresNoMoreThanNOfUnitTypeRequirement req = new RequiresNoMoreThanNOfUnitTypeRequirement();
171 req.AddUnitTypeRequirement(unitType1);
172 req.AddUnitTypeRequirement(unitType2);
173 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army cannot contain more than: 0 × " + unitType2.Name + " (have 1)."));
174 }
175
113 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army) 176 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army)
114 { 177 {
115 army.AddUnit(CreateUnitOfType(unitType, army)); 178 army.AddUnit(CreateUnitOfType(unitType, army));
116 } 179 }
117 180