From c73d558ca4f0035dc0c299417ac3440aa2b27c30 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 1 Dec 2024 23:50:19 -0500 Subject: [PATCH] Add Factory tests --- .../BinaryObjectScanner.Test.csproj | 1 + BinaryObjectScanner.Test/FactoryTests.cs | 122 ++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 BinaryObjectScanner.Test/FactoryTests.cs diff --git a/BinaryObjectScanner.Test/BinaryObjectScanner.Test.csproj b/BinaryObjectScanner.Test/BinaryObjectScanner.Test.csproj index 83c6c2ac..d479248d 100644 --- a/BinaryObjectScanner.Test/BinaryObjectScanner.Test.csproj +++ b/BinaryObjectScanner.Test/BinaryObjectScanner.Test.csproj @@ -17,6 +17,7 @@ all + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/BinaryObjectScanner.Test/FactoryTests.cs b/BinaryObjectScanner.Test/FactoryTests.cs new file mode 100644 index 00000000..ae20bd2c --- /dev/null +++ b/BinaryObjectScanner.Test/FactoryTests.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using BinaryObjectScanner.Interfaces; +using SabreTools.Serialization.Wrappers; +using Xunit; + +namespace BinaryObjectScanner.Test +{ + public class FactoryTests + { + #region CreateDetectable + + private static readonly List _detectableTypes = + [ + WrapperType.AACSMediaKeyBlock, + WrapperType.BDPlusSVM, + //WrapperType.CIA, + WrapperType.Executable, + WrapperType.LDSCRYPT, + //WrapperType.N3DS, + //WrapperType.Nitro, + WrapperType.PlayJAudioFile, + 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 + + #region CreateExtractable + + private static readonly List _extractableTypes = + [ + WrapperType.BFPK, + WrapperType.BSP, + WrapperType.BZip2, + WrapperType.CFB, + //WrapperType.CIA, + //WrapperType.Executable, + WrapperType.GCF, + WrapperType.GZIP, + WrapperType.InstallShieldArchiveV3, + WrapperType.InstallShieldCAB, + WrapperType.MicrosoftCAB, + WrapperType.MicrosoftLZ, + WrapperType.MoPaQ, + //WrapperType.N3DS, + //WrapperType.NCF, + //WrapperType.Nitro, + WrapperType.PAK, + WrapperType.PFF, + WrapperType.PKZIP, + //WrapperType.PlayJAudioFile, + //WrapperType.Quantum, + WrapperType.RAR, + WrapperType.SevenZip, + WrapperType.SFFS, + WrapperType.SGA, + WrapperType.TapeArchive, + WrapperType.VBSP, + WrapperType.VPK, + WrapperType.WAD, + WrapperType.XZ, + WrapperType.XZP, + ]; + + [Theory] + [MemberData(nameof(GenerateIExtractableTestData))] + public void CreateExtractableTests(WrapperType type, bool expectNull) + { + IExtractable? actual = Factory.CreateExtractable(type); + + if (expectNull) + Assert.Null(actual); + else + Assert.NotNull(actual); + } + + public static List GenerateIExtractableTestData() + { + var testData = new List(); + foreach (WrapperType type in Enum.GetValues(typeof(WrapperType))) + { + if (_extractableTypes.Contains(type)) + testData.Add([type, false]); + else + testData.Add([type, true]); + } + + return testData; + } + + #endregion + } +} \ No newline at end of file