# HG changeset patch # User IBBoard # Date 1341691373 -3600 # Node ID 7c21ca1482cb13b071c850d7cb857b37f7cba4b5 # Parent d8cd6b259a9f32c5c61991ccf79bcf9edfac6201 Re #419: Remove assumptions of a file-based install * Update tests to use new "loadable object" and "loadable object source" wrappers diff -r d8cd6b259a9f -r 7c21ca1482cb API/AbstractWarFoundryLoaderTests.cs --- a/API/AbstractWarFoundryLoaderTests.cs Mon Apr 16 20:45:45 2012 +0100 +++ b/API/AbstractWarFoundryLoaderTests.cs Sat Jul 07 21:02:53 2012 +0100 @@ -4,6 +4,7 @@ using System.Collections.Generic; using NUnit.Framework.SyntaxHelpers; using System.IO; +using IBBoard.WarFoundry.API.Loading; namespace IBBoard.WarFoundry.API { @@ -14,8 +15,8 @@ public void TestTriesToLoadFromSubdir() { MockWarFoundryLoader loader = new MockWarFoundryLoader(); - loader.AddLoadDirectory(new DirectoryInfo("testdata/subdir-loading-test")); - List failures = loader.LoadFiles (); + loader.AddLoadSource(new LoadableObjectSourceDirectory("testdata/subdir-loading-test")); + List failures = loader.LoadFiles(); Assert.That(failures.Count, Is.EqualTo(2)); } } diff -r d8cd6b259a9f -r 7c21ca1482cb API/Factories/AbstractNativeWarFoundryFactoryTest.cs --- a/API/Factories/AbstractNativeWarFoundryFactoryTest.cs Mon Apr 16 20:45:45 2012 +0100 +++ b/API/Factories/AbstractNativeWarFoundryFactoryTest.cs Sat Jul 07 21:02:53 2012 +0100 @@ -9,6 +9,7 @@ using System.IO; using IBBoard.WarFoundry.API.Objects; using System.Collections.Generic; +using IBBoard.WarFoundry.API.Loading; namespace IBBoard.WarFoundry.API.Factories { @@ -20,12 +21,12 @@ { MockNativeWarFoundryFactory factory = new MockNativeWarFoundryFactory(); Stopwatch sw = Stopwatch.StartNew(); - factory.CreateObjectsFromFile(new FileInfo("testdata/Test.race")); + factory.CreateObjectsFromFile(new LoadableFileObject("testdata/Test.race")); sw.Stop(); long successElapsed = sw.ElapsedMilliseconds; sw.Reset(); sw.Start(); - factory.CreateObjectsFromFile(new FileInfo("testdata/NotARaceFile.txt")); + factory.CreateObjectsFromFile(new LoadableFileObject("testdata/NotARaceFile.txt")); sw.Stop(); long failedElapsed = sw.ElapsedMilliseconds; long timeRatio = failedElapsed / successElapsed; @@ -39,7 +40,7 @@ //This will also be triggered by Bug94TestLoadingTimesForNonZipFiles, but this makes it separate and explicit FileInfo nonRaceFile = new FileInfo("testdata/NotARaceFile.txt"); Assert.That(nonRaceFile.Exists, Is.True); - Assert.That(factory.CanHandleFileFormat(nonRaceFile), Is.False); + Assert.That(factory.CanHandleFileFormat(new LoadableFileObject(nonRaceFile)), Is.False); } [Test] @@ -50,7 +51,7 @@ Assert.That(factory.GetGameSystemZipEntries(file), Has.Count(3)); Assert.That(factory.GetRaceZipEntries(file), Has.Count(3)); Assert.That(factory.GetArmyZipEntries(file), Has.Count(3)); - ICollection objs = factory.CreateObjectsFromFile(file); + ICollection objs = factory.CreateObjectsFromFile(new LoadableFileObject(file)); Assert.That(objs, Has.Count(0)); } } diff -r d8cd6b259a9f -r 7c21ca1482cb API/Factories/Xml/WarFoundryXmlFactoryTests.cs --- a/API/Factories/Xml/WarFoundryXmlFactoryTests.cs Mon Apr 16 20:45:45 2012 +0100 +++ b/API/Factories/Xml/WarFoundryXmlFactoryTests.cs Sat Jul 07 21:02:53 2012 +0100 @@ -4,6 +4,7 @@ using System.Collections.Generic; using IBBoard.WarFoundry.API.Objects; using NUnit.Framework.SyntaxHelpers; +using IBBoard.WarFoundry.API.Loading; namespace IBBoard.WarFoundry.API.Factories.Xml { @@ -19,7 +20,7 @@ try { loader.RegisterFactory(factory); - ICollection objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Test.system")); + ICollection objs = factory.CreateObjectsFromFile(new LoadableFileObject("testdata/multifile-zips/Test.system")); Assert.That(objs, Has.Count(2)); int raceCount = 0; int systemCount = 0; @@ -30,7 +31,8 @@ { raceCount++; } - else if (obj is GameSystem) + else + if (obj is GameSystem) { systemCount++; } @@ -54,7 +56,7 @@ loader.RegisterFactory(factory); try { - ICollection objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Test.race")); + ICollection objs = factory.CreateObjectsFromFile(new LoadableFileObject("testdata/multifile-zips/Test.race")); Assert.That(objs, Has.Count(2)); int raceCount = 0; int systemCount = 0; @@ -65,7 +67,8 @@ { raceCount++; } - else if (obj is GameSystem) + else + if (obj is GameSystem) { systemCount++; } @@ -89,7 +92,7 @@ loader.RegisterFactory(factory); try { - ICollection objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Multipack.system")); + ICollection objs = factory.CreateObjectsFromFile(new LoadableFileObject("testdata/multifile-zips/Multipack.system")); Assert.That(objs, Has.Count(4)); int raceCount = 0; int systemCount = 0; @@ -100,7 +103,8 @@ { raceCount++; } - else if (obj is GameSystem) + else + if (obj is GameSystem) { systemCount++; } diff -r d8cd6b259a9f -r 7c21ca1482cb API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs --- a/API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs Mon Apr 16 20:45:45 2012 +0100 +++ b/API/Factories/Xml/WarFoundryXmlRaceFactoryTest.cs Sat Jul 07 21:02:53 2012 +0100 @@ -12,6 +12,7 @@ using NUnit.Framework.SyntaxHelpers; using IBBoard.WarFoundry.API.Objects.Requirement; using IBBoard.WarFoundry.API.Factories.Requirement; +using IBBoard.WarFoundry.API.Loading; namespace IBBoard.WarFoundry.API.Factories.Xml { @@ -167,7 +168,7 @@ [ExpectedException(typeof(InvalidFileException), ExpectedMessage="Referenced game system, 'nonexistant-system', did not exist")] public void TestCompleteLoadingOnRaceWithMissingGameSystemErrors() { - ICollection objs = WarFoundryXmlFactory.GetFactory().CreateObjectsFromFile(new FileInfo("testdata/race-with-non-existant-game-system.race")); + ICollection objs = WarFoundryXmlFactory.GetFactory().CreateObjectsFromFile(new LoadableFileObject(new FileInfo("testdata/race-with-non-existant-game-system.race"))); Assert.AreEqual(1, objs.Count); IEnumerator enumerator = objs.GetEnumerator(); enumerator.Reset(); diff -r d8cd6b259a9f -r 7c21ca1482cb API/Factories/Xml/WarFoundryXmlSystemFactoryTest.cs --- a/API/Factories/Xml/WarFoundryXmlSystemFactoryTest.cs Mon Apr 16 20:45:45 2012 +0100 +++ b/API/Factories/Xml/WarFoundryXmlSystemFactoryTest.cs Sat Jul 07 21:02:53 2012 +0100 @@ -9,6 +9,7 @@ using NUnit.Framework.SyntaxHelpers; using IBBoard.IO; using System.Xml.Schema; +using IBBoard.WarFoundry.API.Loading; namespace IBBoard.WarFoundry.API.Factories.Xml { @@ -18,7 +19,7 @@ [Test()] public void TestBug311InvalidVersionToExtract788() { - FileInfo repackFile = new FileInfo("testdata/zip-format/Repack.system"); + ILoadableObject repackFile = new LoadableFileObject("testdata/zip-format/Repack.system"); Assert.That(WarFoundryXmlFactory.GetFactory().CanHandleFileAsGameSystem(repackFile), Is.True); Assert.That(WarFoundryXmlFactory.GetFactory().CreateObjectsFromFile(repackFile), Has.Count(1)); } diff -r d8cd6b259a9f -r 7c21ca1482cb API/Loading/LoadableObjectSourceDirectoryTests.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/API/Loading/LoadableObjectSourceDirectoryTests.cs Sat Jul 07 21:02:53 2012 +0100 @@ -0,0 +1,28 @@ +// This file (LoadableObjectSourceDirectoryTests.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2012 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 IBBoard.NUnit; +using System.Reflection; + +namespace IBBoard.WarFoundry.API.Loading +{ + public class LoadableObjectSourceDirectoryTests : AbstractEqualityTest + { + public override LoadableObjectSourceDirectory GetObject() + { + return new LoadableObjectSourceDirectory("test"); + } + + public override LoadableObjectSourceDirectory GetSameObject() + { + return new LoadableObjectSourceDirectory("test"); + } + + public override LoadableObjectSourceDirectory GetDifferentObject() + { + return new LoadableObjectSourceDirectory("otherdir"); + } + } +} + diff -r d8cd6b259a9f -r 7c21ca1482cb API/Loading/LoadableObjectSourceResourceSetTests.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/API/Loading/LoadableObjectSourceResourceSetTests.cs Sat Jul 07 21:02:53 2012 +0100 @@ -0,0 +1,43 @@ +// This file (LoadableObjectSourceResourceSetTests.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2012 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 IBBoard.NUnit; +using System.Reflection; + +namespace IBBoard.WarFoundry.API.Loading +{ + public class LoadableObjectSourceResourceSetTests : AbstractEqualityTest + { + public override LoadableObjectSourceResourceSet GetObject() + { + return new LoadableObjectSourceResourceSet(Assembly.GetExecutingAssembly(), "test"); + } + + public override LoadableObjectSourceResourceSet GetSameObject() + { + return new LoadableObjectSourceResourceSet(Assembly.GetExecutingAssembly(), "test"); + } + + public override LoadableObjectSourceResourceSet GetDifferentObject() + { + return new LoadableObjectSourceResourceSet(typeof(Does).Assembly, "othertest"); + } + + public LoadableObjectSourceResourceSet GetOtherDifferentAssemblyObject() + { + return new LoadableObjectSourceResourceSet(typeof(Does).Assembly, "test"); + } + + public LoadableObjectSourceResourceSet GetOtherDifferentIDListObject() + { + return new LoadableObjectSourceResourceSet(Assembly.GetExecutingAssembly(), "test", "othertest"); + } + + public LoadableObjectSourceResourceSet GetOtherDifferentAssemblyAndIDsObject() + { + return new LoadableObjectSourceResourceSet(typeof(Does).Assembly, "othertest"); + } + } +} + diff -r d8cd6b259a9f -r 7c21ca1482cb API/WarFoundryLoaderTest.cs --- a/API/WarFoundryLoaderTest.cs Mon Apr 16 20:45:45 2012 +0100 +++ b/API/WarFoundryLoaderTest.cs Sat Jul 07 21:02:53 2012 +0100 @@ -12,6 +12,7 @@ using IBBoard.WarFoundry.API.Factories.Xml; using IBBoard.WarFoundry.API.Factories.Requirement; using IBBoard.WarFoundry.API.Objects.Requirement; +using IBBoard.WarFoundry.API.Loading; namespace IBBoard.WarFoundry.API.Factories { @@ -32,10 +33,11 @@ AbstractWarFoundryLoader loader = WarFoundryLoader.GetDefault(); DirectoryInfo dir = new DirectoryInfo("testdata"); loader.RegisterFactory(GetSystemFactory()); - loader.AddLoadDirectory(dir); + ILoadableObjectSource loadSource = new LoadableObjectSourceDirectory(dir); + loader.AddLoadSource(loadSource); loader.LoadFiles(); Assert.Greater(loader.GetGameSystems().Length, 0); - loader.RemoveLoadDirectory(dir); + loader.RemoveLoadSource(loadSource); loader.UnregisterFactory(GetSystemFactory()); } diff -r d8cd6b259a9f -r 7c21ca1482cb IBBoard.WarFoundry.API.Tests.csproj --- a/IBBoard.WarFoundry.API.Tests.csproj Mon Apr 16 20:45:45 2012 +0100 +++ b/IBBoard.WarFoundry.API.Tests.csproj Sat Jul 07 21:02:53 2012 +0100 @@ -33,9 +33,9 @@ v2.0 - true + True full - false + False bin\Debug\ DEBUG;TRACE prompt @@ -43,7 +43,7 @@ pdbonly - true + True bin\Release\ TRACE prompt @@ -124,6 +124,8 @@ + + @@ -297,7 +299,7 @@ PreserveNewest - false + False PreserveNewest @@ -404,6 +406,7 @@ +