view API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs @ 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 03a8ab5e90d6
children 82cd08385bfe
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
			{
				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), 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;
		}
	}
}