changeset 35:4302e6b2c5c1

Re #228: Crash with missing abilityID * Update tests to match new refactored classes * Add expected message to missing game system error test * Re-implement missing ability test
author IBBoard <dev@ibboard.co.uk>
date Thu, 24 Dec 2009 19:46:30 +0000
parents bdaeadafe130
children 82cd08385bfe
files API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs API/FixedGameSystemWarFoundryLoader.cs API/WarFoundryLoaderTest.cs IBBoard.WarFoundry.API.Tests.csproj
diffstat 4 files changed, 45 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs	Thu Dec 24 14:55:35 2009 +0000
+++ b/API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs	Thu Dec 24 19:46:30 2009 +0000
@@ -8,6 +8,7 @@
 using System.Xml;
 using NUnit.Framework;
 using IBBoard.WarFoundry.API.Objects;
+using IBBoard.WarFoundry.API.Objects.Mock;
 using IBBoard.IO;
 
 namespace IBBoard.WarFoundry.API.Factories.Xml
@@ -18,20 +19,29 @@
 	public class WarFoundryXmlRaceFactoryTest
 	{
 		[Test()]
-		[ExpectedException(typeof(FileLoadException))]
+		[ExpectedException(typeof(InvalidFileException), ExpectedMessage="Ability for Empire General with ID leaderOfMen did not exist in race definition")]
 		public void TestCompleteLoadingOnRaceWithMissingAbilityIdErrors ()
 		{
-			ICollection<IWarFoundryObject> objs = WarFoundryXmlFactory.GetFactory().CreateObjectsFromFile(new FileInfo("testdata/race-with-non-existant-ability.race"));
-			Assert.AreEqual(1, objs.Count);
-			IEnumerator<IWarFoundryObject> enumerator = objs.GetEnumerator();
-			enumerator.Reset();
-			enumerator.MoveNext();
-			Race race = (Race)enumerator.Current;
-			Category[] cats = race.Categories;
+			try
+			{
+				WarFoundryLoader.SetDefault(new FixedGameSystemWarFoundryLoader(new MockGameSystem()));
+				WarFoundryLoader.GetDefault().LoadFiles();
+				ICollection<IWarFoundryObject> objs = WarFoundryXmlFactory.GetFactory().CreateObjectsFromFile(new FileInfo("testdata/race-with-non-existant-ability.race"));
+				Assert.AreEqual(1, objs.Count);
+				IEnumerator<IWarFoundryObject> enumerator = objs.GetEnumerator();
+				enumerator.Reset();
+				enumerator.MoveNext();
+				Race race = (Race)enumerator.Current;
+				Category[] cats = race.Categories;
+			}
+			finally
+			{
+				WarFoundryLoader.SetDefault(null);
+			}
 		}
 		
 		[Test()]
-		[ExpectedException(typeof(InvalidFileException))]
+		[ExpectedException(typeof(InvalidFileException), ExpectedMessage="Referenced game system, 'nonexistant-system', did not exist")]
 		public void TestCompleteLoadingOnRaceWithMissingGameSystemErrors ()
 		{
 			ICollection<IWarFoundryObject> objs = WarFoundryXmlFactory.GetFactory().CreateObjectsFromFile(new FileInfo("testdata/race-with-non-existant-game-system.race"));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/API/FixedGameSystemWarFoundryLoader.cs	Thu Dec 24 19:46:30 2009 +0000
@@ -0,0 +1,24 @@
+// This file (FixedGameSystemWarFoundryLoader.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2009 IBBoard
+// 
+// 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.
+
+using System;
+using IBBoard.WarFoundry.API.Objects;
+
+namespace IBBoard.WarFoundry.API
+{
+	public class FixedGameSystemWarFoundryLoader : DefaultWarFoundryLoader
+	{
+		private GameSystem system;
+
+		public FixedGameSystemWarFoundryLoader (GameSystem fixedSystem)
+		{
+			system = fixedSystem;
+		}
+		
+		public override GameSystem GetGameSystem(string systemID)
+		{
+			return system;
+		}
+	}
+}
--- a/API/WarFoundryLoaderTest.cs	Thu Dec 24 14:55:35 2009 +0000
+++ b/API/WarFoundryLoaderTest.cs	Thu Dec 24 19:46:30 2009 +0000
@@ -24,7 +24,7 @@
 		[Test()]
 		public void TestLoadingSystemCompletesWithoutError()
 		{
-			WarFoundryLoader loader = WarFoundryLoader.GetDefault();
+			AbstractWarFoundryLoader loader = WarFoundryLoader.GetDefault();
 			DirectoryInfo dir = new DirectoryInfo("testdata");
 			loader.RegisterFactory(GetSystemFactory());
 			loader.AddLoadDirectory(dir);
--- a/IBBoard.WarFoundry.API.Tests.csproj	Thu Dec 24 14:55:35 2009 +0000
+++ b/IBBoard.WarFoundry.API.Tests.csproj	Thu Dec 24 19:46:30 2009 +0000
@@ -57,6 +57,7 @@
     <Compile Include="API\Objects\Mock\MockPercentageAmountUnitEquipmentItem.cs" />
     <Compile Include="API\Util\UnitEquipmentUtilTest.cs" />
     <Compile Include="API\Factories\Xml\WarFoundryXmlRaceFactoryTest.cs" />
+    <Compile Include="API\FixedGameSystemWarFoundryLoader.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="testdata\Test.race">