# HG changeset patch # User IBBoard # Date 1298838792 0 # Node ID 5d19fee8e9dc66c7753968693fbf3507c27831ce # Parent 90dee8d781ee95f62896cb58732acc4e2522f355 Re #253: Allow multiple data files in a single zip * Differentiate in simple cache by concating strings * Add extra tests for .race file and non-default names diff -r 90dee8d781ee -r 5d19fee8e9dc API/EventListeningWarFoundryLoader.cs --- a/API/EventListeningWarFoundryLoader.cs Sun Feb 27 19:44:08 2011 +0000 +++ b/API/EventListeningWarFoundryLoader.cs Sun Feb 27 20:33:12 2011 +0000 @@ -39,7 +39,7 @@ protected override void DoStoreRace (Race race) { - races.Add(race.ID, race); + races.Add(race.GameSystem.ID + race.ID, race); } diff -r 90dee8d781ee -r 5d19fee8e9dc API/Factories/Xml/WarFoundryXmlFactoryTests.cs --- a/API/Factories/Xml/WarFoundryXmlFactoryTests.cs Sun Feb 27 19:44:08 2011 +0000 +++ b/API/Factories/Xml/WarFoundryXmlFactoryTests.cs Sun Feb 27 20:33:12 2011 +0000 @@ -13,9 +13,9 @@ [Test()] public void TestFactoryHandlesMultipleFilesWithOldNamesInOneSystemZip() { - EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader (); + EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader(); WarFoundryLoader.SetDefault(loader); - WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory (); + WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory(); loader.RegisterFactory(factory); ICollection objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Test.system")); Assert.That(objs, Has.Count(2)); @@ -37,5 +37,61 @@ Assert.That(raceCount, Is.EqualTo(1)); Assert.That(systemCount, Is.EqualTo(1)); } + + [Test()] + public void TestFactoryHandlesMultipleFilesWithOldNamesInOneRaceZip() + { + EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader(); + WarFoundryLoader.SetDefault(loader); + WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory(); + loader.RegisterFactory(factory); + ICollection objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Test.race")); + 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)); + } + + [Test()] + public void TestFactoryHandlesMultipleFilesWithMultipleNewNamesInOneSystemZip() + { + EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader(); + WarFoundryLoader.SetDefault(loader); + WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory(); + loader.RegisterFactory(factory); + ICollection objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Multipack.system")); + Assert.That(objs, Has.Count(4)); + 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(2)); + Assert.That(systemCount, Is.EqualTo(2)); + } } }