Mercurial > repos > IBBoard.WarFoundry.API.Tests
annotate API/Objects/Requirements/UnitRequiresAtLeastNUnitsRequirementTest.cs @ 106:4dad874f4862
Re #27: Define unit requirements
* Add unit tests for multiple unit types being required
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 27 Mar 2011 19:19:04 +0000 |
parents | 9163bd04a3db |
children |
rev | line source |
---|---|
102 | 1 // This file (UnitRequiresAtLeastNUnitsRequirement.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard |
2 // | |
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. | |
4 using System; | |
5 using NUnit.Framework; | |
6 using IBBoard.WarFoundry.API.Objects.Mock; | |
7 using NUnit.Framework.SyntaxHelpers; | |
8 | |
9 namespace IBBoard.WarFoundry.API.Objects.Requirements | |
10 { | |
11 [TestFixture()] | |
12 public class UnitRequiresAtLeastNUnitsRequirementTest | |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
13 { |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
14 private MockRace mockRace; |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
15 private UnitType unitType1; |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
16 private UnitType unitType2; |
106
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
17 private UnitType unitType3; |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
18 |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
19 [TestFixtureSetUp()] |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
20 public void SetupRace() |
102 | 21 { |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
22 mockRace = MockRace.GetMockRace(); |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
23 unitType1 = new MockUnitType("type1", "Unit Type 1"); |
102 | 24 mockRace.AddUnitType(unitType1); |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
25 unitType2 = new MockUnitType("type2", "Unit Type 2"); |
102 | 26 mockRace.AddUnitType(unitType2); |
106
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
27 unitType3 = new MockUnitType("type3", "Unit Type 3"); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
28 mockRace.AddUnitType(unitType3); |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
29 } |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
30 |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
31 [Test()] |
104
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
32 public void TestAddingUnitWithNoUnitsAndOneUnitTypeRequired() |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
33 { |
102 | 34 Army army = new Army(mockRace, "Test", 1000); |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
35 Unit unit = CreateUnitOfType(unitType1, army); |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
36 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType2); |
105
9163bd04a3db
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
37 Assert.That(req.AllowsAdding(unit, army), Is.False); |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
38 } |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
39 |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
40 [Test()] |
104
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
41 public void TestAddingUnitWithOneUnitAndOneUnitTypeRequired() |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
42 { |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
43 Army army = new Army(mockRace, "Test", 1000); |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
44 AddUnitOfTypeToArmy(unitType2, army); |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
45 Unit unit = CreateUnitOfType(unitType1, army); |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
46 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType2); |
105
9163bd04a3db
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
47 Assert.That(req.AllowsAdding(unit, army), Is.True); |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
48 } |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
49 |
104
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
50 [Test()] |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
51 public void TestAddingUnitTypeWithNoUnitsAndOneUnitTypeRequired() |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
52 { |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
53 Army army = new Army(mockRace, "Test", 1000); |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
54 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType2); |
105
9163bd04a3db
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
55 Assert.That(req.AllowsAdding(unitType1, army), Is.False); |
104
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
56 } |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
57 |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
58 [Test()] |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
59 public void TestAddingUnitTypeWithOneUnitAndOneUnitTypeRequired() |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
60 { |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
61 Army army = new Army(mockRace, "Test", 1000); |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
62 AddUnitOfTypeToArmy(unitType2, army); |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
63 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType2); |
105
9163bd04a3db
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
64 Assert.That(req.AllowsAdding(unitType1, army), Is.True); |
104
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
65 } |
782494137b58
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
103
diff
changeset
|
66 |
106
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
67 [Test()] |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
68 public void TestAddingUnitTypeWithNoUnitsAndTwoUnitTypesRequired() |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
69 { |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
70 Army army = new Army(mockRace, "Test", 1000); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
71 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType2, unitType3); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
72 Assert.That(req.AllowsAdding(unitType1, army), Is.False); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
73 } |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
74 |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
75 [Test()] |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
76 public void TestAddingUnitTypeWithOneUnitAndTwoUnitTypesRequired() |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
77 { |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
78 Army army = new Army(mockRace, "Test", 1000); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
79 AddUnitOfTypeToArmy(unitType2, army); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
80 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType2, unitType3); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
81 Assert.That(req.AllowsAdding(unitType1, army), Is.False); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
82 } |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
83 |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
84 [Test()] |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
85 public void TestAddingUnitTypeWithBothUnitsAndTwoUnitTypesRequired() |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
86 { |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
87 Army army = new Army(mockRace, "Test", 1000); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
88 AddUnitOfTypeToArmy(unitType2, army); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
89 AddUnitOfTypeToArmy(unitType3, army); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
90 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(unitType2, unitType3); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
91 Assert.That(req.AllowsAdding(unitType1, army), Is.True); |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
92 } |
4dad874f4862
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
105
diff
changeset
|
93 |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
94 private static void AddUnitOfTypeToArmy(UnitType unitType, Army army) |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
95 { |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
96 army.AddUnit(CreateUnitOfType(unitType, army)); |
102 | 97 } |
103
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
98 |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
99 private static Unit CreateUnitOfType(UnitType unitType, Army army) |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
100 { |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
101 return new Unit(unitType, army.GetCategory(unitType.MainCategory)); |
c6562eb62d04
Re #27: Define unit requirements
IBBoard <dev@ibboard.co.uk>
parents:
102
diff
changeset
|
102 } |
102 | 103 } |
104 } | |
105 |