Mercurial > repos > IBBoard.WarFoundry.API.Tests
view API/Factories/Xml/SingleXmlObjectLoader.cs @ 75:72479ca6feb4
Fixes #311: can't read ZIP file packed by Linux app Archive Manager/File Roller
* Add a unit test for the failure
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 30 Oct 2010 14:45:45 +0000 |
parents | b2517bb113d0 |
children | 3725fd449c77 |
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(); } } } public static XmlElement CreateDocumentElementFromFile(string filePath) { return CreateDocumentElementFromFile(new FileInfo(filePath)); } public static XmlElement CreateDocumentElementFromFile(FileInfo file) { return CreateDocumentElementFromStream(file.OpenRead()); } 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(); } } } } }