diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index c085349782..e1db019186 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -6,7 +6,7 @@
true
true
nullable
- $(NoWarn);1591;NU1507
+ $(NoWarn);1591;NU1507;IDE0041;IDE0008
@@ -16,9 +16,9 @@
- 16.0.0
- 16.0.0.0
- 16.0.0.0
+ 16.1.0
+ 16.1.0.0
+ 16.1.0.0
true
-
-
-
-
+
+
+
+
@@ -19,29 +19,29 @@
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
@@ -51,8 +51,8 @@
-
-
+
+
@@ -63,4 +63,4 @@
-
+
\ No newline at end of file
diff --git a/src/Spice86/libportaudio.dll b/src/Spice86/libportaudio.dll
deleted file mode 100644
index ed4ba5aa9f..0000000000
Binary files a/src/Spice86/libportaudio.dll and /dev/null differ
diff --git a/tests/Directory.Packages.props b/tests/Directory.Packages.props
index 286c327a29..ca9577046c 100644
--- a/tests/Directory.Packages.props
+++ b/tests/Directory.Packages.props
@@ -10,8 +10,8 @@
-
-
+
+
@@ -21,8 +21,8 @@
-
-
+
+
diff --git a/tests/Spice86.Tests/Dos/CdRomParityTests.cs b/tests/Spice86.Tests/Dos/CdRomParityTests.cs
index 6b91dc6f15..2858a52950 100644
--- a/tests/Spice86.Tests/Dos/CdRomParityTests.cs
+++ b/tests/Spice86.Tests/Dos/CdRomParityTests.cs
@@ -55,7 +55,15 @@ public void CdRomDrive_Eject_DoesNotOpenDoorOrFlagMediaChangedForMountedImages()
ISoundChannelCreator channelCreator = Substitute.For();
channelCreator
.AddChannel(Arg.Any>(), Arg.Any(), Arg.Any(), Arg.Any>())
- .Returns(callInfo => new SoundChannel((Action)callInfo[0], (string)callInfo[2], (HashSet)callInfo[3]));
+ .Returns(callInfo => {
+ if (callInfo[0] is not Action handler ||
+ callInfo[2] is not string name ||
+ callInfo[3] is not HashSet features) {
+ throw new InvalidOperationException("CD audio channel registration arguments were invalid.");
+ }
+
+ return new SoundChannel(handler, name, features);
+ });
IDriveActivityNotifier activityNotifier = Substitute.For();
CdRomDrive drive = new(image, channelCreator, activityNotifier, driveLetter: 'D');
bool initialMediaChanged = drive.MediaState.ReadAndClearMediaChanged();
diff --git a/tests/Spice86.Tests/Dos/CdRomTestFixture.cs b/tests/Spice86.Tests/Dos/CdRomTestFixture.cs
index 59519281f1..88d5cadfe7 100644
--- a/tests/Spice86.Tests/Dos/CdRomTestFixture.cs
+++ b/tests/Spice86.Tests/Dos/CdRomTestFixture.cs
@@ -69,8 +69,13 @@ public static CdRomDrive CreateDrive(ICdRomImage image, out Action audioCal
channelCreator
.AddChannel(Arg.Any>(), Arg.Any(), Arg.Any(), Arg.Any>())
.Returns(callInfo => {
- Action handler = (Action)callInfo[0];
- SoundChannel createdChannel = new SoundChannel(handler, (string)callInfo[2], (HashSet)callInfo[3]);
+ if (callInfo[0] is not Action handler ||
+ callInfo[2] is not string name ||
+ callInfo[3] is not HashSet features) {
+ throw new InvalidOperationException("CD audio channel registration arguments were invalid.");
+ }
+
+ SoundChannel createdChannel = new SoundChannel(handler, name, features);
capturedAudioCallback = handler;
capturedChannel = createdChannel;
return createdChannel;
diff --git a/tests/Spice86.Tests/Dos/DosProcessManagerTests.cs b/tests/Spice86.Tests/Dos/DosProcessManagerTests.cs
index 98b7059495..ffceceeb28 100644
--- a/tests/Spice86.Tests/Dos/DosProcessManagerTests.cs
+++ b/tests/Spice86.Tests/Dos/DosProcessManagerTests.cs
@@ -396,7 +396,15 @@ private static DosProcessManagerTestContext CreateContext(ushort? programEntryPo
ISoundChannelCreator channelCreator = Substitute.For();
channelCreator.AddChannel(Arg.Any>(), Arg.Any(), Arg.Any(), Arg.Any>())
- .Returns(callInfo => new SoundChannel((Action)callInfo[0], (string)callInfo[2], (HashSet)callInfo[3]));
+ .Returns(callInfo => {
+ if (callInfo[0] is not Action handler ||
+ callInfo[2] is not string name ||
+ callInfo[3] is not HashSet features) {
+ throw new InvalidOperationException("CD audio channel registration arguments were invalid.");
+ }
+
+ return new SoundChannel(handler, name, features);
+ });
IDriveActivityNotifier activityNotifier = Substitute.For();
DosProcessManager processManager = new(