view API/Factories/Xml/SingleXmlObjectLoader.cs @ 42:d4f6e9ac981e

Re #152: Test and fix extensibility of current schemas * Test system and army files * Test multiple unknown children in racex file
author IBBoard <dev@ibboard.co.uk>
date Sat, 13 Mar 2010 20:50:31 +0000
parents 82cd08385bfe
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();
				}
			}
		}
	}
}