Mercurial > repos > IBBoard.WarFoundry.API.Tests
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(); } } } } }