diff --git a/.gitmodules b/.gitmodules
index 94d28dd526..0c2e133f45 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "shared-infrastructure"]
path = shared-infrastructure
- url = https://github.com/SixLabors/SharedInfrastructure
+ url = https://github.com/stefannikolei/SharedInfrastructure
diff --git a/shared-infrastructure b/shared-infrastructure
index 7ac5703452..6491506cf4 160000
--- a/shared-infrastructure
+++ b/shared-infrastructure
@@ -1 +1 @@
-Subproject commit 7ac5703452348d9295db31fc0912c2bd9e419dc9
+Subproject commit 6491506cf4a330de2d743453b30c506ed7c74af7
diff --git a/tests/Directory.Build.targets b/tests/Directory.Build.targets
index 71f2bc333c..0e22a882a1 100644
--- a/tests/Directory.Build.targets
+++ b/tests/Directory.Build.targets
@@ -21,7 +21,6 @@
-
diff --git a/tests/ImageSharp.Tests.ProfilingSandbox/Program.cs b/tests/ImageSharp.Tests.ProfilingSandbox/Program.cs
index db8892cd75..f7afa5d15b 100644
--- a/tests/ImageSharp.Tests.ProfilingSandbox/Program.cs
+++ b/tests/ImageSharp.Tests.ProfilingSandbox/Program.cs
@@ -4,7 +4,7 @@
using SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations;
using SixLabors.ImageSharp.Tests.ProfilingBenchmarks;
using SixLabors.ImageSharp.Tests.ProfilingSandbox;
-using Xunit.Abstractions;
+using Xunit;
// in this file, comments are used for disabling stuff for local execution
#pragma warning disable SA1515
@@ -32,7 +32,12 @@ static void RunToVector4ProfilingTest()
sealed class ConsoleOutput : ITestOutputHelper
{
+ public void Write(string message) => Console.Write(message);
+
+ public void Write(string format, params object[] args) => Console.Write(format, args);
+
public void WriteLine(string message) => Console.WriteLine(message);
public void WriteLine(string format, params object[] args) => Console.WriteLine(format, args);
+ public string Output { get; }
}
diff --git a/tests/ImageSharp.Tests/ColorProfiles/Icc/ColorProfileConverterTests.Icc.cs b/tests/ImageSharp.Tests/ColorProfiles/Icc/ColorProfileConverterTests.Icc.cs
index cb349af96a..2e5b294a2a 100644
--- a/tests/ImageSharp.Tests/ColorProfiles/Icc/ColorProfileConverterTests.Icc.cs
+++ b/tests/ImageSharp.Tests/ColorProfiles/Icc/ColorProfileConverterTests.Icc.cs
@@ -6,7 +6,6 @@
using SixLabors.ImageSharp.Metadata.Profiles.Icc;
using Wacton.Unicolour;
using Wacton.Unicolour.Icc;
-using Xunit.Abstractions;
using Rgb = SixLabors.ImageSharp.ColorProfiles.Rgb;
namespace SixLabors.ImageSharp.Tests.ColorProfiles.Icc;
diff --git a/tests/ImageSharp.Tests/Common/NumericsTests.cs b/tests/ImageSharp.Tests/Common/NumericsTests.cs
index ebee570600..dde1d2feaa 100644
--- a/tests/ImageSharp.Tests/Common/NumericsTests.cs
+++ b/tests/ImageSharp.Tests/Common/NumericsTests.cs
@@ -1,7 +1,6 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Common;
diff --git a/tests/ImageSharp.Tests/Common/SimdUtilsTests.cs b/tests/ImageSharp.Tests/Common/SimdUtilsTests.cs
index dfd0a6b307..e75bb3943b 100644
--- a/tests/ImageSharp.Tests/Common/SimdUtilsTests.cs
+++ b/tests/ImageSharp.Tests/Common/SimdUtilsTests.cs
@@ -7,7 +7,6 @@
using System.Runtime.Intrinsics.X86;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Common;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs
index 610693c7f4..fe9d5ed6d2 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs
@@ -7,7 +7,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs
index fb1e062f20..c5a24b484e 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs
@@ -4,7 +4,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/DCTTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/DCTTests.cs
index b17a39f388..b0e35c7b0a 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/DCTTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/DCTTests.cs
@@ -4,7 +4,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities;
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/HuffmanScanEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/HuffmanScanEncoderTests.cs
index 36b792fa1c..2cc0a961ff 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/HuffmanScanEncoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/HuffmanScanEncoderTests.cs
@@ -2,7 +2,6 @@
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder;
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs
index ba0dce4c54..07b7bddadd 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs
@@ -6,7 +6,6 @@
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Tests.ColorProfiles;
using SixLabors.ImageSharp.Tests.TestUtilities;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
index 2f84a1a7b7..f3005d124b 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
@@ -9,7 +9,6 @@
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/ParseStreamTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/ParseStreamTests.cs
index b6a59fa93e..a14df945a1 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/ParseStreamTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/ParseStreamTests.cs
@@ -6,7 +6,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.AccurateDCT.cs b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.AccurateDCT.cs
index c593a029ab..d049472c86 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.AccurateDCT.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.AccurateDCT.cs
@@ -3,7 +3,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs
index 2fcd953ae0..80b42cce61 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs
@@ -4,7 +4,6 @@
// ReSharper disable InconsistentNaming
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.StandardIntegerDCT.cs b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.StandardIntegerDCT.cs
index b447349720..b6c5ba1c92 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.StandardIntegerDCT.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.StandardIntegerDCT.cs
@@ -3,7 +3,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.cs
index 2e97b9596b..4f6870bcd7 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.cs
@@ -1,7 +1,6 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/SpectralJpegTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/SpectralJpegTests.cs
index 1610df6eb4..2028c09a83 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/SpectralJpegTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/SpectralJpegTests.cs
@@ -9,7 +9,6 @@
using SixLabors.ImageSharp.Metadata.Profiles.Icc;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/SpectralToPixelConversionTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/SpectralToPixelConversionTests.cs
index 13300ee804..14c7aacd57 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/SpectralToPixelConversionTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/SpectralToPixelConversionTests.cs
@@ -7,7 +7,6 @@
using SixLabors.ImageSharp.Metadata;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs b/tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs
index 33e95c5aa0..57866989ab 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs
@@ -6,7 +6,6 @@
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.PixelFormats;
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/Utils/ReferenceImplementations.LLM_FloatingPoint_DCT.cs b/tests/ImageSharp.Tests/Formats/Jpg/Utils/ReferenceImplementations.LLM_FloatingPoint_DCT.cs
index 7c7f47f946..8b58dd2f03 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/Utils/ReferenceImplementations.LLM_FloatingPoint_DCT.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/Utils/ReferenceImplementations.LLM_FloatingPoint_DCT.cs
@@ -5,7 +5,6 @@
using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
-using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/Utils/VerifyJpeg.cs b/tests/ImageSharp.Tests/Formats/Jpg/Utils/VerifyJpeg.cs
index 7a31e35d0c..4928515a24 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/Utils/VerifyJpeg.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/Utils/VerifyJpeg.cs
@@ -3,7 +3,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.PixelFormats;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
diff --git a/tests/ImageSharp.Tests/Formats/Png/PngEncoderFilterTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngEncoderFilterTests.cs
index 3a31b395f7..84a95ee9d5 100644
--- a/tests/ImageSharp.Tests/Formats/Png/PngEncoderFilterTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Png/PngEncoderFilterTests.cs
@@ -6,7 +6,6 @@
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.Formats.Png.Filters;
using SixLabors.ImageSharp.Tests.TestUtilities;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Png;
diff --git a/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs
index eef8d5ba84..a60f4bd72e 100644
--- a/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs
@@ -200,14 +200,14 @@ public void WorksWithAllBitDepths(TestImageProvider provider, Pn
return;
}
- foreach (object[] filterMethod in PngFilterMethods)
+ foreach (TheoryDataRow filterMethod in PngFilterMethods)
{
foreach (PngInterlaceMode interlaceMode in InterlaceMode)
{
TestPngEncoderCore(
provider,
pngColorType,
- (PngFilterMethod)filterMethod[0],
+ filterMethod.Data,
pngBitDepth,
interlaceMode,
appendPngColorType: true,
@@ -236,14 +236,14 @@ public void WorksWithAllBitDepths(TestImageProvider provider, Pn
public void WorksWithAllBitDepthsAndExcludeAllFilter(TestImageProvider provider, PngColorType pngColorType, PngBitDepth pngBitDepth)
where TPixel : unmanaged, IPixel
{
- foreach (object[] filterMethod in PngFilterMethods)
+ foreach (TheoryDataRow filterMethod in PngFilterMethods)
{
foreach (PngInterlaceMode interlaceMode in InterlaceMode)
{
TestPngEncoderCore(
provider,
pngColorType,
- (PngFilterMethod)filterMethod[0],
+ filterMethod.Data,
pngBitDepth,
interlaceMode,
appendPngColorType: true,
diff --git a/tests/ImageSharp.Tests/Helpers/ParallelRowIteratorTests.cs b/tests/ImageSharp.Tests/Helpers/ParallelRowIteratorTests.cs
index 017926fc5d..ec9ee571c6 100644
--- a/tests/ImageSharp.Tests/Helpers/ParallelRowIteratorTests.cs
+++ b/tests/ImageSharp.Tests/Helpers/ParallelRowIteratorTests.cs
@@ -7,7 +7,6 @@
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Helpers;
diff --git a/tests/ImageSharp.Tests/Image/ImageTests.Decode_Cancellation.cs b/tests/ImageSharp.Tests/Image/ImageTests.Decode_Cancellation.cs
index 0656f9e0bc..06ce7fd634 100644
--- a/tests/ImageSharp.Tests/Image/ImageTests.Decode_Cancellation.cs
+++ b/tests/ImageSharp.Tests/Image/ImageTests.Decode_Cancellation.cs
@@ -58,7 +58,7 @@ private static TheoryData CreateLoadData()
public static TheoryData LoadData { get; } = CreateLoadData();
// TODO: Figure out cancellation failures on Linux
- [ConditionalTheory(typeof(TestEnvironment), nameof(TestEnvironment.IsWindows))]
+ [Theory(Skip = "Skipped on non-Windows platforms", SkipType = typeof(TestEnvironment), SkipUnless = nameof(TestEnvironment.IsWindows))]
[MemberData(nameof(LoadData))]
public async Task LoadAsync_IsCancellable(bool useMemoryStream, string file, double percentageOfStreamReadToCancel)
{
diff --git a/tests/ImageSharp.Tests/ImageSharp.Tests.csproj b/tests/ImageSharp.Tests/ImageSharp.Tests.csproj
index a1d5b0ee2b..25d30b514d 100644
--- a/tests/ImageSharp.Tests/ImageSharp.Tests.csproj
+++ b/tests/ImageSharp.Tests/ImageSharp.Tests.csproj
@@ -45,7 +45,6 @@
-
diff --git a/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.Trim.cs b/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.Trim.cs
index fd9760f48f..453b0ed036 100644
--- a/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.Trim.cs
+++ b/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.Trim.cs
@@ -14,9 +14,7 @@ public partial class UniformUnmanagedMemoryPoolTests
public class Trim
{
[CollectionDefinition(nameof(NonParallelTests), DisableParallelization = true)]
- public class NonParallelTests
- {
- }
+ public class NonParallelTests { }
[Fact]
public void TrimPeriodElapsed_TrimsHalfOfUnusedArrays()
@@ -24,7 +22,10 @@ public void TrimPeriodElapsed_TrimsHalfOfUnusedArrays()
RemoteExecutor.Invoke(RunTest).Dispose();
static void RunTest()
{
- UniformUnmanagedMemoryPool.TrimSettings trimSettings = new() { TrimPeriodMilliseconds = 5_000 };
+ UniformUnmanagedMemoryPool.TrimSettings trimSettings = new()
+ {
+ TrimPeriodMilliseconds = 5_000,
+ };
UniformUnmanagedMemoryPool pool = new(128, 256, trimSettings);
UnmanagedMemoryHandle[] a = pool.Rent(64);
@@ -37,7 +38,8 @@ static void RunTest()
// 128 - 32 - 16 = 80
Assert.True(
UnmanagedMemoryHandle.TotalOutstandingHandles <= 80,
- $"UnmanagedMemoryHandle.TotalOutstandingHandles={UnmanagedMemoryHandle.TotalOutstandingHandles} > 80");
+ $"UnmanagedMemoryHandle.TotalOutstandingHandles={UnmanagedMemoryHandle.TotalOutstandingHandles} > 80"
+ );
pool.Return(b);
}
}
@@ -46,18 +48,16 @@ static void RunTest()
// MultiplePoolInstances_TrimPeriodElapsed_AllAreTrimmed,
// which is strongly timing-sensitive, and might be flaky under high load.
[CollectionDefinition(nameof(NonParallelCollection), DisableParallelization = true)]
- public class NonParallelCollection
- {
- }
+ public class NonParallelCollection { }
[Collection(nameof(NonParallelCollection))]
public class NonParallel
{
- public static readonly bool IsNotMacOS = !TestEnvironment.IsMacOS;
+ public static bool IsNotMacOS => !TestEnvironment.IsMacOS;
// TODO: Investigate failures on macOS. All handles are released after GC.
// (It seems to happen more consistently on .NET 6.)
- [ConditionalFact(nameof(IsNotMacOS))]
+ [Fact(Skip = "Skipped on macOS", SkipUnless = nameof(IsNotMacOS))]
public void MultiplePoolInstances_TrimPeriodElapsed_AllAreTrimmed()
{
if (!TestEnvironment.RunsOnCI)
@@ -77,10 +77,16 @@ public void MultiplePoolInstances_TrimPeriodElapsed_AllAreTrimmed()
static void RunTest()
{
- UniformUnmanagedMemoryPool.TrimSettings trimSettings1 = new() { TrimPeriodMilliseconds = 6_000 };
+ UniformUnmanagedMemoryPool.TrimSettings trimSettings1 = new()
+ {
+ TrimPeriodMilliseconds = 6_000,
+ };
UniformUnmanagedMemoryPool pool1 = new(128, 256, trimSettings1);
Thread.Sleep(8_000); // Let some callbacks fire already
- UniformUnmanagedMemoryPool.TrimSettings trimSettings2 = new() { TrimPeriodMilliseconds = 3_000 };
+ UniformUnmanagedMemoryPool.TrimSettings trimSettings2 = new()
+ {
+ TrimPeriodMilliseconds = 3_000,
+ };
UniformUnmanagedMemoryPool pool2 = new(128, 256, trimSettings2);
pool1.Return(pool1.Rent(64));
@@ -96,7 +102,8 @@ static void RunTest()
Thread.Sleep(15_000);
Assert.True(
UnmanagedMemoryHandle.TotalOutstandingHandles <= 64,
- $"UnmanagedMemoryHandle.TotalOutstandingHandles={UnmanagedMemoryHandle.TotalOutstandingHandles} > 64");
+ $"UnmanagedMemoryHandle.TotalOutstandingHandles={UnmanagedMemoryHandle.TotalOutstandingHandles} > 64"
+ );
GC.KeepAlive(pool1);
GC.KeepAlive(pool2);
}
@@ -104,13 +111,16 @@ static void RunTest()
[MethodImpl(MethodImplOptions.NoInlining)]
static void LeakPoolInstance()
{
- UniformUnmanagedMemoryPool.TrimSettings trimSettings = new() { TrimPeriodMilliseconds = 4_000 };
+ UniformUnmanagedMemoryPool.TrimSettings trimSettings = new()
+ {
+ TrimPeriodMilliseconds = 4_000,
+ };
_ = new UniformUnmanagedMemoryPool(128, 256, trimSettings);
}
}
}
- public static readonly bool Is32BitProcess = !Environment.Is64BitProcess;
+ public static bool Is32BitProcess => !Environment.Is64BitProcess;
private static readonly List PressureArrays = [];
[Fact]
@@ -129,11 +139,16 @@ static void RunTest()
Assert.False(Environment.Is64BitProcess);
const int oneMb = 1 << 20;
- UniformUnmanagedMemoryPool.TrimSettings trimSettings = new() { HighPressureThresholdRate = 0.2f };
+ UniformUnmanagedMemoryPool.TrimSettings trimSettings = new()
+ {
+ HighPressureThresholdRate = 0.2f,
+ };
GCMemoryInfo memInfo = GC.GetGCMemoryInfo();
int highLoadThreshold = (int)(memInfo.HighMemoryLoadThresholdBytes / oneMb);
- highLoadThreshold = (int)(trimSettings.HighPressureThresholdRate * highLoadThreshold);
+ highLoadThreshold = (int)(
+ trimSettings.HighPressureThresholdRate * highLoadThreshold
+ );
UniformUnmanagedMemoryPool pool = new(oneMb, 16, trimSettings);
pool.Return(pool.Rent(16));
diff --git a/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.cs b/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.cs
index ec79d91c3d..7e9e8294fc 100644
--- a/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.cs
+++ b/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.cs
@@ -5,7 +5,6 @@
using System.Runtime.InteropServices;
using Microsoft.DotNet.RemoteExecutor;
using SixLabors.ImageSharp.Memory.Internals;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Memory.Allocators;
@@ -28,11 +27,13 @@ public CleanupUtil(UniformUnmanagedMemoryPool pool)
public void Register(UnmanagedMemoryHandle handle) => this.handlesToDestroy.Add(handle);
- public void Register(IEnumerable handles) => this.handlesToDestroy.AddRange(handles);
+ public void Register(IEnumerable handles) =>
+ this.handlesToDestroy.AddRange(handles);
public void Register(IntPtr memoryPtr) => this.ptrsToDestroy.Add(memoryPtr);
- public void Register(IEnumerable memoryPtrs) => this.ptrsToDestroy.AddRange(memoryPtrs);
+ public void Register(IEnumerable memoryPtrs) =>
+ this.ptrsToDestroy.AddRange(memoryPtrs);
public void Dispose()
{
@@ -94,7 +95,11 @@ static void RunTest()
}
}
- private static void CheckBuffer(int length, UniformUnmanagedMemoryPool pool, UnmanagedMemoryHandle h)
+ private static void CheckBuffer(
+ int length,
+ UniformUnmanagedMemoryPool pool,
+ UnmanagedMemoryHandle h
+ )
{
Assert.False(h.IsInvalid);
Span span = GetSpan(h, pool.BufferLength);
@@ -105,7 +110,8 @@ private static void CheckBuffer(int length, UniformUnmanagedMemoryPool pool, Unm
Assert.True(span.SequenceEqual(expected));
}
- private static unsafe Span GetSpan(UnmanagedMemoryHandle h, int length) => new(h.Pointer, length);
+ private static unsafe Span GetSpan(UnmanagedMemoryHandle h, int length) =>
+ new(h.Pointer, length);
[Theory]
[InlineData(1, 1)]
@@ -210,7 +216,11 @@ public void Rent_SingleBuffer_OverCapacity_ReturnsInvalidBuffer()
[InlineData(0, 6, 5)]
[InlineData(5, 1, 5)]
[InlineData(4, 7, 10)]
- public void Rent_MultiBuffer_OverCapacity_ReturnsNull(int initialRent, int attempt, int capacity)
+ public void Rent_MultiBuffer_OverCapacity_ReturnsNull(
+ int initialRent,
+ int attempt,
+ int capacity
+ )
{
UniformUnmanagedMemoryPool pool = new(128, capacity);
using CleanupUtil cleanup = new(pool);
@@ -238,10 +248,10 @@ public void Rent_MultiBuff_BelowCapacity_Succeeds(int initialRent, int attempt,
cleanup.Register(b1);
}
- public static readonly bool IsNotMacOS = !TestEnvironment.IsMacOS;
+ public static bool IsNotMacOS => !TestEnvironment.IsMacOS;
// TODO: Investigate macOS failures
- [ConditionalTheory(nameof(IsNotMacOS))]
+ [Theory(Skip = "Skipped on macOS", SkipUnless = nameof(IsNotMacOS))]
[InlineData(false)]
[InlineData(true)]
public void RentReturnRelease_SubsequentRentReturnsDifferentHandles(bool multiple)
@@ -261,7 +271,10 @@ static void RunTest(string multipleInner)
pool.Release();
// Do some unmanaged allocations to make sure new pool buffers are different:
- IntPtr[] dummy = Enumerable.Range(0, 100).Select(_ => Marshal.AllocHGlobal(16)).ToArray();
+ IntPtr[] dummy = Enumerable
+ .Range(0, 100)
+ .Select(_ => Marshal.AllocHGlobal(16))
+ .ToArray();
cleanup.Register(dummy);
if (bool.Parse(multipleInner))
@@ -310,34 +323,38 @@ public void RentReturn_IsThreadSafe()
using CleanupUtil cleanup = new(pool);
Random rnd = new(0);
- Parallel.For(0, Environment.ProcessorCount, (int i) =>
- {
- List allHandles = new();
- int pauseAt = rnd.Next(100);
- for (int j = 0; j < 100; j++)
+ Parallel.For(
+ 0,
+ Environment.ProcessorCount,
+ (int i) =>
{
- UnmanagedMemoryHandle[] data = pool.Rent(2);
+ List allHandles = new();
+ int pauseAt = rnd.Next(100);
+ for (int j = 0; j < 100; j++)
+ {
+ UnmanagedMemoryHandle[] data = pool.Rent(2);
- GetSpan(data[0], pool.BufferLength).Fill((byte)i);
- GetSpan(data[1], pool.BufferLength).Fill((byte)i);
- allHandles.Add(data[0]);
- allHandles.Add(data[1]);
+ GetSpan(data[0], pool.BufferLength).Fill((byte)i);
+ GetSpan(data[1], pool.BufferLength).Fill((byte)i);
+ allHandles.Add(data[0]);
+ allHandles.Add(data[1]);
- if (j == pauseAt)
- {
- Thread.Sleep(15);
+ if (j == pauseAt)
+ {
+ Thread.Sleep(15);
+ }
}
- }
- Span expected = new byte[8];
- expected.Fill((byte)i);
+ Span expected = new byte[8];
+ expected.Fill((byte)i);
- foreach (UnmanagedMemoryHandle h in allHandles)
- {
- Assert.True(expected.SequenceEqual(GetSpan(h, pool.BufferLength)));
- pool.Return(new[] { h });
+ foreach (UnmanagedMemoryHandle h in allHandles)
+ {
+ Assert.True(expected.SequenceEqual(GetSpan(h, pool.BufferLength)));
+ pool.Return(new[] { h });
+ }
}
- });
+ );
}
[Theory]
diff --git a/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedPoolMemoryAllocatorTests.cs b/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedPoolMemoryAllocatorTests.cs
index b4593d4d09..887b266856 100644
--- a/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedPoolMemoryAllocatorTests.cs
+++ b/tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedPoolMemoryAllocatorTests.cs
@@ -584,7 +584,7 @@ static void RunTest()
}
}
- [ConditionalFact(typeof(Environment), nameof(Environment.Is64BitProcess))]
+ [Fact(Skip = "Requires 64-bit process", SkipType = typeof(Environment), SkipUnless = nameof(Environment.Is64BitProcess))]
public void MemoryAllocator_Create_SetHighLimit()
{
RemoteExecutor.Invoke(RunTest).Dispose();
diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs
index d7d6741baf..7c6319db51 100644
--- a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs
+++ b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs
@@ -11,329 +11,329 @@ public class ExifValuesTests
{
public static TheoryData ByteTags => new()
{
- { ExifTag.FaxProfile },
- { ExifTag.ModeNumber },
- { ExifTag.GPSAltitudeRef }
+ { (ExifTag)ExifTag.FaxProfile },
+ { (ExifTag)ExifTag.ModeNumber },
+ { (ExifTag)ExifTag.GPSAltitudeRef }
};
public static TheoryData ByteArrayTags => new()
{
- { ExifTag.ClipPath },
- { ExifTag.VersionYear },
- { ExifTag.XMP },
- { ExifTag.CFAPattern2 },
- { ExifTag.TIFFEPStandardID },
- { ExifTag.GPSVersionID },
+ { (ExifTag)ExifTag.ClipPath },
+ { (ExifTag)ExifTag.VersionYear },
+ { (ExifTag)ExifTag.XMP },
+ { (ExifTag)ExifTag.CFAPattern2 },
+ { (ExifTag)ExifTag.TIFFEPStandardID },
+ { (ExifTag)ExifTag.GPSVersionID },
};
public static TheoryData DoubleArrayTags => new()
{
- { ExifTag.PixelScale },
- { ExifTag.IntergraphMatrix },
- { ExifTag.ModelTiePoint },
- { ExifTag.ModelTransform }
+ { (ExifTag)ExifTag.PixelScale },
+ { (ExifTag)ExifTag.IntergraphMatrix },
+ { (ExifTag)ExifTag.ModelTiePoint },
+ { (ExifTag)ExifTag.ModelTransform }
};
public static TheoryData LongTags => new()
{
- { ExifTag.SubfileType },
- { ExifTag.SubIFDOffset },
- { ExifTag.GPSIFDOffset },
- { ExifTag.T4Options },
- { ExifTag.T6Options },
- { ExifTag.XClipPathUnits },
- { ExifTag.YClipPathUnits },
- { ExifTag.ProfileType },
- { ExifTag.CodingMethods },
- { ExifTag.T82ptions },
- { ExifTag.JPEGInterchangeFormat },
- { ExifTag.JPEGInterchangeFormatLength },
- { ExifTag.MDFileTag },
- { ExifTag.StandardOutputSensitivity },
- { ExifTag.RecommendedExposureIndex },
- { ExifTag.ISOSpeed },
- { ExifTag.ISOSpeedLatitudeyyy },
- { ExifTag.ISOSpeedLatitudezzz },
- { ExifTag.FaxRecvParams },
- { ExifTag.FaxRecvTime },
- { ExifTag.ImageNumber },
+ { (ExifTag)ExifTag.SubfileType },
+ { (ExifTag)ExifTag.SubIFDOffset },
+ { (ExifTag)ExifTag.GPSIFDOffset },
+ { (ExifTag)ExifTag.T4Options },
+ { (ExifTag)ExifTag.T6Options },
+ { (ExifTag)ExifTag.XClipPathUnits },
+ { (ExifTag)ExifTag.YClipPathUnits },
+ { (ExifTag)ExifTag.ProfileType },
+ { (ExifTag)ExifTag.CodingMethods },
+ { (ExifTag)ExifTag.T82ptions },
+ { (ExifTag)ExifTag.JPEGInterchangeFormat },
+ { (ExifTag)ExifTag.JPEGInterchangeFormatLength },
+ { (ExifTag)ExifTag.MDFileTag },
+ { (ExifTag)ExifTag.StandardOutputSensitivity },
+ { (ExifTag)ExifTag.RecommendedExposureIndex },
+ { (ExifTag)ExifTag.ISOSpeed },
+ { (ExifTag)ExifTag.ISOSpeedLatitudeyyy },
+ { (ExifTag)ExifTag.ISOSpeedLatitudezzz },
+ { (ExifTag)ExifTag.FaxRecvParams },
+ { (ExifTag)ExifTag.FaxRecvTime },
+ { (ExifTag)ExifTag.ImageNumber },
};
public static TheoryData LongArrayTags => new()
{
- { ExifTag.FreeOffsets },
- { ExifTag.FreeByteCounts },
- { ExifTag.ColorResponseUnit },
- { ExifTag.SMinSampleValue },
- { ExifTag.SMaxSampleValue },
- { ExifTag.JPEGQTables },
- { ExifTag.JPEGDCTables },
- { ExifTag.JPEGACTables },
- { ExifTag.StripRowCounts },
- { ExifTag.IntergraphRegisters }
+ { (ExifTag)ExifTag.FreeOffsets },
+ { (ExifTag)ExifTag.FreeByteCounts },
+ { (ExifTag)ExifTag.ColorResponseUnit },
+ { (ExifTag)ExifTag.SMinSampleValue },
+ { (ExifTag)ExifTag.SMaxSampleValue },
+ { (ExifTag)ExifTag.JPEGQTables },
+ { (ExifTag)ExifTag.JPEGDCTables },
+ { (ExifTag)ExifTag.JPEGACTables },
+ { (ExifTag)ExifTag.StripRowCounts },
+ { (ExifTag)ExifTag.IntergraphRegisters }
};
public static TheoryData NumberTags => new()
{
- { ExifTag.ImageWidth },
- { ExifTag.ImageLength },
- { ExifTag.TileWidth },
- { ExifTag.TileLength },
- { ExifTag.BadFaxLines },
- { ExifTag.ConsecutiveBadFaxLines },
- { ExifTag.PixelXDimension },
- { ExifTag.PixelYDimension }
+ { (ExifTag)ExifTag.ImageWidth },
+ { (ExifTag)ExifTag.ImageLength },
+ { (ExifTag)ExifTag.TileWidth },
+ { (ExifTag)ExifTag.TileLength },
+ { (ExifTag)ExifTag.BadFaxLines },
+ { (ExifTag)ExifTag.ConsecutiveBadFaxLines },
+ { (ExifTag)ExifTag.PixelXDimension },
+ { (ExifTag)ExifTag.PixelYDimension }
};
public static TheoryData NumberArrayTags => new()
{
- { ExifTag.StripOffsets },
- { ExifTag.StripByteCounts },
- { ExifTag.TileByteCounts },
- { ExifTag.TileOffsets },
- { ExifTag.ImageLayer }
+ { (ExifTag)ExifTag.StripOffsets },
+ { (ExifTag)ExifTag.StripByteCounts },
+ { (ExifTag)ExifTag.TileByteCounts },
+ { (ExifTag)ExifTag.TileOffsets },
+ { (ExifTag)ExifTag.ImageLayer }
};
public static TheoryData RationalTags => new()
{
- { ExifTag.XPosition },
- { ExifTag.YPosition },
- { ExifTag.XResolution },
- { ExifTag.YResolution },
- { ExifTag.BatteryLevel },
- { ExifTag.ExposureTime },
- { ExifTag.FNumber },
- { ExifTag.MDScalePixel },
- { ExifTag.CompressedBitsPerPixel },
- { ExifTag.ApertureValue },
- { ExifTag.MaxApertureValue },
- { ExifTag.SubjectDistance },
- { ExifTag.FocalLength },
- { ExifTag.FlashEnergy2 },
- { ExifTag.FocalPlaneXResolution2 },
- { ExifTag.FocalPlaneYResolution2 },
- { ExifTag.ExposureIndex2 },
- { ExifTag.Humidity },
- { ExifTag.Pressure },
- { ExifTag.Acceleration },
- { ExifTag.FlashEnergy },
- { ExifTag.FocalPlaneXResolution },
- { ExifTag.FocalPlaneYResolution },
- { ExifTag.ExposureIndex },
- { ExifTag.DigitalZoomRatio },
- { ExifTag.GPSAltitude },
- { ExifTag.GPSDOP },
- { ExifTag.GPSSpeed },
- { ExifTag.GPSTrack },
- { ExifTag.GPSImgDirection },
- { ExifTag.GPSDestBearing },
- { ExifTag.GPSDestDistance },
- { ExifTag.GPSHPositioningError },
+ { (ExifTag)ExifTag.XPosition },
+ { (ExifTag)ExifTag.YPosition },
+ { (ExifTag)ExifTag.XResolution },
+ { (ExifTag)ExifTag.YResolution },
+ { (ExifTag)ExifTag.BatteryLevel },
+ { (ExifTag)ExifTag.ExposureTime },
+ { (ExifTag)ExifTag.FNumber },
+ { (ExifTag)ExifTag.MDScalePixel },
+ { (ExifTag)ExifTag.CompressedBitsPerPixel },
+ { (ExifTag)ExifTag.ApertureValue },
+ { (ExifTag)ExifTag.MaxApertureValue },
+ { (ExifTag)ExifTag.SubjectDistance },
+ { (ExifTag)ExifTag.FocalLength },
+ { (ExifTag)ExifTag.FlashEnergy2 },
+ { (ExifTag)ExifTag.FocalPlaneXResolution2 },
+ { (ExifTag)ExifTag.FocalPlaneYResolution2 },
+ { (ExifTag)ExifTag.ExposureIndex2 },
+ { (ExifTag)ExifTag.Humidity },
+ { (ExifTag)ExifTag.Pressure },
+ { (ExifTag)ExifTag.Acceleration },
+ { (ExifTag)ExifTag.FlashEnergy },
+ { (ExifTag)ExifTag.FocalPlaneXResolution },
+ { (ExifTag)ExifTag.FocalPlaneYResolution },
+ { (ExifTag)ExifTag.ExposureIndex },
+ { (ExifTag)ExifTag.DigitalZoomRatio },
+ { (ExifTag)ExifTag.GPSAltitude },
+ { (ExifTag)ExifTag.GPSDOP },
+ { (ExifTag)ExifTag.GPSSpeed },
+ { (ExifTag)ExifTag.GPSTrack },
+ { (ExifTag)ExifTag.GPSImgDirection },
+ { (ExifTag)ExifTag.GPSDestBearing },
+ { (ExifTag)ExifTag.GPSDestDistance },
+ { (ExifTag)ExifTag.GPSHPositioningError },
};
public static TheoryData RationalArrayTags => new()
{
- { ExifTag.WhitePoint },
- { ExifTag.PrimaryChromaticities },
- { ExifTag.YCbCrCoefficients },
- { ExifTag.ReferenceBlackWhite },
- { ExifTag.GPSLatitude },
- { ExifTag.GPSLongitude },
- { ExifTag.GPSTimestamp },
- { ExifTag.GPSDestLatitude },
- { ExifTag.GPSDestLongitude },
- { ExifTag.LensSpecification }
+ { (ExifTag)ExifTag.WhitePoint },
+ { (ExifTag)ExifTag.PrimaryChromaticities },
+ { (ExifTag)ExifTag.YCbCrCoefficients },
+ { (ExifTag)ExifTag.ReferenceBlackWhite },
+ { (ExifTag)ExifTag.GPSLatitude },
+ { (ExifTag)ExifTag.GPSLongitude },
+ { (ExifTag)ExifTag.GPSTimestamp },
+ { (ExifTag)ExifTag.GPSDestLatitude },
+ { (ExifTag)ExifTag.GPSDestLongitude },
+ { (ExifTag)ExifTag.LensSpecification }
};
public static TheoryData ShortTags => new()
{
- { ExifTag.OldSubfileType },
- { ExifTag.Compression },
- { ExifTag.PhotometricInterpretation },
- { ExifTag.Thresholding },
- { ExifTag.CellWidth },
- { ExifTag.CellLength },
- { ExifTag.FillOrder },
- { ExifTag.Orientation },
- { ExifTag.SamplesPerPixel },
- { ExifTag.PlanarConfiguration },
- { ExifTag.Predictor },
- { ExifTag.GrayResponseUnit },
- { ExifTag.ResolutionUnit },
- { ExifTag.CleanFaxData },
- { ExifTag.InkSet },
- { ExifTag.NumberOfInks },
- { ExifTag.DotRange },
- { ExifTag.Indexed },
- { ExifTag.OPIProxy },
- { ExifTag.JPEGProc },
- { ExifTag.JPEGRestartInterval },
- { ExifTag.YCbCrPositioning },
- { ExifTag.Rating },
- { ExifTag.RatingPercent },
- { ExifTag.ExposureProgram },
- { ExifTag.Interlace },
- { ExifTag.SelfTimerMode },
- { ExifTag.SensitivityType },
- { ExifTag.MeteringMode },
- { ExifTag.LightSource },
- { ExifTag.FocalPlaneResolutionUnit2 },
- { ExifTag.SensingMethod2 },
- { ExifTag.Flash },
- { ExifTag.ColorSpace },
- { ExifTag.FocalPlaneResolutionUnit },
- { ExifTag.SensingMethod },
- { ExifTag.CustomRendered },
- { ExifTag.ExposureMode },
- { ExifTag.WhiteBalance },
- { ExifTag.FocalLengthIn35mmFilm },
- { ExifTag.SceneCaptureType },
- { ExifTag.GainControl },
- { ExifTag.Contrast },
- { ExifTag.Saturation },
- { ExifTag.Sharpness },
- { ExifTag.SubjectDistanceRange },
- { ExifTag.GPSDifferential }
+ { (ExifTag)ExifTag.OldSubfileType },
+ { (ExifTag)ExifTag.Compression },
+ { (ExifTag)ExifTag.PhotometricInterpretation },
+ { (ExifTag)ExifTag.Thresholding },
+ { (ExifTag)ExifTag.CellWidth },
+ { (ExifTag)ExifTag.CellLength },
+ { (ExifTag)ExifTag.FillOrder },
+ { (ExifTag)ExifTag.Orientation },
+ { (ExifTag)ExifTag.SamplesPerPixel },
+ { (ExifTag)ExifTag.PlanarConfiguration },
+ { (ExifTag)ExifTag.Predictor },
+ { (ExifTag)ExifTag.GrayResponseUnit },
+ { (ExifTag)ExifTag.ResolutionUnit },
+ { (ExifTag)ExifTag.CleanFaxData },
+ { (ExifTag)ExifTag.InkSet },
+ { (ExifTag)ExifTag.NumberOfInks },
+ { (ExifTag)ExifTag.DotRange },
+ { (ExifTag)ExifTag.Indexed },
+ { (ExifTag)ExifTag.OPIProxy },
+ { (ExifTag)ExifTag.JPEGProc },
+ { (ExifTag)ExifTag.JPEGRestartInterval },
+ { (ExifTag)ExifTag.YCbCrPositioning },
+ { (ExifTag)ExifTag.Rating },
+ { (ExifTag)ExifTag.RatingPercent },
+ { (ExifTag)ExifTag.ExposureProgram },
+ { (ExifTag)ExifTag.Interlace },
+ { (ExifTag)ExifTag.SelfTimerMode },
+ { (ExifTag)ExifTag.SensitivityType },
+ { (ExifTag)ExifTag.MeteringMode },
+ { (ExifTag)ExifTag.LightSource },
+ { (ExifTag)ExifTag.FocalPlaneResolutionUnit2 },
+ { (ExifTag)ExifTag.SensingMethod2 },
+ { (ExifTag)ExifTag.Flash },
+ { (ExifTag)ExifTag.ColorSpace },
+ { (ExifTag)ExifTag.FocalPlaneResolutionUnit },
+ { (ExifTag)ExifTag.SensingMethod },
+ { (ExifTag)ExifTag.CustomRendered },
+ { (ExifTag)ExifTag.ExposureMode },
+ { (ExifTag)ExifTag.WhiteBalance },
+ { (ExifTag)ExifTag.FocalLengthIn35mmFilm },
+ { (ExifTag)ExifTag.SceneCaptureType },
+ { (ExifTag)ExifTag.GainControl },
+ { (ExifTag)ExifTag.Contrast },
+ { (ExifTag)ExifTag.Saturation },
+ { (ExifTag)ExifTag.Sharpness },
+ { (ExifTag)ExifTag.SubjectDistanceRange },
+ { (ExifTag)ExifTag.GPSDifferential }
};
public static TheoryData ShortArrayTags => new()
{
- { ExifTag.BitsPerSample },
- { ExifTag.MinSampleValue },
- { ExifTag.MaxSampleValue },
- { ExifTag.GrayResponseCurve },
- { ExifTag.ColorMap },
- { ExifTag.ExtraSamples },
- { ExifTag.PageNumber },
- { ExifTag.TransferFunction },
- { ExifTag.HalftoneHints },
- { ExifTag.SampleFormat },
- { ExifTag.TransferRange },
- { ExifTag.DefaultImageColor },
- { ExifTag.JPEGLosslessPredictors },
- { ExifTag.JPEGPointTransforms },
- { ExifTag.YCbCrSubsampling },
- { ExifTag.CFARepeatPatternDim },
- { ExifTag.IntergraphPacketData },
- { ExifTag.ISOSpeedRatings },
- { ExifTag.SubjectArea },
- { ExifTag.SubjectLocation }
+ { (ExifTag)ExifTag.BitsPerSample },
+ { (ExifTag)ExifTag.MinSampleValue },
+ { (ExifTag)ExifTag.MaxSampleValue },
+ { (ExifTag)ExifTag.GrayResponseCurve },
+ { (ExifTag)ExifTag.ColorMap },
+ { (ExifTag)ExifTag.ExtraSamples },
+ { (ExifTag)ExifTag.PageNumber },
+ { (ExifTag)ExifTag.TransferFunction },
+ { (ExifTag)ExifTag.HalftoneHints },
+ { (ExifTag)ExifTag.SampleFormat },
+ { (ExifTag)ExifTag.TransferRange },
+ { (ExifTag)ExifTag.DefaultImageColor },
+ { (ExifTag)ExifTag.JPEGLosslessPredictors },
+ { (ExifTag)ExifTag.JPEGPointTransforms },
+ { (ExifTag)ExifTag.YCbCrSubsampling },
+ { (ExifTag)ExifTag.CFARepeatPatternDim },
+ { (ExifTag)ExifTag.IntergraphPacketData },
+ { (ExifTag)ExifTag.ISOSpeedRatings },
+ { (ExifTag)ExifTag.SubjectArea },
+ { (ExifTag)ExifTag.SubjectLocation }
};
public static TheoryData SignedRationalTags => new()
{
- { ExifTag.ShutterSpeedValue },
- { ExifTag.BrightnessValue },
- { ExifTag.ExposureBiasValue },
- { ExifTag.AmbientTemperature },
- { ExifTag.WaterDepth },
- { ExifTag.CameraElevationAngle }
+ { (ExifTag)ExifTag.ShutterSpeedValue },
+ { (ExifTag)ExifTag.BrightnessValue },
+ { (ExifTag)ExifTag.ExposureBiasValue },
+ { (ExifTag)ExifTag.AmbientTemperature },
+ { (ExifTag)ExifTag.WaterDepth },
+ { (ExifTag)ExifTag.CameraElevationAngle }
};
public static TheoryData SignedRationalArrayTags => new()
{
- { ExifTag.Decode }
+ { (ExifTag)ExifTag.Decode }
};
public static TheoryData SignedShortArrayTags => new()
{
- { ExifTag.TimeZoneOffset }
+ { (ExifTag)ExifTag.TimeZoneOffset }
};
public static TheoryData StringTags => new()
{
- { ExifTag.ImageDescription },
- { ExifTag.Make },
- { ExifTag.Model },
- { ExifTag.Software },
- { ExifTag.DateTime },
- { ExifTag.Artist },
- { ExifTag.HostComputer },
- { ExifTag.Copyright },
- { ExifTag.DocumentName },
- { ExifTag.PageName },
- { ExifTag.InkNames },
- { ExifTag.TargetPrinter },
- { ExifTag.ImageID },
- { ExifTag.MDLabName },
- { ExifTag.MDSampleInfo },
- { ExifTag.MDPrepDate },
- { ExifTag.MDPrepTime },
- { ExifTag.MDFileUnits },
- { ExifTag.SEMInfo },
- { ExifTag.SpectralSensitivity },
- { ExifTag.DateTimeOriginal },
- { ExifTag.DateTimeDigitized },
- { ExifTag.SubsecTime },
- { ExifTag.SubsecTimeOriginal },
- { ExifTag.SubsecTimeDigitized },
- { ExifTag.RelatedSoundFile },
- { ExifTag.FaxSubaddress },
- { ExifTag.OffsetTime },
- { ExifTag.OffsetTimeOriginal },
- { ExifTag.OffsetTimeDigitized },
- { ExifTag.SecurityClassification },
- { ExifTag.ImageHistory },
- { ExifTag.ImageUniqueID },
- { ExifTag.OwnerName },
- { ExifTag.SerialNumber },
- { ExifTag.LensMake },
- { ExifTag.LensModel },
- { ExifTag.LensSerialNumber },
- { ExifTag.GDALMetadata },
- { ExifTag.GDALNoData },
- { ExifTag.GPSLatitudeRef },
- { ExifTag.GPSLongitudeRef },
- { ExifTag.GPSSatellites },
- { ExifTag.GPSStatus },
- { ExifTag.GPSMeasureMode },
- { ExifTag.GPSSpeedRef },
- { ExifTag.GPSTrackRef },
- { ExifTag.GPSImgDirectionRef },
- { ExifTag.GPSMapDatum },
- { ExifTag.GPSDestLatitudeRef },
- { ExifTag.GPSDestLongitudeRef },
- { ExifTag.GPSDestBearingRef },
- { ExifTag.GPSDestDistanceRef },
- { ExifTag.GPSDateStamp },
+ { (ExifTag)ExifTag.ImageDescription },
+ { (ExifTag)ExifTag.Make },
+ { (ExifTag)ExifTag.Model },
+ { (ExifTag)ExifTag.Software },
+ { (ExifTag)ExifTag.DateTime },
+ { (ExifTag)ExifTag.Artist },
+ { (ExifTag)ExifTag.HostComputer },
+ { (ExifTag)ExifTag.Copyright },
+ { (ExifTag)ExifTag.DocumentName },
+ { (ExifTag)ExifTag.PageName },
+ { (ExifTag)ExifTag.InkNames },
+ { (ExifTag)ExifTag.TargetPrinter },
+ { (ExifTag)ExifTag.ImageID },
+ { (ExifTag)ExifTag.MDLabName },
+ { (ExifTag)ExifTag.MDSampleInfo },
+ { (ExifTag)ExifTag.MDPrepDate },
+ { (ExifTag)ExifTag.MDPrepTime },
+ { (ExifTag)ExifTag.MDFileUnits },
+ { (ExifTag)ExifTag.SEMInfo },
+ { (ExifTag)ExifTag.SpectralSensitivity },
+ { (ExifTag)ExifTag.DateTimeOriginal },
+ { (ExifTag)ExifTag.DateTimeDigitized },
+ { (ExifTag)ExifTag.SubsecTime },
+ { (ExifTag)ExifTag.SubsecTimeOriginal },
+ { (ExifTag)ExifTag.SubsecTimeDigitized },
+ { (ExifTag)ExifTag.RelatedSoundFile },
+ { (ExifTag)ExifTag.FaxSubaddress },
+ { (ExifTag)ExifTag.OffsetTime },
+ { (ExifTag)ExifTag.OffsetTimeOriginal },
+ { (ExifTag)ExifTag.OffsetTimeDigitized },
+ { (ExifTag)ExifTag.SecurityClassification },
+ { (ExifTag)ExifTag.ImageHistory },
+ { (ExifTag)ExifTag.ImageUniqueID },
+ { (ExifTag)ExifTag.OwnerName },
+ { (ExifTag)ExifTag.SerialNumber },
+ { (ExifTag)ExifTag.LensMake },
+ { (ExifTag)ExifTag.LensModel },
+ { (ExifTag)ExifTag.LensSerialNumber },
+ { (ExifTag)ExifTag.GDALMetadata },
+ { (ExifTag)ExifTag.GDALNoData },
+ { (ExifTag)ExifTag.GPSLatitudeRef },
+ { (ExifTag)ExifTag.GPSLongitudeRef },
+ { (ExifTag)ExifTag.GPSSatellites },
+ { (ExifTag)ExifTag.GPSStatus },
+ { (ExifTag)ExifTag.GPSMeasureMode },
+ { (ExifTag)ExifTag.GPSSpeedRef },
+ { (ExifTag)ExifTag.GPSTrackRef },
+ { (ExifTag)ExifTag.GPSImgDirectionRef },
+ { (ExifTag)ExifTag.GPSMapDatum },
+ { (ExifTag)ExifTag.GPSDestLatitudeRef },
+ { (ExifTag)ExifTag.GPSDestLongitudeRef },
+ { (ExifTag)ExifTag.GPSDestBearingRef },
+ { (ExifTag)ExifTag.GPSDestDistanceRef },
+ { (ExifTag)ExifTag.GPSDateStamp },
};
public static TheoryData UndefinedTags => new()
{
- { ExifTag.FileSource },
- { ExifTag.SceneType }
+ { (ExifTag)ExifTag.FileSource },
+ { (ExifTag)ExifTag.SceneType }
};
public static TheoryData UndefinedArrayTags => new()
{
- { ExifTag.JPEGTables },
- { ExifTag.OECF },
- { ExifTag.ExifVersion },
- { ExifTag.ComponentsConfiguration },
- { ExifTag.MakerNote },
- { ExifTag.FlashpixVersion },
- { ExifTag.SpatialFrequencyResponse },
- { ExifTag.SpatialFrequencyResponse2 },
- { ExifTag.Noise },
- { ExifTag.CFAPattern },
- { ExifTag.DeviceSettingDescription },
- { ExifTag.ImageSourceData },
+ { (ExifTag)ExifTag.JPEGTables },
+ { (ExifTag)ExifTag.OECF },
+ { (ExifTag)ExifTag.ExifVersion },
+ { (ExifTag)ExifTag.ComponentsConfiguration },
+ { (ExifTag)ExifTag.MakerNote },
+ { (ExifTag)ExifTag.FlashpixVersion },
+ { (ExifTag)ExifTag.SpatialFrequencyResponse },
+ { (ExifTag)ExifTag.SpatialFrequencyResponse2 },
+ { (ExifTag)ExifTag.Noise },
+ { (ExifTag)ExifTag.CFAPattern },
+ { (ExifTag)ExifTag.DeviceSettingDescription },
+ { (ExifTag)ExifTag.ImageSourceData },
};
public static TheoryData EncodedStringTags => new()
{
- { ExifTag.UserComment },
- { ExifTag.GPSProcessingMethod },
- { ExifTag.GPSAreaInformation }
+ { (ExifTag)ExifTag.UserComment },
+ { (ExifTag)ExifTag.GPSProcessingMethod },
+ { (ExifTag)ExifTag.GPSAreaInformation }
};
public static TheoryData Ucs2StringTags => new()
{
- { ExifTag.XPTitle },
- { ExifTag.XPComment },
- { ExifTag.XPAuthor },
- { ExifTag.XPKeywords },
- { ExifTag.XPSubject },
+ { (ExifTag)ExifTag.XPTitle },
+ { (ExifTag)ExifTag.XPComment },
+ { (ExifTag)ExifTag.XPAuthor },
+ { (ExifTag)ExifTag.XPKeywords },
+ { (ExifTag)ExifTag.XPSubject },
};
[Theory]
diff --git a/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs b/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs
index 1ca865ef41..d5c7760617 100644
--- a/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs
@@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats;
public class L8Tests
{
public static readonly TheoryData LuminanceData
- = new() { 0, 1, 2, 3, 5, 13, 31, 71, 73, 79, 83, 109, 127, 128, 131, 199, 250, 251, 254, 255 };
+ = new() { (byte)0, (byte)1, (byte)2, (byte)3, (byte)5, (byte)13, (byte)31, (byte)71, (byte)73, (byte)79, (byte)83, (byte)109, (byte)127, (byte)128, (byte)131, (byte)199, (byte)250, (byte)251, (byte)254, (byte)255 };
[Theory]
[InlineData(0)]
diff --git a/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs b/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs
index f6cbfc4426..735c4f9159 100644
--- a/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs
@@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats;
public class La16Tests
{
public static readonly TheoryData LuminanceData
- = new() { 0, 1, 2, 3, 5, 13, 31, 71, 73, 79, 83, 109, 127, 128, 131, 199, 250, 251, 254, 255 };
+ = new() { (byte)0, (byte)1, (byte)2, (byte)3, (byte)5, (byte)13, (byte)31, (byte)71, (byte)73, (byte)79, (byte)83, (byte)109, (byte)127, (byte)128, (byte)131, (byte)199, (byte)250, (byte)251, (byte)254, (byte)255 };
[Theory]
[InlineData(0, 0)]
diff --git a/tests/ImageSharp.Tests/PixelFormats/PixelOperations/Generated/PixelOperationsTests.Specialized.Generated.cs b/tests/ImageSharp.Tests/PixelFormats/PixelOperations/Generated/PixelOperationsTests.Specialized.Generated.cs
index b372829270..e91f96b8e4 100644
--- a/tests/ImageSharp.Tests/PixelFormats/PixelOperations/Generated/PixelOperationsTests.Specialized.Generated.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/PixelOperations/Generated/PixelOperationsTests.Specialized.Generated.cs
@@ -5,7 +5,6 @@
using SixLabors.ImageSharp.PixelFormats;
using Xunit;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations;
diff --git a/tests/ImageSharp.Tests/PixelFormats/PixelOperations/PixelOperationsTests.cs b/tests/ImageSharp.Tests/PixelFormats/PixelOperations/PixelOperationsTests.cs
index 32b62fc03d..b701d4d0ac 100644
--- a/tests/ImageSharp.Tests/PixelFormats/PixelOperations/PixelOperationsTests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/PixelOperations/PixelOperationsTests.cs
@@ -10,7 +10,6 @@
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Common;
using SixLabors.ImageSharp.Tests.TestUtilities;
-using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations;
@@ -315,35 +314,35 @@ public void ToVector4(int count)
public static readonly TheoryData