Mercurial > repos > IBBoard.WarFoundry.API.Tests
diff API/Objects/UnitTypeTest.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 | d28c3c1ec1ec |
children | 2ae80631ec9c |
line wrap: on
line diff
--- a/API/Objects/UnitTypeTest.cs Mon Apr 25 15:09:54 2011 +0000 +++ b/API/Objects/UnitTypeTest.cs Tue Apr 26 15:03:46 2011 +0000 @@ -6,12 +6,60 @@ using NUnit.Framework.Constraints; using NUnit.Framework.SyntaxHelpers; using IBBoard.WarFoundry.API.Objects.Requirement; +using System.Reflection; +using IBBoard.NUnit; +using IBBoard.WarFoundry.API.Factories; namespace IBBoard.WarFoundry.API.Objects { [TestFixture()] - public class UnitTypeTest + public class UnitTypeTest : AbstractEqualityTest<UnitType> { + //FIXME We shouldn't duplicate these tests, but it is broken at the moment + [Test] + public void TestEquality() + { + Assert.AreEqual(GetObject(), GetSameObject()); + Assert.AreEqual(GetSameObject(), GetObject()); + } + + [Test] + public void TestInequality() + { + Assert.AreNotEqual(GetObject(), GetDifferentObject()); + Assert.AreNotEqual(GetSameObject(), GetDifferentObject()); + Assert.AreNotEqual(GetDifferentObject(), GetObject()); + Assert.AreNotEqual(GetDifferentObject(), GetSameObject()); + } + + [Test] + public void TestReflexiveEquality() + { + Assert.AreEqual(GetObject(), GetObject()); + Assert.AreEqual(GetSameObject(), GetSameObject()); + Assert.AreEqual(GetDifferentObject(), GetDifferentObject()); + } + + [Test] + public void TestOtherInequality() + { + MethodInfo[] methodInfo = GetType().GetMethods(); + UnitType obj = GetObject(); + + foreach (MethodInfo method in methodInfo) + { + if (method.Name.StartsWith("GetOtherDifferent")) + { + UnitType otherObj = (UnitType)method.Invoke(this, new object[0]); + Assert.AreNotEqual(obj, otherObj, "Objects equal for "+method.Name); + Assert.AreNotEqual(otherObj, obj, "Objects equal for "+method.Name); + } + } + } + + + + [Test()] public void TestSettingMainCategorySetsCategoriesCollection() { @@ -70,6 +118,24 @@ minLimit.AddUnitTypeRequirement(unitType, 1); Assert.That(unitType.GetRequirements(), Has.Member(minLimit)); } + + public override UnitType GetObject () + { + return new UnitType("id1", "Type 1", new MockRace()); + } + + public override UnitType GetSameObject () + { + return new UnitType("id1", "Type 1", new MockRace()); + } + + public override UnitType GetDifferentObject () + { + DummyWarFoundryFactory factory = new DummyWarFoundryFactory(); + GameSystem gameSystem = new GameSystem("system", "system", factory); + Race race = new Race("race", "race", gameSystem, factory); + return new UnitType("id2", "Type 2", race); + } } }