view API/Factories/Xml/WarFoundryXmlFactoryTests.cs @ 89:90dee8d781ee

Re #253: Allow multiple data files in a single zip * Add and use loader that just listens to events to capture new objects and does nothing else
author IBBoard <dev@ibboard.co.uk>
date Sun, 27 Feb 2011 19:44:08 +0000
parents 5c04db41d643
children 5d19fee8e9dc
line wrap: on
line source

using System;
using NUnit.Framework;
using System.IO;
using System.Collections.Generic;
using IBBoard.WarFoundry.API.Objects;
using NUnit.Framework.SyntaxHelpers;

namespace IBBoard.WarFoundry.API.Factories.Xml
{
	[TestFixture()]
	public class WarFoundryXmlFactoryTests
	{
		[Test()]
		public void TestFactoryHandlesMultipleFilesWithOldNamesInOneSystemZip()
		{
			EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader ();
			WarFoundryLoader.SetDefault(loader);
			WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory ();
			loader.RegisterFactory(factory);
			ICollection<IWarFoundryObject> objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Test.system"));
			Assert.That(objs, Has.Count(2));
			int raceCount = 0;
			int systemCount = 0;
			
			foreach (IWarFoundryObject obj in objs)
			{
				if (obj is Race)
				{
					raceCount++;
				}
				else if (obj is GameSystem)
				{
					systemCount++;
				}
			}
			
			Assert.That(raceCount, Is.EqualTo(1));
			Assert.That(systemCount, Is.EqualTo(1));
		}
	}
}