comparison API/Objects/RaceTests.cs @ 137:081b48413f6d

Re #140: Add equality methods to WarFoundry objects * Add equality to Race, GameSystem and UnitType tests * Create equality test for UnitCountRequirementData Not all tests pass yet
author IBBoard <dev@ibboard.co.uk>
date Tue, 26 Apr 2011 15:03:46 +0000
parents 95dac00e9330
children 3e4864e206ea
comparison
equal deleted inserted replaced
136:d28c3c1ec1ec 137:081b48413f6d
5 using NUnit.Framework; 5 using NUnit.Framework;
6 using IBBoard.WarFoundry.API.Objects.Mock; 6 using IBBoard.WarFoundry.API.Objects.Mock;
7 using NUnit.Framework.SyntaxHelpers; 7 using NUnit.Framework.SyntaxHelpers;
8 using IBBoard.WarFoundry.API.Objects.Requirement; 8 using IBBoard.WarFoundry.API.Objects.Requirement;
9 using System.Collections.Generic; 9 using System.Collections.Generic;
10 using IBBoard.NUnit;
11 using System.Reflection;
12 using IBBoard.WarFoundry.API.Factories;
10 13
11 namespace IBBoard.WarFoundry.API.Objects 14 namespace IBBoard.WarFoundry.API.Objects
12 { 15 {
13 [TestFixture()] 16 [TestFixture()]
14 public class RaceTests 17 public class RaceTests : AbstractEqualityTest<Race>
15 { 18 {
19 //FIXME We shouldn't duplicate these tests, but it is broken at the moment
20 [Test]
21 public void TestEquality()
22 {
23 Assert.AreEqual(GetObject(), GetSameObject());
24 Assert.AreEqual(GetSameObject(), GetObject());
25 }
26
27 [Test]
28 public void TestInequality()
29 {
30 Assert.AreNotEqual(GetObject(), GetDifferentObject());
31 Assert.AreNotEqual(GetSameObject(), GetDifferentObject());
32 Assert.AreNotEqual(GetDifferentObject(), GetObject());
33 Assert.AreNotEqual(GetDifferentObject(), GetSameObject());
34 }
35
36 [Test]
37 public void TestReflexiveEquality()
38 {
39 Assert.AreEqual(GetObject(), GetObject());
40 Assert.AreEqual(GetSameObject(), GetSameObject());
41 Assert.AreEqual(GetDifferentObject(), GetDifferentObject());
42 }
43
44 [Test]
45 public void TestOtherInequality()
46 {
47 MethodInfo[] methodInfo = GetType().GetMethods();
48 Race obj = GetObject();
49
50 foreach (MethodInfo method in methodInfo)
51 {
52 if (method.Name.StartsWith("GetOtherDifferent"))
53 {
54 Race otherObj = (Race)method.Invoke(this, new object[0]);
55 Assert.AreNotEqual(obj, otherObj, "Objects equal for "+method.Name);
56 Assert.AreNotEqual(otherObj, obj, "Objects equal for "+method.Name);
57 }
58 }
59 }
60
61
62
63
16 [Test()] 64 [Test()]
17 public void TestRaceWithNoUnitTypesHasNoRequirements() 65 public void TestRaceWithNoUnitTypesHasNoRequirements()
18 { 66 {
19 Assert.That(new MockRace().GetRequirements(), Has.Count(0)); 67 Assert.That(new MockRace().GetRequirements(), Has.Count(0));
20 } 68 }
58 Assert.That(raceRequirements, Has.Count(3)); 106 Assert.That(raceRequirements, Has.Count(3));
59 Assert.That(raceRequirements, Has.Member(unitRequirement1)); 107 Assert.That(raceRequirements, Has.Member(unitRequirement1));
60 Assert.That(raceRequirements, Has.Member(unitRequirement2)); 108 Assert.That(raceRequirements, Has.Member(unitRequirement2));
61 Assert.That(raceRequirements, Has.Member(unitRequirement3)); 109 Assert.That(raceRequirements, Has.Member(unitRequirement3));
62 } 110 }
111
112 public override Race GetObject ()
113 {
114 DummyWarFoundryFactory factory = new DummyWarFoundryFactory();
115 GameSystem gameSystem = new GameSystem("system", "system", factory);
116 return new Race("race", "race", gameSystem, factory);
117 }
118
119 public override Race GetSameObject ()
120 {
121 DummyWarFoundryFactory factory = new DummyWarFoundryFactory();
122 GameSystem gameSystem = new GameSystem("system", "system", factory);
123 return new Race("race", "race", gameSystem, factory);
124 }
125
126 public override Race GetDifferentObject ()
127 {
128 DummyWarFoundryFactory factory = new DummyWarFoundryFactory();
129 GameSystem gameSystem = new GameSystem("system2", "another system", factory);
130 return new Race("race2", "other race", gameSystem, factory);
131 }
63 } 132 }
64 } 133 }
65 134