Przeglądaj źródła

misc: chore: Use explicit types in Tests projects

Evan Husted 1 rok temu
rodzic
commit
250acab7a7

+ 2 - 1
src/Ryujinx.Common/Configuration/DirtyHack.cs

@@ -24,7 +24,8 @@ namespace Ryujinx.Common.Configuration
         public static EnabledDirtyHack Unpack(ulong packedHack)
         public static EnabledDirtyHack Unpack(ulong packedHack)
         {
         {
             uint[] unpackedFields = packedHack.UnpackBitFields(PackedFormat);
             uint[] unpackedFields = packedHack.UnpackBitFields(PackedFormat);
-            if (unpackedFields is not [var hack, var value])
+            // ReSharper disable once PatternAlwaysMatches
+            if (unpackedFields is not [uint hack, uint value])
                 throw new Exception("The unpack operation on the integer resulted in an invalid unpacked result.");
                 throw new Exception("The unpack operation on the integer resulted in an invalid unpacked result.");
             
             
             return new EnabledDirtyHack((DirtyHack)hack, (int)value);
             return new EnabledDirtyHack((DirtyHack)hack, (int)value);

+ 21 - 21
src/Ryujinx.Tests/Common/Extensions/SequenceReaderExtensionsTests.cs

@@ -23,9 +23,9 @@ namespace Ryujinx.Tests.Common.Extensions
             ReadOnlySequence<byte> sequence =
             ReadOnlySequence<byte> sequence =
                 CreateSegmentedByteSequence(originalStructs, maxSegmentSize ?? Unsafe.SizeOf<MyUnmanagedStruct>());
                 CreateSegmentedByteSequence(originalStructs, maxSegmentSize ?? Unsafe.SizeOf<MyUnmanagedStruct>());
 
 
-            var sequenceReader = new SequenceReader<byte>(sequence);
+            SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
-            foreach (var original in originalStructs)
+            foreach (MyUnmanagedStruct original in originalStructs)
             {
             {
                 // Act
                 // Act
                 ref readonly MyUnmanagedStruct read = ref sequenceReader.GetRefOrRefToCopy<MyUnmanagedStruct>(out _);
                 ref readonly MyUnmanagedStruct read = ref sequenceReader.GetRefOrRefToCopy<MyUnmanagedStruct>(out _);
@@ -43,12 +43,12 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, 3);
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, 3);
 
 
-            var sequenceReader = new SequenceReader<byte>(sequence);
+            SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
-            foreach (var original in originalStructs)
+            foreach (MyUnmanagedStruct original in originalStructs)
             {
             {
                 // Act
                 // Act
-                ref readonly MyUnmanagedStruct read = ref sequenceReader.GetRefOrRefToCopy<MyUnmanagedStruct>(out var copy);
+                ref readonly MyUnmanagedStruct read = ref sequenceReader.GetRefOrRefToCopy<MyUnmanagedStruct>(out MyUnmanagedStruct copy);
 
 
                 // Assert
                 // Assert
                 MyUnmanagedStruct.Assert(Assert.AreEqual, original, read);
                 MyUnmanagedStruct.Assert(Assert.AreEqual, original, read);
@@ -64,12 +64,12 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, int.MaxValue);
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, int.MaxValue);
 
 
-            var sequenceReader = new SequenceReader<byte>(sequence);
+            SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
-            foreach (var original in originalStructs)
+            foreach (MyUnmanagedStruct original in originalStructs)
             {
             {
                 // Act
                 // Act
-                ref readonly MyUnmanagedStruct read = ref sequenceReader.GetRefOrRefToCopy<MyUnmanagedStruct>(out var copy);
+                ref readonly MyUnmanagedStruct read = ref sequenceReader.GetRefOrRefToCopy<MyUnmanagedStruct>(out MyUnmanagedStruct copy);
 
 
                 // Assert
                 // Assert
                 MyUnmanagedStruct.Assert(Assert.AreEqual, original, read);
                 MyUnmanagedStruct.Assert(Assert.AreEqual, original, read);
@@ -88,7 +88,7 @@ namespace Ryujinx.Tests.Common.Extensions
             // Act/Assert
             // Act/Assert
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             {
             {
-                var sequenceReader = new SequenceReader<byte>(sequence);
+                SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
                 sequenceReader.Advance(1);
                 sequenceReader.Advance(1);
 
 
@@ -106,7 +106,7 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
             BinaryPrimitives.WriteInt32LittleEndian(buffer.AsSpan(), TestValue);
             BinaryPrimitives.WriteInt32LittleEndian(buffer.AsSpan(), TestValue);
 
 
-            var sequenceReader = new SequenceReader<byte>(new ReadOnlySequence<byte>(buffer));
+            SequenceReader<byte> sequenceReader = new SequenceReader<byte>(new ReadOnlySequence<byte>(buffer));
 
 
             // Act
             // Act
             sequenceReader.ReadLittleEndian(out int roundTrippedValue);
             sequenceReader.ReadLittleEndian(out int roundTrippedValue);
@@ -125,7 +125,7 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
             BinaryPrimitives.WriteInt32BigEndian(buffer.AsSpan(), TestValue);
             BinaryPrimitives.WriteInt32BigEndian(buffer.AsSpan(), TestValue);
 
 
-            var sequenceReader = new SequenceReader<byte>(new ReadOnlySequence<byte>(buffer));
+            SequenceReader<byte> sequenceReader = new SequenceReader<byte>(new ReadOnlySequence<byte>(buffer));
 
 
             // Act
             // Act
             sequenceReader.ReadLittleEndian(out int roundTrippedValue);
             sequenceReader.ReadLittleEndian(out int roundTrippedValue);
@@ -147,7 +147,7 @@ namespace Ryujinx.Tests.Common.Extensions
             // Act/Assert
             // Act/Assert
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             {
             {
-                var sequenceReader = new SequenceReader<byte>(new ReadOnlySequence<byte>(buffer));
+                SequenceReader<byte> sequenceReader = new SequenceReader<byte>(new ReadOnlySequence<byte>(buffer));
                 sequenceReader.Advance(1);
                 sequenceReader.Advance(1);
 
 
                 sequenceReader.ReadLittleEndian(out int roundTrippedValue);
                 sequenceReader.ReadLittleEndian(out int roundTrippedValue);
@@ -173,7 +173,7 @@ namespace Ryujinx.Tests.Common.Extensions
             // Act/Assert
             // Act/Assert
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             {
             {
-                var sequenceReader = new SequenceReader<byte>(sequence);
+                SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
                 sequenceReader.Advance(1);
                 sequenceReader.Advance(1);
 
 
@@ -200,7 +200,7 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             Assert.Throws<ArgumentOutOfRangeException>(() =>
             {
             {
-                var sequenceReader = new SequenceReader<byte>(sequence);
+                SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
                 sequenceReader.SetConsumed(MyUnmanagedStruct.SizeOf * StructCount + 1);
                 sequenceReader.SetConsumed(MyUnmanagedStruct.SizeOf * StructCount + 1);
             });
             });
@@ -213,9 +213,9 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, maxSegmentLength);
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, maxSegmentLength);
 
 
-            var sequenceReader = new SequenceReader<byte>(sequence);
+            SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
-            foreach (var original in originalStructs)
+            foreach (MyUnmanagedStruct original in originalStructs)
             {
             {
                 // Act
                 // Act
                 sequenceReader.ReadUnmanaged(out MyUnmanagedStruct read);
                 sequenceReader.ReadUnmanaged(out MyUnmanagedStruct read);
@@ -232,7 +232,7 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, maxSegmentLength);
             ReadOnlySequence<byte> sequence = CreateSegmentedByteSequence(originalStructs, maxSegmentLength);
 
 
-            var sequenceReader = new SequenceReader<byte>(sequence);
+            SequenceReader<byte> sequenceReader = new SequenceReader<byte>(sequence);
 
 
             static void SetConsumedAndAssert(scoped ref SequenceReader<byte> sequenceReader, long consumed)
             static void SetConsumedAndAssert(scoped ref SequenceReader<byte> sequenceReader, long consumed)
             {
             {
@@ -283,7 +283,7 @@ namespace Ryujinx.Tests.Common.Extensions
                 const int BaseInt32Value = 0x1234abcd;
                 const int BaseInt32Value = 0x1234abcd;
                 const short BaseInt16Value = 0x5678;
                 const short BaseInt16Value = 0x5678;
 
 
-                var result = new MyUnmanagedStruct
+                MyUnmanagedStruct result = new MyUnmanagedStruct
                 {
                 {
                     BehaviourSize = BaseInt32Value ^ rng.Next(),
                     BehaviourSize = BaseInt32Value ^ rng.Next(),
                     MemoryPoolsSize = BaseInt32Value ^ rng.Next(),
                     MemoryPoolsSize = BaseInt32Value ^ rng.Next(),
@@ -320,7 +320,7 @@ namespace Ryujinx.Tests.Common.Extensions
 
 
         private static IEnumerable<MyUnmanagedStruct> EnumerateNewUnmanagedStructs()
         private static IEnumerable<MyUnmanagedStruct> EnumerateNewUnmanagedStructs()
         {
         {
-            var rng = new Random(0);
+            Random rng = new Random(0);
 
 
             while (true)
             while (true)
             {
             {
@@ -331,7 +331,7 @@ namespace Ryujinx.Tests.Common.Extensions
         private static ReadOnlySequence<byte> CreateSegmentedByteSequence<T>(T[] array, int maxSegmentLength) where T : unmanaged
         private static ReadOnlySequence<byte> CreateSegmentedByteSequence<T>(T[] array, int maxSegmentLength) where T : unmanaged
         {
         {
             byte[] arrayBytes = MemoryMarshal.AsBytes(array.AsSpan()).ToArray();
             byte[] arrayBytes = MemoryMarshal.AsBytes(array.AsSpan()).ToArray();
-            var memory = new Memory<byte>(arrayBytes);
+            Memory<byte> memory = new Memory<byte>(arrayBytes);
             int index = 0;
             int index = 0;
 
 
             BytesReadOnlySequenceSegment first = null, last = null;
             BytesReadOnlySequenceSegment first = null, last = null;
@@ -339,7 +339,7 @@ namespace Ryujinx.Tests.Common.Extensions
             while (index < memory.Length)
             while (index < memory.Length)
             {
             {
                 int nextSegmentLength = Math.Min(maxSegmentLength, memory.Length - index);
                 int nextSegmentLength = Math.Min(maxSegmentLength, memory.Length - index);
-                var nextSegment = memory.Slice(index, nextSegmentLength);
+                Memory<byte> nextSegment = memory.Slice(index, nextSegmentLength);
 
 
                 if (first == null)
                 if (first == null)
                 {
                 {

+ 1 - 1
src/Ryujinx.Tests/Cpu/CpuTest32.cs

@@ -296,7 +296,7 @@ namespace Ryujinx.Tests.Cpu
                 FinalRegs = test.FinalRegs,
                 FinalRegs = test.FinalRegs,
             });
             });
 
 
-            foreach (var (address, value) in test.MemoryDelta)
+            foreach ((ulong address, ushort value) in test.MemoryDelta)
             {
             {
                 testMem[address - DataBaseAddress + 0] = (byte)(value >> 0);
                 testMem[address - DataBaseAddress + 0] = (byte)(value >> 0);
                 testMem[address - DataBaseAddress + 1] = (byte)(value >> 8);
                 testMem[address - DataBaseAddress + 1] = (byte)(value >> 8);

+ 2 - 2
src/Ryujinx.Tests/Cpu/CpuTestSimdCvt32.cs

@@ -465,7 +465,7 @@ namespace Ryujinx.Tests.Cpu
 
 
             opcode |= (fixImm & 0x3f) << 16;
             opcode |= (fixImm & 0x3f) << 16;
 
 
-            var v0 = new V128((uint)s0, (uint)s1, (uint)s2, (uint)s3);
+            V128 v0 = new V128((uint)s0, (uint)s1, (uint)s2, (uint)s3);
 
 
             SingleOpcode(opcode, v0: v0);
             SingleOpcode(opcode, v0: v0);
 
 
@@ -505,7 +505,7 @@ namespace Ryujinx.Tests.Cpu
 
 
             opcode |= (fixImm & 0x3f) << 16;
             opcode |= (fixImm & 0x3f) << 16;
 
 
-            var v0 = new V128(s0, s1, s2, s3);
+            V128 v0 = new V128(s0, s1, s2, s3);
 
 
             SingleOpcode(opcode, v0: v0);
             SingleOpcode(opcode, v0: v0);
 
 

+ 9 - 9
src/Ryujinx.Tests/Cpu/CpuTestSimdMemory32.cs

@@ -44,7 +44,7 @@ namespace Ryujinx.Tests.Cpu
                                 [Range(0u, 3u)] uint n,
                                 [Range(0u, 3u)] uint n,
                                 [Values(0x0u)] uint offset)
                                 [Values(0x0u)] uint offset)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             uint opcode = 0xf4a00000u; // VLD1.8 {D0[0]}, [R0], R0
             uint opcode = 0xf4a00000u; // VLD1.8 {D0[0]}, [R0], R0
@@ -74,7 +74,7 @@ namespace Ryujinx.Tests.Cpu
                              [Values] bool t,
                              [Values] bool t,
                              [Values(0x0u)] uint offset)
                              [Values(0x0u)] uint offset)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             uint opcode = 0xf4a00c00u; // VLD1.8 {D0[0]}, [R0], R0
             uint opcode = 0xf4a00c00u; // VLD1.8 {D0[0]}, [R0], R0
@@ -103,7 +103,7 @@ namespace Ryujinx.Tests.Cpu
                               [Range(0u, 10u)] uint mode,
                               [Range(0u, 10u)] uint mode,
                               [Values(0x0u)] uint offset)
                               [Values(0x0u)] uint offset)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             uint opcode = 0xf4200000u; // VLD4.8 {D0, D1, D2, D3}, [R0], R0
             uint opcode = 0xf4200000u; // VLD4.8 {D0, D1, D2, D3}, [R0], R0
@@ -133,7 +133,7 @@ namespace Ryujinx.Tests.Cpu
                                 [Range(0u, 3u)] uint n,
                                 [Range(0u, 3u)] uint n,
                                 [Values(0x0u)] uint offset)
                                 [Values(0x0u)] uint offset)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             (V128 vec1, V128 vec2, V128 vec3, V128 vec4) = GenerateTestVectors();
             (V128 vec1, V128 vec2, V128 vec3, V128 vec4) = GenerateTestVectors();
@@ -164,7 +164,7 @@ namespace Ryujinx.Tests.Cpu
                               [Range(0u, 10u)] uint mode,
                               [Range(0u, 10u)] uint mode,
                               [Values(0x0u)] uint offset)
                               [Values(0x0u)] uint offset)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             (V128 vec1, V128 vec2, V128 vec3, V128 vec4) = GenerateTestVectors();
             (V128 vec1, V128 vec2, V128 vec3, V128 vec4) = GenerateTestVectors();
@@ -194,7 +194,7 @@ namespace Ryujinx.Tests.Cpu
                          [Values(0x1u, 0x32u)] uint regs,
                          [Values(0x1u, 0x32u)] uint regs,
                          [Values] bool single)
                          [Values] bool single)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             uint opcode = 0xec100a00u; // VST4.8 {D0, D1, D2, D3}, [R0], R0
             uint opcode = 0xec100a00u; // VST4.8 {D0, D1, D2, D3}, [R0], R0
@@ -246,7 +246,7 @@ namespace Ryujinx.Tests.Cpu
                          [Values(0x0u)] uint imm,
                          [Values(0x0u)] uint imm,
                          [Values] bool sub)
                          [Values] bool sub)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             uint opcode = 0xed900a00u; // VLDR.32 S0, [R0, #0]
             uint opcode = 0xed900a00u; // VLDR.32 S0, [R0, #0]
@@ -281,7 +281,7 @@ namespace Ryujinx.Tests.Cpu
                 [Values(0x0u)] uint imm,
                 [Values(0x0u)] uint imm,
                 [Values] bool sub)
                 [Values] bool sub)
         {
         {
-            var data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
+            byte[] data = GenerateVectorSequence((int)MemoryBlock.GetPageSize());
             SetWorkingMemory(0, data);
             SetWorkingMemory(0, data);
 
 
             uint opcode = 0xed800a00u; // VSTR.32 S0, [R0, #0]
             uint opcode = 0xed800a00u; // VSTR.32 S0, [R0, #0]
@@ -331,7 +331,7 @@ namespace Ryujinx.Tests.Cpu
                 data[i] = i + (i / 9f);
                 data[i] = i + (i / 9f);
             }
             }
 
 
-            var result = new byte[length];
+            byte[] result = new byte[length];
             Buffer.BlockCopy(data, 0, result, 0, result.Length);
             Buffer.BlockCopy(data, 0, result, 0, result.Length);
             return result;
             return result;
         }
         }

+ 2 - 1
src/Ryujinx.Tests/Cpu/CpuTestSimdMov32.cs

@@ -2,6 +2,7 @@
 
 
 using ARMeilleure.State;
 using ARMeilleure.State;
 using NUnit.Framework;
 using NUnit.Framework;
+using NUnit.Framework.Internal;
 
 
 namespace Ryujinx.Tests.Cpu
 namespace Ryujinx.Tests.Cpu
 {
 {
@@ -467,7 +468,7 @@ namespace Ryujinx.Tests.Cpu
             opcode |= (vn & 0xf) << 16;
             opcode |= (vn & 0xf) << 16;
             opcode |= (length & 0x3) << 8;
             opcode |= (length & 0x3) << 8;
 
 
-            var rnd = TestContext.CurrentContext.Random;
+            Randomizer rnd = TestContext.CurrentContext.Random;
             V128 v2 = new(TestContext.CurrentContext.Random.NextULong(), TestContext.CurrentContext.Random.NextULong());
             V128 v2 = new(TestContext.CurrentContext.Random.NextULong(), TestContext.CurrentContext.Random.NextULong());
             V128 v3 = new(TestContext.CurrentContext.Random.NextULong(), TestContext.CurrentContext.Random.NextULong());
             V128 v3 = new(TestContext.CurrentContext.Random.NextULong(), TestContext.CurrentContext.Random.NextULong());
             V128 v4 = new(TestContext.CurrentContext.Random.NextULong(), TestContext.CurrentContext.Random.NextULong());
             V128 v4 = new(TestContext.CurrentContext.Random.NextULong(), TestContext.CurrentContext.Random.NextULong());

+ 1 - 1
src/Ryujinx.Tests/Cpu/EnvironmentTests.cs

@@ -53,7 +53,7 @@ namespace Ryujinx.Tests.Cpu
             bool methodCalled = false;
             bool methodCalled = false;
             bool isFz = false;
             bool isFz = false;
 
 
-            var method = TranslatorTestMethods.GenerateFpFlagsPInvokeTest();
+            TranslatorTestMethods.FpFlagsPInvokeTest method = TranslatorTestMethods.GenerateFpFlagsPInvokeTest();
 
 
             // This method sets flush-to-zero and then calls the managed method.
             // This method sets flush-to-zero and then calls the managed method.
             // Before and after setting the flags, it ensures subnormal addition works as expected.
             // Before and after setting the flags, it ensures subnormal addition works as expected.

+ 22 - 21
src/Ryujinx.Tests/Memory/PartialUnmaps.cs

@@ -3,6 +3,7 @@ using ARMeilleure.Memory;
 using ARMeilleure.Signal;
 using ARMeilleure.Signal;
 using ARMeilleure.Translation;
 using ARMeilleure.Translation;
 using NUnit.Framework;
 using NUnit.Framework;
+using Ryujinx.Common.Memory;
 using Ryujinx.Common.Memory.PartialUnmaps;
 using Ryujinx.Common.Memory.PartialUnmaps;
 using Ryujinx.Cpu;
 using Ryujinx.Cpu;
 using Ryujinx.Cpu.Jit;
 using Ryujinx.Cpu.Jit;
@@ -26,11 +27,11 @@ namespace Ryujinx.Tests.Memory
         {
         {
             MemoryAllocationFlags asFlags = MemoryAllocationFlags.Reserve | MemoryAllocationFlags.ViewCompatible;
             MemoryAllocationFlags asFlags = MemoryAllocationFlags.Reserve | MemoryAllocationFlags.ViewCompatible;
 
 
-            var addressSpace = new MemoryBlock(asSize, asFlags);
-            var addressSpaceMirror = new MemoryBlock(asSize, asFlags);
+            MemoryBlock addressSpace = new MemoryBlock(asSize, asFlags);
+            MemoryBlock addressSpaceMirror = new MemoryBlock(asSize, asFlags);
 
 
-            var tracking = new MemoryTracking(new MockVirtualMemoryManager(asSize, 0x1000), 0x1000);
-            var exceptionHandler = new MemoryEhMeilleure(addressSpace, addressSpaceMirror, tracking);
+            MemoryTracking tracking = new MemoryTracking(new MockVirtualMemoryManager(asSize, 0x1000), 0x1000);
+            MemoryEhMeilleure exceptionHandler = new MemoryEhMeilleure(addressSpace, addressSpaceMirror, tracking);
 
 
             return (addressSpace, addressSpaceMirror, exceptionHandler);
             return (addressSpace, addressSpaceMirror, exceptionHandler);
         }
         }
@@ -39,7 +40,7 @@ namespace Ryujinx.Tests.Memory
         {
         {
             int count = 0;
             int count = 0;
 
 
-            ref var ids = ref state.LocalCounts.ThreadIds;
+            ref Array20<int> ids = ref state.LocalCounts.ThreadIds;
 
 
             for (int i = 0; i < ids.Length; i++)
             for (int i = 0; i < ids.Length; i++)
             {
             {
@@ -71,13 +72,13 @@ namespace Ryujinx.Tests.Memory
             ulong vaSize = 0x100000;
             ulong vaSize = 0x100000;
 
 
             // The first 0x100000 is mapped to start. It is replaced from the center with the 0x200000 mapping.
             // The first 0x100000 is mapped to start. It is replaced from the center with the 0x200000 mapping.
-            var backing = new MemoryBlock(vaSize * 2, MemoryAllocationFlags.Mirrorable);
+            MemoryBlock backing = new MemoryBlock(vaSize * 2, MemoryAllocationFlags.Mirrorable);
 
 
             (MemoryBlock unusedMainMemory, MemoryBlock memory, MemoryEhMeilleure exceptionHandler) = GetVirtual(vaSize * 2);
             (MemoryBlock unusedMainMemory, MemoryBlock memory, MemoryEhMeilleure exceptionHandler) = GetVirtual(vaSize * 2);
 
 
             EnsureTranslator();
             EnsureTranslator();
 
 
-            ref var state = ref PartialUnmapState.GetRef();
+            ref PartialUnmapState state = ref PartialUnmapState.GetRef();
 
 
             Thread testThread = null;
             Thread testThread = null;
             bool shouldAccess = true;
             bool shouldAccess = true;
@@ -216,17 +217,17 @@ namespace Ryujinx.Tests.Memory
             ulong vaSize = 0x100000;
             ulong vaSize = 0x100000;
 
 
             // The first 0x100000 is mapped to start. It is replaced from the center with the 0x200000 mapping.
             // The first 0x100000 is mapped to start. It is replaced from the center with the 0x200000 mapping.
-            var backing = new MemoryBlock(vaSize * 2, MemoryAllocationFlags.Mirrorable);
+            MemoryBlock backing = new MemoryBlock(vaSize * 2, MemoryAllocationFlags.Mirrorable);
 
 
             (MemoryBlock mainMemory, MemoryBlock unusedMirror, MemoryEhMeilleure exceptionHandler) = GetVirtual(vaSize * 2);
             (MemoryBlock mainMemory, MemoryBlock unusedMirror, MemoryEhMeilleure exceptionHandler) = GetVirtual(vaSize * 2);
 
 
             EnsureTranslator();
             EnsureTranslator();
 
 
-            ref var state = ref PartialUnmapState.GetRef();
+            ref PartialUnmapState state = ref PartialUnmapState.GetRef();
 
 
             // Create some state to be used for managing the native writing loop.
             // Create some state to be used for managing the native writing loop.
             int stateSize = Unsafe.SizeOf<NativeWriteLoopState>();
             int stateSize = Unsafe.SizeOf<NativeWriteLoopState>();
-            var statePtr = Marshal.AllocHGlobal(stateSize);
+            IntPtr statePtr = Marshal.AllocHGlobal(stateSize);
             Unsafe.InitBlockUnaligned((void*)statePtr, 0, (uint)stateSize);
             Unsafe.InitBlockUnaligned((void*)statePtr, 0, (uint)stateSize);
 
 
             ref NativeWriteLoopState writeLoopState = ref Unsafe.AsRef<NativeWriteLoopState>((void*)statePtr);
             ref NativeWriteLoopState writeLoopState = ref Unsafe.AsRef<NativeWriteLoopState>((void*)statePtr);
@@ -241,7 +242,7 @@ namespace Ryujinx.Tests.Memory
                 // Create a large mapping.
                 // Create a large mapping.
                 mainMemory.MapView(backing, 0, 0, vaSize);
                 mainMemory.MapView(backing, 0, 0, vaSize);
 
 
-                var writeFunc = TestMethods.GenerateDebugNativeWriteLoop();
+                TestMethods.DebugNativeWriteLoop writeFunc = TestMethods.GenerateDebugNativeWriteLoop();
                 nint writePtr = mainMemory.GetPointer(vaSize - 0x1000, 4);
                 nint writePtr = mainMemory.GetPointer(vaSize - 0x1000, 4);
 
 
                 Thread testThread = new(() =>
                 Thread testThread = new(() =>
@@ -292,10 +293,10 @@ namespace Ryujinx.Tests.Memory
         public void ThreadLocalMap()
         public void ThreadLocalMap()
         {
         {
             PartialUnmapState.Reset();
             PartialUnmapState.Reset();
-            ref var state = ref PartialUnmapState.GetRef();
+            ref PartialUnmapState state = ref PartialUnmapState.GetRef();
 
 
             bool running = true;
             bool running = true;
-            var testThread = new Thread(() =>
+            Thread testThread = new Thread(() =>
             {
             {
                 PartialUnmapState.GetRef().RetryFromAccessViolation();
                 PartialUnmapState.GetRef().RetryFromAccessViolation();
                 while (running)
                 while (running)
@@ -331,11 +332,11 @@ namespace Ryujinx.Tests.Memory
 
 
             PartialUnmapState.Reset();
             PartialUnmapState.Reset();
 
 
-            ref var state = ref PartialUnmapState.GetRef();
+            ref PartialUnmapState state = ref PartialUnmapState.GetRef();
 
 
             fixed (void* localMap = &state.LocalCounts)
             fixed (void* localMap = &state.LocalCounts)
             {
             {
-                var getOrReserve = TestMethods.GenerateDebugThreadLocalMapGetOrReserve((nint)localMap);
+                TestMethods.DebugThreadLocalMapGetOrReserve getOrReserve = TestMethods.GenerateDebugThreadLocalMapGetOrReserve((nint)localMap);
 
 
                 for (int i = 0; i < ThreadLocalMap<int>.MapSize; i++)
                 for (int i = 0; i < ThreadLocalMap<int>.MapSize; i++)
                 {
                 {
@@ -375,8 +376,8 @@ namespace Ryujinx.Tests.Memory
         [Test]
         [Test]
         public void NativeReaderWriterLock()
         public void NativeReaderWriterLock()
         {
         {
-            var rwLock = new NativeReaderWriterLock();
-            var threads = new List<Thread>();
+            NativeReaderWriterLock rwLock = new NativeReaderWriterLock();
+            List<Thread> threads = new List<Thread>();
 
 
             int value = 0;
             int value = 0;
 
 
@@ -386,7 +387,7 @@ namespace Ryujinx.Tests.Memory
 
 
             for (int i = 0; i < 5; i++)
             for (int i = 0; i < 5; i++)
             {
             {
-                var readThread = new Thread(() =>
+                Thread readThread = new Thread(() =>
                 {
                 {
                     int count = 0;
                     int count = 0;
                     while (running)
                     while (running)
@@ -423,7 +424,7 @@ namespace Ryujinx.Tests.Memory
 
 
             for (int i = 0; i < 2; i++)
             for (int i = 0; i < 2; i++)
             {
             {
-                var writeThread = new Thread(() =>
+                Thread writeThread = new Thread(() =>
                 {
                 {
                     int count = 0;
                     int count = 0;
                     while (running)
                     while (running)
@@ -453,7 +454,7 @@ namespace Ryujinx.Tests.Memory
                 threads.Add(writeThread);
                 threads.Add(writeThread);
             }
             }
 
 
-            foreach (var thread in threads)
+            foreach (Thread thread in threads)
             {
             {
                 thread.Start();
                 thread.Start();
             }
             }
@@ -462,7 +463,7 @@ namespace Ryujinx.Tests.Memory
 
 
             running = false;
             running = false;
 
 
-            foreach (var thread in threads)
+            foreach (Thread thread in threads)
             {
             {
                 thread.Join();
                 thread.Join();
             }
             }