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 }