annotate API/Objects/Requirement/RequiresNUnitsForMObjectsRequirementTest.cs @ 210:649759343da5

Re #379: Fix validation of requirements to check for unit * Tidy up tests to reduce replication and fix copy-and-paste inconsistencies
author IBBoard <dev@ibboard.co.uk>
date Sat, 25 Feb 2012 16:36:20 +0000
parents c323770e61c2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
208
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 // This file (UnitRequiresNUnitsForMObjectsRequirement.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
c323770e61c2 Re #379: Fix validation of requirements to check for unit
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.
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using NUnit.Framework;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using IBBoard.WarFoundry.API.Objects.Mock;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using NUnit.Framework.SyntaxHelpers;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 using System.Reflection;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 using IBBoard.NUnit;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 using IBBoard.WarFoundry.API.Factories;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 namespace IBBoard.WarFoundry.API.Objects.Requirement
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 public abstract class RequiresNUnitsForMObjectsRequirementTest : AbstractEqualityTest<RequiresNUnitsForMObjectsRequirement<UnitType>>
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 private MockRace mockRace;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 private UnitType unitType1;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 private UnitType unitType2;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 private UnitType unitType3;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 private UnitType unitType4;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 [TestFixtureSetUp()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 public void SetupRace()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25 mockRace = MockRace.GetMockRace();
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 unitType1 = new MockUnitType("type1", "Unit Type 1");
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 mockRace.AddUnitType(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 unitType2 = new MockUnitType("type2", "Unit Type 2");
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 mockRace.AddUnitType(unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 unitType3 = new MockUnitType("type3", "Unit Type 3");
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 mockRace.AddUnitType(unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 unitType4 = new MockUnitType("type4", "Unit Type 4");
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 mockRace.AddUnitType(unitType4);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 public void TestAddingUnrelatedUnitWithNoUnitsAndOneUnitTypeRequiredIsNA()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 Unit unit = CreateUnitOfType(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.NotApplicable));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
46 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
47 public void TestAddingOneUnitWithOneUnitTypeRequiredAndOneUnitOfTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
50 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
51 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
52 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
53 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
54 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
55 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
56
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
57 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
58 public void TestAddingOneUnitWithOneUnitTypeRequiredAndNoUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
59 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
60 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
61 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
62 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
63 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
64 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (would have 0 for 1)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
65 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
66
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
67 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
68 public void TestAddingOneUnitWithTwoDifferentUnitTypesRequiredAndNoUnitOfOneTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
69 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
70 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
71 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
72 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
73 req.AddUnitTypeRequirement(unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
74 req.AddUnitTypeRequirement(unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
75 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
76 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
77 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (would have 0 for 1)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
78 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
79
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
80 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
81 public void TestAddingTwoUnitsWithOneUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
82 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
83 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
84 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
85 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
86 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
87 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
88 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
89 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (would have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
90 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
91
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
92 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
93 public void TestAddingTwoUnitsWithTwoOfUnitTypeAllowedForOneUnitTypeRequiredAndOneUnitOfTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
94 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
95 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
96 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
97 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
98 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
99 req.AddUnitTypeRequirement(unitType2, 1, 2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
100 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
101 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
102 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
103 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
104
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
105 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
106 public void TestAddingTwoUnitsWithTwoAllowedAndOneAllowedForDifferentTypesFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
107 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
108 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
109 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
110 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
111 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
112 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
113 req.AddUnitTypeRequirement(unitType2, 1, 2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
114 req.AddUnitTypeRequirement(unitType3, 1, 1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
115 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
116 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
117 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (would have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
118 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
119
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
120 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
121 public void TestAddingSecondUnitsWithOneAllowedForTwoTypesFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
122 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
123 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
124 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
125 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
126 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
127 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
128 req.AddUnitTypeRequirement(unitType2, 1, 1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
129 req.AddUnitTypeRequirement(unitType3, 1, 1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
130 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
131 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
132 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (would have 1 for 2); 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (would have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
133 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
134
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
135 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
136 public void TestAddingSecondUnitsWithOneAllowedForTwoTypesFails_ShorthandMethod()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
137 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
138 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
139 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
140 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
141 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
142 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
143 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
144 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
145 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (would have 1 for 2); 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (would have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
146 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
147
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
148 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
149 public void TestAddingThreeUnitsWithTwoOfUnitTypeAllowedForOneUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
150 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
151 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
152 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
153 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
154 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
155 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
156 req.AddUnitTypeRequirement(unitType2, 1, 2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
157 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
158 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
159 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (would have 1 for 3)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
160 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
161
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
162 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
163 public void TestAddingOneUnitWithThreeOfUnitTypeAllowedForTwoOfUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
164 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
165 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
166 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
167 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
168 req.AddUnitTypeRequirement(unitType2, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
169 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
170 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
171 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " for every 3 × " + unitType1.Name + " (would have 1 for 1)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
172 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
173
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
174 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
175 public void TestAddingSecondUnitWithThreeOfUnitTypeAllowedForTwoOfUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
176 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
177 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
178 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
179 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
180 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
181 req.AddUnitTypeRequirement(unitType2, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
182 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
183 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
184 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " for every 3 × " + unitType1.Name + " (would have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
185 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
186
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
187 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
188 public void TestAddingFourthUnitWithThreeOfUnitTypeAllowedForTwoOfUnitTypeRequiredAndThreeUnitsOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
189 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
190 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
191 AddUnitsOfTypeToArmy(3, unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
192 AddUnitsOfTypeToArmy(3, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
193 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
194 req.AddUnitTypeRequirement(unitType2, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
195 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
196 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
197 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " for every 3 × " + unitType1.Name + " (would have 3 for 4)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
198 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
199
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
200 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
201 public void TestAddingUnrelatedUnitWithNoUnitsAndTwoCombinedUnitTypesRequiredIsNA()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
202 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
203 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
204 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
205 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
206 Unit unit = CreateUnitOfType(unitType4, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
207 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.NotApplicable));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
208 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
209 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
210
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
211 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
212 public void TestAddingOneUnitWithTwoUnitTypeComboRequiredAndUnitOfOneTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
213 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
214 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
215 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
216 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
217 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
218 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
219 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
220 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
221 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
222
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
223 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
224 public void TestAddingOneUnitWithTwoUnitTypeComboRequiredAndUnitOfOtherTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
225 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
226 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
227 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
228 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
229 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
230 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
231 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
232 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
233 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
234
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
235 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
236 public void TestAddingTwoUnitsWithTwoUnitTypeComboRequiredAndOneUnitOfBothTypesPasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
237 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
238 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
239 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
240 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
241 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
242 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
243 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
244 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
245 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
246 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
247 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
248
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
249 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
250 public void TestAddingTwoUnitsWithTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
251 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
252 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
253 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
254 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
255 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
256 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
257 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
258 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
259 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
260 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
261 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
262
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
263 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
264 public void TestAddingTwoUnitsWithTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
265 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
266 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
267 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
268 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
269 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
270 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
271 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
272 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
273 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
274 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
275 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
276
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
277 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
278 public void TestAddingThreeUnitsWithTwoUnitTypeComboRequiredAndOneUnitOfBothTypesFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
279 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
280 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
281 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
282 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
283 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
284 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
285 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
286 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
287 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
288 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
289 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 1 × " + unitType1.Name + " (would have 2 for 3)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
290 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
291
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
292 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
293 public void TestAddingThreeUnitsWithTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
294 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
295 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
296 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
297 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
298 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
299 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
300 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
301 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
302 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
303 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
304 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 1 × " + unitType1.Name + " (would have 2 for 3)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
305 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
306
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
307 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
308 public void TestAddingThreeUnitsWithTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
309 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
310 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
311 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
312 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
313 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
314 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
315 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
316 req.AddUnitTypeRequirement(unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
317 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
318 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
319 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 1 × " + unitType1.Name + " (would have 2 for 3)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
320 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
321
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
322 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
323 public void TestAddingUnrelatedUnitWithNoUnitsAndThreeForEachTwoCombinedUnitTypesRequiredIsNA()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
324 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
325 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
326 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
327 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
328 Unit unit = CreateUnitOfType(unitType4, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
329 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.NotApplicable));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
330 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
331 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
332
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
333 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
334 public void TestAddingThirdUnitWithThreeForEachTwoUnitTypeComboRequiredAndUnitOfOneTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
335 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
336 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
337 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
338 AddUnitsOfTypeToArmy(2, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
339 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
340 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
341 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
342 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
343 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
344 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
345
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
346 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
347 public void TestAddingThirdUnitWithThreeForEachTwoUnitTypeComboRequiredAndUnitOfOtherTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
348 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
349 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
350 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
351 AddUnitsOfTypeToArmy(2, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
352 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
353 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
354 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
355 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
356 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
357 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
358
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
359 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
360 public void TestAddingSixthUnitWithThreeForEachTwoUnitTypeComboRequiredAndOneUnitOfBothTypesPasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
361 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
362 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
363 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
364 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
365 AddUnitsOfTypeToArmy(5, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
366 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
367 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
368 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
369 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
370 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
371 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
372
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
373 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
374 public void TestAddingSixthUnitWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
375 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
376 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
377 AddUnitsOfTypeToArmy(2, unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
378 AddUnitsOfTypeToArmy(5, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
379 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
380 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
381 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
382 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
383 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
384 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
385
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
386 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
387 public void TestAddingSixthUnitWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
388 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
389 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
390 AddUnitsOfTypeToArmy(2, unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
391 AddUnitsOfTypeToArmy(5, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
392 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
393 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
394 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
395 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
396 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
397 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
398
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
399 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
400 public void TestAddingSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndOneUnitOfBothTypesFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
401 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
402 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
403 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
404 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
405 AddUnitsOfTypeToArmy(6, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
406 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
407 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
408 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
409 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
410 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 3 × " + unitType1.Name + " (would have 2 for 7)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
411 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
412
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
413 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
414 public void TestAddingSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
415 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
416 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
417 AddUnitsOfTypeToArmy(2, unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
418 AddUnitsOfTypeToArmy(6, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
419 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
420 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
421 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
422 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
423 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 3 × " + unitType1.Name + " (would have 2 for 7)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
424 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
425
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
426 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
427 public void TestAddingSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
428 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
429 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
430 AddUnitsOfTypeToArmy(2, unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
431 AddUnitsOfTypeToArmy(6, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
432 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
433 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
434 Unit unit = CreateUnitOfType(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
435 Assert.That(req.AllowsAdding(unit, army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
436 Assert.That(req.GetAllowsAddingMessage(unit.UnitType, army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 3 × " + unitType1.Name + " (would have 2 for 7)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
437 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
438
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
439 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
440 public void TestValidatingArmyWithNoUnitsAndOneUnitTypeRequiredIsNA()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
441 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
442 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
443 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
444 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.NotApplicable));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
445 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
446 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
447
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
448 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
449 public void TestValidatingArmyWithOneUnitTypeRequiredAndOneUnitOfTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
450 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
451 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
452 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
453 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
454 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
455 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
456 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
457 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
458
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
459 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
460 public void TestValidatingArmyWithOneUnitTypeRequiredAndNoUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
461 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
462 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
463 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
464 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
465 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
466 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (have 0 for 1)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
467 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
468
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
469 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
470 public void TestValidatingArmyWithTwoDifferentUnitTypesRequiredAndNoUnitOfOneTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
471 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
472 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
473 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
474 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
475 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
476 req.AddUnitTypeRequirement(unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
477 req.AddUnitTypeRequirement(unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
478 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
479 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (have 0 for 1)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
480 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
481
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
482 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
483 public void TestValidatingArmyWithTwoUnitsAndOneUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
484 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
485 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
486 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
487 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
488 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
489 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
490 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
491 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
492 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
493
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
494 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
495 public void TestValidatingArmyWithTwoUnitsAndTwoOfUnitTypeAllowedForOneUnitTypeRequiredAndOneUnitOfTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
496 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
497 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
498 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
499 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
500 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
501 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
502 req.AddUnitTypeRequirement(unitType2, 1, 2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
503 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
504 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
505 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
506
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
507 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
508 public void TestValidatingArmyWithTwoUnitsWithTwoAllowedAndOneAllowedForDifferentTypesFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
509 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
510 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
511 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
512 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
513 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
514 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
515 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
516 req.AddUnitTypeRequirement(unitType2, 1, 2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
517 req.AddUnitTypeRequirement(unitType3, 1, 1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
518 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
519 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
520 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
521
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
522 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
523 public void TestValidatingArmyWithTwoUnitsWithOneAllowedForTwoTypesFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
524 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
525 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
526 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
527 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
528 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
529 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
530 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
531 req.AddUnitTypeRequirement(unitType2, 1, 1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
532 req.AddUnitTypeRequirement(unitType3, 1, 1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
533 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
534 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (have 1 for 2); 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
535 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
536
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
537 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
538 public void TestValidatingArmyWithTwoUnitsWithOneAllowedForTwoTypesFails_ShorthandMethod()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
539 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
540 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
541 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
542 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
543 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
544 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
545 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
546 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
547 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 1 × " + unitType1.Name + " (have 1 for 2); 1 × " + unitType3.Name + " for every 1 × " + unitType1.Name + " (have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
548 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
549
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
550 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
551 public void TestValidatingArmyWithOneUnitWithThreeOfUnitTypeAllowedForTwoOfUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
552 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
553 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
554 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
555 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
556 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
557 req.AddUnitTypeRequirement(unitType2, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
558 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
559 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " for every 3 × " + unitType1.Name + " (have 1 for 1)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
560 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
561
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
562 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
563 public void TestValidatingArmyWithTwoUnitsWithThreeOfUnitTypeAllowedForTwoOfUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
564 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
565 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
566 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
567 AddUnitsOfTypeToArmy(2, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
568 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
569 req.AddUnitTypeRequirement(unitType2, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
570 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
571 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " for every 3 × " + unitType1.Name + " (have 1 for 2)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
572 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
573
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
574 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
575 public void TestValidatingArmyWithFourUnitsWithThreeOfUnitTypeAllowedForTwoOfUnitTypeRequiredAndThreeUnitsOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
576 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
577 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
578 AddUnitsOfTypeToArmy(3, unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
579 AddUnitsOfTypeToArmy(4, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
580 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
581 req.AddUnitTypeRequirement(unitType2, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
582 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
583 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 2 × " + unitType2.Name + " for every 3 × " + unitType1.Name + " (have 3 for 4)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
584 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
585
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
586 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
587 public void TestValidatingArmyWithThreeUnitsAndTwoOfUnitTypeAllowedForOneUnitTypeRequiredAndOneUnitOfTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
588 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
589 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
590 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
591 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
592 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
593 AddUnitOfTypeToArmy(unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
594 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
595 req.AddUnitTypeRequirement(unitType2, 1, 2);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
596 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
597 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " for every 2 × " + unitType1.Name + " (have 1 for 3)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
598 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
599
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
600 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
601 public void TestValidatingArmyWithNoUnitsAndThreeForEachTwoCombinedUnitTypesRequiredIsNA()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
602 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
603 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
604 AddUnitOfTypeToArmy(unitType4, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
605 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
606 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
607 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.NotApplicable));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
608 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
609 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
610
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
611 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
612 public void TestValidatingArmyWithThreeUnitsWithThreeForEachTwoUnitTypeComboRequiredAndUnitOfOneTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
613 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
614 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
615 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
616 AddUnitsOfTypeToArmy(3, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
617 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
618 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
619 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
620 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
621 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
622
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
623 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
624 public void TestValidatingArmyWithThreeUnitsWithThreeForEachTwoUnitTypeComboRequiredAndUnitOfOtherTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
625 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
626 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
627 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
628 AddUnitsOfTypeToArmy(3, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
629 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
630 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
631 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
632 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
633 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
634
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
635 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
636 public void TestValidatingArmyWithSixUnitsWithThreeForEachTwoUnitTypeComboRequiredAndOneUnitOfBothTypesPasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
637 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
638 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
639 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
640 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
641 AddUnitsOfTypeToArmy(6, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
642 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
643 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
644 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
645 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
646 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
647
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
648 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
649 public void TestValidatingArmyWithSixUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
650 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
651 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
652 AddUnitsOfTypeToArmy(2, unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
653 AddUnitsOfTypeToArmy(6, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
654 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
655 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
656 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
657 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
658 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
659
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
660 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
661 public void TestValidatingArmyWithSixUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypePasses()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
662 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
663 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
664 AddUnitsOfTypeToArmy(2, unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
665 AddUnitsOfTypeToArmy(6, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
666 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
667 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
668 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Passed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
669 Assert.That(req.GetValidationMessage(army), Is.Empty);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
670 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
671
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
672 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
673 public void TestValidatingArmyWithSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndOneUnitOfBothTypesFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
674 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
675 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
676 AddUnitOfTypeToArmy(unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
677 AddUnitOfTypeToArmy(unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
678 AddUnitsOfTypeToArmy(7, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
679 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
680 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
681 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
682 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 3 × " + unitType1.Name + " (have 2 for 7)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
683 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
684
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
685 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
686 public void TestValidatingArmyWithSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOneTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
687 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
688 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
689 AddUnitsOfTypeToArmy(2, unitType3, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
690 AddUnitsOfTypeToArmy(7, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
691 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
692 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
693 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
694 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 3 × " + unitType1.Name + " (have 2 for 7)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
695 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
696
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
697 [Test()]
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
698 public void TestValidatingArmyWithSevenUnitsWithThreeForEachTwoUnitTypeComboRequiredAndTwoUnitsOfOtherTypeFails()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
699 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
700 Army army = new Army(mockRace, "Test", 1000);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
701 AddUnitsOfTypeToArmy(2, unitType2, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
702 AddUnitsOfTypeToArmy(7, unitType1, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
703 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType1);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
704 req.AddUnitTypeRequirement(3, unitType2, unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
705 Assert.That(req.ValidatesArmy(army), Is.EqualTo(Validation.Failed));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
706 Assert.That(req.GetValidationMessage(army), Is.EqualTo("Army must contain: 1 × " + unitType2.Name + " or " + unitType3.Name + " for every 3 × " + unitType1.Name + " (have 2 for 7)."));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
707 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
708
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
709 private static void AddUnitsOfTypeToArmy(int count, UnitType unitType, Army army)
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
710 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
711 for (int i = 0; i < count; i++)
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
712 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
713 AddUnitOfTypeToArmy(unitType, army);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
714 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
715 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
716
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
717 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army)
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
718 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
719 army.AddUnit(CreateUnitOfType(unitType, army));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
720 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
721
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
722 private static Unit CreateUnitOfType(UnitType unitType, Army army)
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
723 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
724 return new Unit(unitType, army.GetCategory(unitType.MainCategory));
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
725 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
726
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
727 public override RequiresNUnitsForMObjectsRequirement<UnitType> GetObject()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
728 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
729 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
730 req.AddUnitTypeRequirement(unitType1, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
731 return req;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
732 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
733
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
734 public override RequiresNUnitsForMObjectsRequirement<UnitType> GetSameObject()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
735 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
736 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
737 req.AddUnitTypeRequirement(unitType1, 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
738 return req;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
739 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
740
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
741 public override RequiresNUnitsForMObjectsRequirement<UnitType> GetDifferentObject()
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
742 {
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
743 RequiresNUnitsForMObjectsRequirement<UnitType> req = CreateRequirement(unitType3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
744 DummyWarFoundryFactory factory = new DummyWarFoundryFactory();
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
745 GameSystem gameSystem = new GameSystem("system", "system", factory);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
746 Race race = new Race("race", "race", gameSystem, factory);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
747 req.AddUnitTypeRequirement(new UnitType("id2", "Type 2", race), 2, 3);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
748 return req;
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
749 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
750
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
751 protected abstract RequiresNUnitsForMObjectsRequirement<UnitType> CreateRequirement(UnitType allowedType, params UnitType[] requiredUnitTypes);
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
752 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
753 }
c323770e61c2 Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
754