view API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs @ 36:82cd08385bfe

Fixes #228: Crash on invalid ability ID * Replace zipped Race and System files with unpackaged XML * Add helper class to create WarFoundry objects from XML files for tests * Use new helper classes to make test pass
author IBBoard <dev@ibboard.co.uk>
date Thu, 24 Dec 2009 20:14:28 +0000
parents 4302e6b2c5c1
children 00abd1c2f7d6
line wrap: on
line source

// This file (WarFoundryXmlRaceFactoryTest.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 System.Collections.Generic;
using System.IO;
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
{


	[TestFixture()]
	public class WarFoundryXmlRaceFactoryTest
	{
		[Test()]
		[ExpectedException(typeof(InvalidFileException), ExpectedMessage="Ability for Empire General with ID leaderOfMen did not exist in race definition")]
		public void TestCompleteLoadingOnRaceWithMissingAbilityIdErrors ()
		{
			try
			{
				GameSystem system = SingleXmlObjectLoader.LoadGameSystemFromXML(WarFoundryXmlFactory.GetFactory(), new FileInfo("testdata/race-with-non-existant-ability.systemx"));
				FixedGameSystemWarFoundryLoader fixedLoader = new FixedGameSystemWarFoundryLoader(system);
				WarFoundryLoader.SetDefault(fixedLoader);
				FileInfo raceFile = new FileInfo ("testdata/race-with-non-existant-ability.racex");
				Race race = SingleXmlObjectLoader.LoadRaceFromXML(WarFoundryXmlFactory.GetFactory(), raceFile);
				Category[] cats = race.Categories;
			}
			finally
			{
				WarFoundryLoader.SetDefault(null);
			}
		}
		
		[Test()]
		[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"));
			Assert.AreEqual(1, objs.Count);
			IEnumerator<IWarFoundryObject> enumerator = objs.GetEnumerator();
			enumerator.Reset();
			enumerator.MoveNext();
			Race race = (Race)enumerator.Current;
			Category[] cats = race.Categories;
		}
	}
}