view API/Factories/Xml/SingleXmlObjectLoader.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
children 97ea355f9564
line wrap: on
line source

// This file (SingleXmlObjectLoader.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.IO;
using System.Xml;
using IBBoard.WarFoundry.API.Objects;

namespace IBBoard.WarFoundry.API.Factories.Xml
{

	/// <summary>
	/// A helper class that loads a known XML file to the known type to centralise common testing code in one method
	/// </summary>
	public class SingleXmlObjectLoader
	{
		public static Race LoadRaceFromXML(WarFoundryXmlFactory factory, FileInfo file)
		{
			Stream stream = file.OpenRead();
			
			try
			{
				return factory.GetRaceFactory().CreateRaceFromElement(null, CreateDocumentElementFromStream (stream));
			}
			finally 
			{
				if (stream !=null)
				{
					stream.Close();
				}
			}
		}
		
		private static XmlElement CreateDocumentElementFromStream (Stream stream)
		{
			return WarFoundryXmlFactoryUtils.CreateXmlDocumentFromStream (stream).DocumentElement;
		}
		
		public static GameSystem LoadGameSystemFromXML(WarFoundryXmlFactory factory, FileInfo file)
		{
			Stream stream = file.OpenRead();
			
			try
			{
				return factory.GetSystemFactory().CreateSystemFromElement(null, CreateDocumentElementFromStream(stream));
			}
			finally 
			{
				if (stream !=null)
				{
					stream.Close();
				}
			}
		}
	}
}