diff --git a/BinaryObjectScanner.Test/Data/FactoryTests.cs b/BinaryObjectScanner.Test/Data/FactoryTests.cs deleted file mode 100644 index 7257660c..00000000 --- a/BinaryObjectScanner.Test/Data/FactoryTests.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using BinaryObjectScanner.Data; -using BinaryObjectScanner.Interfaces; -using SabreTools.Serialization.Wrappers; -using Xunit; - -namespace BinaryObjectScanner.Test.Data -{ - public class FactoryTests - { - #region CreateDetectable - - private static readonly List _detectableTypes = - [ - // WrapperType.AACSMediaKeyBlock, // TODO: Create wrapper to reenable test - // WrapperType.BDPlusSVM, // TODO: Create wrapper to reenable test - // WrapperType.CIA, - // WrapperType.Executable, // TODO: This needs to be split internally - WrapperType.LDSCRYPT, - // WrapperType.N3DS, - // WrapperType.Nitro, - // WrapperType.PlayJAudioFile, // TODO: Create wrapper to reenable test - WrapperType.RealArcadeInstaller, - WrapperType.RealArcadeMezzanine, - WrapperType.SFFS, - WrapperType.Textfile, - ]; - - [Theory] - [MemberData(nameof(GenerateIDetectableTestData))] - public void CreateDetectableTests(WrapperType type, bool expectNull) - { - IDetectable? actual = Factory.CreateDetectable(type); - - if (expectNull) - Assert.Null(actual); - else - Assert.NotNull(actual); - } - - public static List GenerateIDetectableTestData() - { - var testData = new List() { new object?[] { null, true } }; - foreach (WrapperType type in Enum.GetValues(typeof(WrapperType))) - { - if (_detectableTypes.Contains(type)) - testData.Add([type, false]); - else - testData.Add([type, true]); - } - - return testData; - } - - #endregion - } -} \ No newline at end of file diff --git a/BinaryObjectScanner/Data/Factory.cs b/BinaryObjectScanner/Data/Factory.cs deleted file mode 100644 index 8b0b4e71..00000000 --- a/BinaryObjectScanner/Data/Factory.cs +++ /dev/null @@ -1,47 +0,0 @@ -using SabreTools.Serialization.Interfaces; -using SabreTools.Serialization.Wrappers; - -namespace BinaryObjectScanner.Data -{ - internal static class Factory - { - /// - /// Create an instance of a detectable based on file type - /// - public static Interfaces.IDetectable? CreateDetectable(WrapperType fileType) - => CreateDetectable(fileType, null); - - /// - /// Create an instance of a detectable based on file type - /// - public static Interfaces.IDetectable? CreateDetectable(WrapperType fileType, IWrapper? wrapper) - { - // Use the wrapper before the type - switch (wrapper) - { - case AACSMediaKeyBlock obj: return new FileType.AACSMediaKeyBlock(obj); - case BDPlusSVM obj: return new FileType.BDPlusSVM(obj); - // case CIA obj => new FileType.CIA(obj), - case LinearExecutable obj: return new FileType.LinearExecutable(obj); - case MSDOS obj: return new FileType.MSDOS(obj); - // case N3DS obj: return new FileType.N3DS(obj); - case NewExecutable obj: return new FileType.NewExecutable(obj); - case PlayJAudioFile obj: return new FileType.PLJ(obj); - case PortableExecutable obj: return new FileType.PortableExecutable(obj); - } - - // Fall back on the file type for types not implemented in Serialization - return fileType switch - { - // WrapperType.CIA => new FileType.CIA(), - WrapperType.LDSCRYPT => new FileType.LDSCRYPT(), - // WrapperType.N3DS => new FileType.N3DS(), - WrapperType.RealArcadeInstaller => new FileType.RealArcadeInstaller(), - WrapperType.RealArcadeMezzanine => new FileType.RealArcadeMezzanine(), - WrapperType.SFFS => new FileType.SFFS(), - WrapperType.Textfile => new FileType.Textfile(), - _ => null, - }; - } - } -} diff --git a/BinaryObjectScanner/Scanner.cs b/BinaryObjectScanner/Scanner.cs index 391848f3..083cc889 100644 --- a/BinaryObjectScanner/Scanner.cs +++ b/BinaryObjectScanner/Scanner.cs @@ -303,7 +303,7 @@ namespace BinaryObjectScanner #region Non-Archive File Types // Create a detectable for the given file type - var detectable = Factory.CreateDetectable(fileType, wrapper); + var detectable = CreateDetectable(fileType, wrapper); // If we're scanning file contents if (detectable != null && _scanContents) @@ -433,5 +433,42 @@ namespace BinaryObjectScanner } #endregion + + #region Helpers + + /// + /// Create an instance of a detectable based on file type + /// + private static IDetectable? CreateDetectable(WrapperType fileType, IWrapper? wrapper) + { + // Use the wrapper before the type + switch (wrapper) + { + case AACSMediaKeyBlock obj: return new FileType.AACSMediaKeyBlock(obj); + case BDPlusSVM obj: return new FileType.BDPlusSVM(obj); + // case CIA obj => new FileType.CIA(obj), + case LinearExecutable obj: return new FileType.LinearExecutable(obj); + case MSDOS obj: return new FileType.MSDOS(obj); + // case N3DS obj: return new FileType.N3DS(obj); + case NewExecutable obj: return new FileType.NewExecutable(obj); + case PlayJAudioFile obj: return new FileType.PLJ(obj); + case PortableExecutable obj: return new FileType.PortableExecutable(obj); + } + + // Fall back on the file type for types not implemented in Serialization + return fileType switch + { + // WrapperType.CIA => new FileType.CIA(), + WrapperType.LDSCRYPT => new FileType.LDSCRYPT(), + // WrapperType.N3DS => new FileType.N3DS(), + WrapperType.RealArcadeInstaller => new FileType.RealArcadeInstaller(), + WrapperType.RealArcadeMezzanine => new FileType.RealArcadeMezzanine(), + WrapperType.SFFS => new FileType.SFFS(), + WrapperType.Textfile => new FileType.Textfile(), + _ => null, + }; + } + + #endregion } }