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