Browse Source

Migrate tests from xUnit v2 to xUnit.v3 3.2.2

Breaking changes addressed:
- Update xunit.v3 to 3.2.2 and xunit.runner.visualstudio to 3.1.5
- Remove Microsoft.DotNet.XUnitExtensions (conflicts with xunit.v3 via xunit.core v2)
- Replace ConditionalFact/ConditionalTheory with Fact/Theory SkipUnless/SkipWhen/SkipType
- Remove 'using Xunit.Abstractions' (ITestOutputHelper now in Xunit namespace globally)
- Fix TestFrameworkAttribute: string args → typeof(T) form
- Fix XunitTestFramework ctor: no longer takes IMessageSink
- Fix BeforeAfterTestAttribute Before/After: added IXunitTest parameter, use Xunit.v3 ns
- Fix DataAttribute: new GetData signature (DisposalTracker), add SupportsDiscoveryEnumeration()
- Fix IXunitSerializable/IXunitSerializationInfo: add 'using Xunit.Sdk' to all consumers
- Fix BasicSerializer: implement new IXunitSerializationInfo.GetValue(string) returning object?
  Store type info in dump format (key:TypeAQN:value) to enable typed reconstruction
- Fix TheoryData<T> CS0121 ambiguity on C# 12/net8.0: add explicit casts (T)value
  Affects ExifValuesTests, PixelOperationsTests, QuantizerTests, DitherTests,
  TestImageProviderTests, RotateTests, L8Tests, La16Tests
- Fix PngEncoderTests: TheoryData<T> now yields TheoryDataRow<T>, not object[]
pull/2854/head
Stefan Nikolei 2 months ago
parent
commit
67a94113e4
  1. 1
      tests/Directory.Build.targets
  2. 1
      tests/ImageSharp.Tests.ProfilingSandbox/Program.cs
  3. 1
      tests/ImageSharp.Tests/ColorProfiles/Icc/ColorProfileConverterTests.Icc.cs
  4. 1
      tests/ImageSharp.Tests/Common/NumericsTests.cs
  5. 1
      tests/ImageSharp.Tests/Common/SimdUtilsTests.cs
  6. 1
      tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs
  7. 1
      tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs
  8. 1
      tests/ImageSharp.Tests/Formats/Jpg/DCTTests.cs
  9. 1
      tests/ImageSharp.Tests/Formats/Jpg/HuffmanScanEncoderTests.cs
  10. 1
      tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs
  11. 1
      tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
  12. 1
      tests/ImageSharp.Tests/Formats/Jpg/ParseStreamTests.cs
  13. 1
      tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.AccurateDCT.cs
  14. 1
      tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs
  15. 1
      tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.StandardIntegerDCT.cs
  16. 1
      tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.cs
  17. 1
      tests/ImageSharp.Tests/Formats/Jpg/SpectralJpegTests.cs
  18. 1
      tests/ImageSharp.Tests/Formats/Jpg/SpectralToPixelConversionTests.cs
  19. 1
      tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs
  20. 1
      tests/ImageSharp.Tests/Formats/Jpg/Utils/ReferenceImplementations.LLM_FloatingPoint_DCT.cs
  21. 1
      tests/ImageSharp.Tests/Formats/Jpg/Utils/VerifyJpeg.cs
  22. 1
      tests/ImageSharp.Tests/Formats/Png/PngEncoderFilterTests.cs
  23. 8
      tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs
  24. 1
      tests/ImageSharp.Tests/Helpers/ParallelRowIteratorTests.cs
  25. 2
      tests/ImageSharp.Tests/Image/ImageTests.Decode_Cancellation.cs
  26. 1
      tests/ImageSharp.Tests/ImageSharp.Tests.csproj
  27. 2
      tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.Trim.cs
  28. 3
      tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.cs
  29. 2
      tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedPoolMemoryAllocatorTests.cs
  30. 502
      tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs
  31. 2
      tests/ImageSharp.Tests/PixelFormats/L8Tests.cs
  32. 2
      tests/ImageSharp.Tests/PixelFormats/La16Tests.cs
  33. 1
      tests/ImageSharp.Tests/PixelFormats/PixelOperations/Generated/PixelOperationsTests.Specialized.Generated.cs
  34. 59
      tests/ImageSharp.Tests/PixelFormats/PixelOperations/PixelOperationsTests.cs
  35. 2
      tests/ImageSharp.Tests/Processing/Processors/Convolution/BokehBlurTest.cs
  36. 4
      tests/ImageSharp.Tests/Processing/Processors/Dithering/DitherTests.cs
  37. 126
      tests/ImageSharp.Tests/Processing/Processors/Quantization/QuantizerTests.cs
  38. 1
      tests/ImageSharp.Tests/Processing/Processors/Transforms/AffineTransformTests.cs
  39. 1
      tests/ImageSharp.Tests/Processing/Processors/Transforms/ProjectiveTransformTests.cs
  40. 1
      tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeKernelMapTests.cs
  41. 2
      tests/ImageSharp.Tests/Processing/Processors/Transforms/RotateTests.cs
  42. 1
      tests/ImageSharp.Tests/ProfilingBenchmarks/LoadResizeSaveProfilingBenchmarks.cs
  43. 1
      tests/ImageSharp.Tests/ProfilingBenchmarks/ResizeProfilingBenchmarks.cs
  44. 14
      tests/ImageSharp.Tests/TestUtilities/Attributes/ImageDataAttributeBase.cs
  45. 44
      tests/ImageSharp.Tests/TestUtilities/BasicSerializer.cs
  46. 2
      tests/ImageSharp.Tests/TestUtilities/FeatureTesting/FeatureTestRunner.cs
  47. 2
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/BasicTestPatternProvider.cs
  48. 2
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/BlankProvider.cs
  49. 2
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/FileProvider.cs
  50. 2
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/MemberMethodProvider.cs
  51. 2
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/SolidProvider.cs
  52. 2
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/TestImageProvider.cs
  53. 2
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/TestPatternProvider.cs
  54. 1
      tests/ImageSharp.Tests/TestUtilities/MeasureFixture.cs
  55. 14
      tests/ImageSharp.Tests/TestUtilities/SixLaborsXunitTestFramework.cs
  56. 2
      tests/ImageSharp.Tests/TestUtilities/TestPixel.cs
  57. 3
      tests/ImageSharp.Tests/TestUtilities/TestType.cs
  58. 2
      tests/ImageSharp.Tests/TestUtilities/TestVector4.cs
  59. 2
      tests/ImageSharp.Tests/TestUtilities/Tests/BasicSerializerTests.cs
  60. 2
      tests/ImageSharp.Tests/TestUtilities/Tests/FeatureTestRunnerTests.cs
  61. 1
      tests/ImageSharp.Tests/TestUtilities/Tests/ImageComparerTests.cs
  62. 1
      tests/ImageSharp.Tests/TestUtilities/Tests/MagickReferenceCodecTests.cs
  63. 1
      tests/ImageSharp.Tests/TestUtilities/Tests/ReferenceDecoderBenchmarks.cs
  64. 1
      tests/ImageSharp.Tests/TestUtilities/Tests/SystemDrawingReferenceCodecTests.cs
  65. 3
      tests/ImageSharp.Tests/TestUtilities/Tests/TestEnvironmentTests.cs
  66. 9
      tests/ImageSharp.Tests/TestUtilities/Tests/TestImageProviderTests.cs
  67. 1
      tests/ImageSharp.Tests/TestUtilities/Tests/TestUtilityExtensionsTests.cs
  68. 6
      tests/ImageSharp.Tests/ValidateDisposedMemoryAllocationsAttribute.cs

1
tests/Directory.Build.targets

@ -21,7 +21,6 @@
<PackageReference Update="Colourful" Version="3.2.0" /> <PackageReference Update="Colourful" Version="3.2.0" />
<PackageReference Update="Magick.NET-Q16-AnyCPU" Version="14.11.1" /> <PackageReference Update="Magick.NET-Q16-AnyCPU" Version="14.11.1" />
<PackageReference Update="Microsoft.DotNet.RemoteExecutor" Version="10.0.0-beta.25563.105" /> <PackageReference Update="Microsoft.DotNet.RemoteExecutor" Version="10.0.0-beta.25563.105" />
<PackageReference Update="Microsoft.DotNet.XUnitExtensions" Version="8.0.0-beta.23580.1" />
<PackageReference Update="Moq" Version="4.20.72" /> <PackageReference Update="Moq" Version="4.20.72" />
<PackageReference Update="NetVips" Version="3.0.0" /> <PackageReference Update="NetVips" Version="3.0.0" />
<PackageReference Update="NetVips.Native" Version="8.16.0" /> <PackageReference Update="NetVips.Native" Version="8.16.0" />

1
tests/ImageSharp.Tests.ProfilingSandbox/Program.cs

@ -4,7 +4,6 @@
using SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations; using SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations;
using SixLabors.ImageSharp.Tests.ProfilingBenchmarks; using SixLabors.ImageSharp.Tests.ProfilingBenchmarks;
using SixLabors.ImageSharp.Tests.ProfilingSandbox; using SixLabors.ImageSharp.Tests.ProfilingSandbox;
using Xunit.Abstractions;
// in this file, comments are used for disabling stuff for local execution // in this file, comments are used for disabling stuff for local execution
#pragma warning disable SA1515 #pragma warning disable SA1515

1
tests/ImageSharp.Tests/ColorProfiles/Icc/ColorProfileConverterTests.Icc.cs

@ -6,7 +6,6 @@ using SixLabors.ImageSharp.ColorProfiles;
using SixLabors.ImageSharp.Metadata.Profiles.Icc; using SixLabors.ImageSharp.Metadata.Profiles.Icc;
using Wacton.Unicolour; using Wacton.Unicolour;
using Wacton.Unicolour.Icc; using Wacton.Unicolour.Icc;
using Xunit.Abstractions;
using Rgb = SixLabors.ImageSharp.ColorProfiles.Rgb; using Rgb = SixLabors.ImageSharp.ColorProfiles.Rgb;
namespace SixLabors.ImageSharp.Tests.ColorProfiles.Icc; namespace SixLabors.ImageSharp.Tests.ColorProfiles.Icc;

1
tests/ImageSharp.Tests/Common/NumericsTests.cs

@ -1,7 +1,6 @@
// Copyright (c) Six Labors. // Copyright (c) Six Labors.
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Common; namespace SixLabors.ImageSharp.Tests.Common;

1
tests/ImageSharp.Tests/Common/SimdUtilsTests.cs

@ -7,7 +7,6 @@ using System.Runtime.Intrinsics.Arm;
using System.Runtime.Intrinsics.X86; using System.Runtime.Intrinsics.X86;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Common; namespace SixLabors.ImageSharp.Tests.Common;

1
tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs

@ -7,7 +7,6 @@ using System.Runtime.Intrinsics;
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs

@ -4,7 +4,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/DCTTests.cs

@ -4,7 +4,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/HuffmanScanEncoderTests.cs

@ -2,7 +2,6 @@
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder; using SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs

@ -6,7 +6,6 @@ using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Tests.ColorProfiles; using SixLabors.ImageSharp.Tests.ColorProfiles;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs

@ -9,7 +9,6 @@ using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/ParseStreamTests.cs

@ -6,7 +6,6 @@ using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder; using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.AccurateDCT.cs

@ -3,7 +3,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs

@ -4,7 +4,6 @@
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.StandardIntegerDCT.cs

@ -3,7 +3,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.cs

@ -1,7 +1,6 @@
// Copyright (c) Six Labors. // Copyright (c) Six Labors.
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/SpectralJpegTests.cs

@ -9,7 +9,6 @@ using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Metadata.Profiles.Icc; using SixLabors.ImageSharp.Metadata.Profiles.Icc;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/SpectralToPixelConversionTests.cs

@ -7,7 +7,6 @@ using SixLabors.ImageSharp.IO;
using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.Metadata;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg; namespace SixLabors.ImageSharp.Tests.Formats.Jpg;

1
tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs

@ -6,7 +6,6 @@ using System.Text;
using SixLabors.ImageSharp.Formats.Jpeg; using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;

1
tests/ImageSharp.Tests/Formats/Jpg/Utils/ReferenceImplementations.LLM_FloatingPoint_DCT.cs

@ -5,7 +5,6 @@ using System.Numerics;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;

1
tests/ImageSharp.Tests/Formats/Jpg/Utils/VerifyJpeg.cs

@ -3,7 +3,6 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder; using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;

1
tests/ImageSharp.Tests/Formats/Png/PngEncoderFilterTests.cs

@ -6,7 +6,6 @@
using SixLabors.ImageSharp.Formats.Png; using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.Formats.Png.Filters; using SixLabors.ImageSharp.Formats.Png.Filters;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Png; namespace SixLabors.ImageSharp.Tests.Formats.Png;

8
tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs

@ -200,14 +200,14 @@ public partial class PngEncoderTests
return; return;
} }
foreach (object[] filterMethod in PngFilterMethods) foreach (TheoryDataRow<PngFilterMethod> filterMethod in PngFilterMethods)
{ {
foreach (PngInterlaceMode interlaceMode in InterlaceMode) foreach (PngInterlaceMode interlaceMode in InterlaceMode)
{ {
TestPngEncoderCore( TestPngEncoderCore(
provider, provider,
pngColorType, pngColorType,
(PngFilterMethod)filterMethod[0], filterMethod.Data,
pngBitDepth, pngBitDepth,
interlaceMode, interlaceMode,
appendPngColorType: true, appendPngColorType: true,
@ -236,14 +236,14 @@ public partial class PngEncoderTests
public void WorksWithAllBitDepthsAndExcludeAllFilter<TPixel>(TestImageProvider<TPixel> provider, PngColorType pngColorType, PngBitDepth pngBitDepth) public void WorksWithAllBitDepthsAndExcludeAllFilter<TPixel>(TestImageProvider<TPixel> provider, PngColorType pngColorType, PngBitDepth pngBitDepth)
where TPixel : unmanaged, IPixel<TPixel> where TPixel : unmanaged, IPixel<TPixel>
{ {
foreach (object[] filterMethod in PngFilterMethods) foreach (TheoryDataRow<PngFilterMethod> filterMethod in PngFilterMethods)
{ {
foreach (PngInterlaceMode interlaceMode in InterlaceMode) foreach (PngInterlaceMode interlaceMode in InterlaceMode)
{ {
TestPngEncoderCore( TestPngEncoderCore(
provider, provider,
pngColorType, pngColorType,
(PngFilterMethod)filterMethod[0], filterMethod.Data,
pngBitDepth, pngBitDepth,
interlaceMode, interlaceMode,
appendPngColorType: true, appendPngColorType: true,

1
tests/ImageSharp.Tests/Helpers/ParallelRowIteratorTests.cs

@ -7,7 +7,6 @@ using Castle.Core.Configuration;
using SixLabors.ImageSharp.Advanced; using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Helpers; namespace SixLabors.ImageSharp.Tests.Helpers;

2
tests/ImageSharp.Tests/Image/ImageTests.Decode_Cancellation.cs

@ -58,7 +58,7 @@ public partial class ImageTests
public static TheoryData<bool, string, double> LoadData { get; } = CreateLoadData(); public static TheoryData<bool, string, double> LoadData { get; } = CreateLoadData();
// TODO: Figure out cancellation failures on Linux // TODO: Figure out cancellation failures on Linux
[ConditionalTheory(typeof(TestEnvironment), nameof(TestEnvironment.IsWindows))] [Theory(SkipType = typeof(TestEnvironment), SkipUnless = nameof(TestEnvironment.IsWindows))]
[MemberData(nameof(LoadData))] [MemberData(nameof(LoadData))]
public async Task LoadAsync_IsCancellable(bool useMemoryStream, string file, double percentageOfStreamReadToCancel) public async Task LoadAsync_IsCancellable(bool useMemoryStream, string file, double percentageOfStreamReadToCancel)
{ {

1
tests/ImageSharp.Tests/ImageSharp.Tests.csproj

@ -45,7 +45,6 @@
<PackageReference Include="BenchmarkDotNet" Version="0.13.0" /> <PackageReference Include="BenchmarkDotNet" Version="0.13.0" />
<PackageReference Include="Magick.NET-Q16-AnyCPU" /> <PackageReference Include="Magick.NET-Q16-AnyCPU" />
<PackageReference Include="Microsoft.DotNet.RemoteExecutor" /> <PackageReference Include="Microsoft.DotNet.RemoteExecutor" />
<PackageReference Include="Microsoft.DotNet.XUnitExtensions" />
<PackageReference Include="Moq" /> <PackageReference Include="Moq" />
<PackageReference Include="runtime.osx.10.10-x64.CoreCompat.System.Drawing" Condition="'$(IsOSX)'=='true'" /> <PackageReference Include="runtime.osx.10.10-x64.CoreCompat.System.Drawing" Condition="'$(IsOSX)'=='true'" />
<PackageReference Include="SharpZipLib" /> <PackageReference Include="SharpZipLib" />

2
tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.Trim.cs

@ -57,7 +57,7 @@ public partial class UniformUnmanagedMemoryPoolTests
// TODO: Investigate failures on macOS. All handles are released after GC. // TODO: Investigate failures on macOS. All handles are released after GC.
// (It seems to happen more consistently on .NET 6.) // (It seems to happen more consistently on .NET 6.)
[ConditionalFact(nameof(IsNotMacOS))] [Fact(SkipUnless = nameof(IsNotMacOS))]
public void MultiplePoolInstances_TrimPeriodElapsed_AllAreTrimmed() public void MultiplePoolInstances_TrimPeriodElapsed_AllAreTrimmed()
{ {
if (!TestEnvironment.RunsOnCI) if (!TestEnvironment.RunsOnCI)

3
tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedMemoryPoolTests.cs

@ -5,7 +5,6 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Microsoft.DotNet.RemoteExecutor; using Microsoft.DotNet.RemoteExecutor;
using SixLabors.ImageSharp.Memory.Internals; using SixLabors.ImageSharp.Memory.Internals;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Memory.Allocators; namespace SixLabors.ImageSharp.Tests.Memory.Allocators;
@ -241,7 +240,7 @@ public partial class UniformUnmanagedMemoryPoolTests
public static readonly bool IsNotMacOS = !TestEnvironment.IsMacOS; public static readonly bool IsNotMacOS = !TestEnvironment.IsMacOS;
// TODO: Investigate macOS failures // TODO: Investigate macOS failures
[ConditionalTheory(nameof(IsNotMacOS))] [Theory(SkipUnless = nameof(IsNotMacOS))]
[InlineData(false)] [InlineData(false)]
[InlineData(true)] [InlineData(true)]
public void RentReturnRelease_SubsequentRentReturnsDifferentHandles(bool multiple) public void RentReturnRelease_SubsequentRentReturnsDifferentHandles(bool multiple)

2
tests/ImageSharp.Tests/Memory/Allocators/UniformUnmanagedPoolMemoryAllocatorTests.cs

@ -584,7 +584,7 @@ public class UniformUnmanagedPoolMemoryAllocatorTests
} }
} }
[ConditionalFact(typeof(Environment), nameof(Environment.Is64BitProcess))] [Fact(SkipType = typeof(Environment), SkipUnless = nameof(Environment.Is64BitProcess))]
public void MemoryAllocator_Create_SetHighLimit() public void MemoryAllocator_Create_SetHighLimit()
{ {
RemoteExecutor.Invoke(RunTest).Dispose(); RemoteExecutor.Invoke(RunTest).Dispose();

502
tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs

@ -11,329 +11,329 @@ public class ExifValuesTests
{ {
public static TheoryData<ExifTag> ByteTags => new() public static TheoryData<ExifTag> ByteTags => new()
{ {
{ ExifTag.FaxProfile }, { (ExifTag)ExifTag.FaxProfile },
{ ExifTag.ModeNumber }, { (ExifTag)ExifTag.ModeNumber },
{ ExifTag.GPSAltitudeRef } { (ExifTag)ExifTag.GPSAltitudeRef }
}; };
public static TheoryData<ExifTag> ByteArrayTags => new() public static TheoryData<ExifTag> ByteArrayTags => new()
{ {
{ ExifTag.ClipPath }, { (ExifTag)ExifTag.ClipPath },
{ ExifTag.VersionYear }, { (ExifTag)ExifTag.VersionYear },
{ ExifTag.XMP }, { (ExifTag)ExifTag.XMP },
{ ExifTag.CFAPattern2 }, { (ExifTag)ExifTag.CFAPattern2 },
{ ExifTag.TIFFEPStandardID }, { (ExifTag)ExifTag.TIFFEPStandardID },
{ ExifTag.GPSVersionID }, { (ExifTag)ExifTag.GPSVersionID },
}; };
public static TheoryData<ExifTag> DoubleArrayTags => new() public static TheoryData<ExifTag> DoubleArrayTags => new()
{ {
{ ExifTag.PixelScale }, { (ExifTag)ExifTag.PixelScale },
{ ExifTag.IntergraphMatrix }, { (ExifTag)ExifTag.IntergraphMatrix },
{ ExifTag.ModelTiePoint }, { (ExifTag)ExifTag.ModelTiePoint },
{ ExifTag.ModelTransform } { (ExifTag)ExifTag.ModelTransform }
}; };
public static TheoryData<ExifTag> LongTags => new() public static TheoryData<ExifTag> LongTags => new()
{ {
{ ExifTag.SubfileType }, { (ExifTag)ExifTag.SubfileType },
{ ExifTag.SubIFDOffset }, { (ExifTag)ExifTag.SubIFDOffset },
{ ExifTag.GPSIFDOffset }, { (ExifTag)ExifTag.GPSIFDOffset },
{ ExifTag.T4Options }, { (ExifTag)ExifTag.T4Options },
{ ExifTag.T6Options }, { (ExifTag)ExifTag.T6Options },
{ ExifTag.XClipPathUnits }, { (ExifTag)ExifTag.XClipPathUnits },
{ ExifTag.YClipPathUnits }, { (ExifTag)ExifTag.YClipPathUnits },
{ ExifTag.ProfileType }, { (ExifTag)ExifTag.ProfileType },
{ ExifTag.CodingMethods }, { (ExifTag)ExifTag.CodingMethods },
{ ExifTag.T82ptions }, { (ExifTag)ExifTag.T82ptions },
{ ExifTag.JPEGInterchangeFormat }, { (ExifTag)ExifTag.JPEGInterchangeFormat },
{ ExifTag.JPEGInterchangeFormatLength }, { (ExifTag)ExifTag.JPEGInterchangeFormatLength },
{ ExifTag.MDFileTag }, { (ExifTag)ExifTag.MDFileTag },
{ ExifTag.StandardOutputSensitivity }, { (ExifTag)ExifTag.StandardOutputSensitivity },
{ ExifTag.RecommendedExposureIndex }, { (ExifTag)ExifTag.RecommendedExposureIndex },
{ ExifTag.ISOSpeed }, { (ExifTag)ExifTag.ISOSpeed },
{ ExifTag.ISOSpeedLatitudeyyy }, { (ExifTag)ExifTag.ISOSpeedLatitudeyyy },
{ ExifTag.ISOSpeedLatitudezzz }, { (ExifTag)ExifTag.ISOSpeedLatitudezzz },
{ ExifTag.FaxRecvParams }, { (ExifTag)ExifTag.FaxRecvParams },
{ ExifTag.FaxRecvTime }, { (ExifTag)ExifTag.FaxRecvTime },
{ ExifTag.ImageNumber }, { (ExifTag)ExifTag.ImageNumber },
}; };
public static TheoryData<ExifTag> LongArrayTags => new() public static TheoryData<ExifTag> LongArrayTags => new()
{ {
{ ExifTag.FreeOffsets }, { (ExifTag)ExifTag.FreeOffsets },
{ ExifTag.FreeByteCounts }, { (ExifTag)ExifTag.FreeByteCounts },
{ ExifTag.ColorResponseUnit }, { (ExifTag)ExifTag.ColorResponseUnit },
{ ExifTag.SMinSampleValue }, { (ExifTag)ExifTag.SMinSampleValue },
{ ExifTag.SMaxSampleValue }, { (ExifTag)ExifTag.SMaxSampleValue },
{ ExifTag.JPEGQTables }, { (ExifTag)ExifTag.JPEGQTables },
{ ExifTag.JPEGDCTables }, { (ExifTag)ExifTag.JPEGDCTables },
{ ExifTag.JPEGACTables }, { (ExifTag)ExifTag.JPEGACTables },
{ ExifTag.StripRowCounts }, { (ExifTag)ExifTag.StripRowCounts },
{ ExifTag.IntergraphRegisters } { (ExifTag)ExifTag.IntergraphRegisters }
}; };
public static TheoryData<ExifTag> NumberTags => new() public static TheoryData<ExifTag> NumberTags => new()
{ {
{ ExifTag.ImageWidth }, { (ExifTag)ExifTag.ImageWidth },
{ ExifTag.ImageLength }, { (ExifTag)ExifTag.ImageLength },
{ ExifTag.TileWidth }, { (ExifTag)ExifTag.TileWidth },
{ ExifTag.TileLength }, { (ExifTag)ExifTag.TileLength },
{ ExifTag.BadFaxLines }, { (ExifTag)ExifTag.BadFaxLines },
{ ExifTag.ConsecutiveBadFaxLines }, { (ExifTag)ExifTag.ConsecutiveBadFaxLines },
{ ExifTag.PixelXDimension }, { (ExifTag)ExifTag.PixelXDimension },
{ ExifTag.PixelYDimension } { (ExifTag)ExifTag.PixelYDimension }
}; };
public static TheoryData<ExifTag> NumberArrayTags => new() public static TheoryData<ExifTag> NumberArrayTags => new()
{ {
{ ExifTag.StripOffsets }, { (ExifTag)ExifTag.StripOffsets },
{ ExifTag.StripByteCounts }, { (ExifTag)ExifTag.StripByteCounts },
{ ExifTag.TileByteCounts }, { (ExifTag)ExifTag.TileByteCounts },
{ ExifTag.TileOffsets }, { (ExifTag)ExifTag.TileOffsets },
{ ExifTag.ImageLayer } { (ExifTag)ExifTag.ImageLayer }
}; };
public static TheoryData<ExifTag> RationalTags => new() public static TheoryData<ExifTag> RationalTags => new()
{ {
{ ExifTag.XPosition }, { (ExifTag)ExifTag.XPosition },
{ ExifTag.YPosition }, { (ExifTag)ExifTag.YPosition },
{ ExifTag.XResolution }, { (ExifTag)ExifTag.XResolution },
{ ExifTag.YResolution }, { (ExifTag)ExifTag.YResolution },
{ ExifTag.BatteryLevel }, { (ExifTag)ExifTag.BatteryLevel },
{ ExifTag.ExposureTime }, { (ExifTag)ExifTag.ExposureTime },
{ ExifTag.FNumber }, { (ExifTag)ExifTag.FNumber },
{ ExifTag.MDScalePixel }, { (ExifTag)ExifTag.MDScalePixel },
{ ExifTag.CompressedBitsPerPixel }, { (ExifTag)ExifTag.CompressedBitsPerPixel },
{ ExifTag.ApertureValue }, { (ExifTag)ExifTag.ApertureValue },
{ ExifTag.MaxApertureValue }, { (ExifTag)ExifTag.MaxApertureValue },
{ ExifTag.SubjectDistance }, { (ExifTag)ExifTag.SubjectDistance },
{ ExifTag.FocalLength }, { (ExifTag)ExifTag.FocalLength },
{ ExifTag.FlashEnergy2 }, { (ExifTag)ExifTag.FlashEnergy2 },
{ ExifTag.FocalPlaneXResolution2 }, { (ExifTag)ExifTag.FocalPlaneXResolution2 },
{ ExifTag.FocalPlaneYResolution2 }, { (ExifTag)ExifTag.FocalPlaneYResolution2 },
{ ExifTag.ExposureIndex2 }, { (ExifTag)ExifTag.ExposureIndex2 },
{ ExifTag.Humidity }, { (ExifTag)ExifTag.Humidity },
{ ExifTag.Pressure }, { (ExifTag)ExifTag.Pressure },
{ ExifTag.Acceleration }, { (ExifTag)ExifTag.Acceleration },
{ ExifTag.FlashEnergy }, { (ExifTag)ExifTag.FlashEnergy },
{ ExifTag.FocalPlaneXResolution }, { (ExifTag)ExifTag.FocalPlaneXResolution },
{ ExifTag.FocalPlaneYResolution }, { (ExifTag)ExifTag.FocalPlaneYResolution },
{ ExifTag.ExposureIndex }, { (ExifTag)ExifTag.ExposureIndex },
{ ExifTag.DigitalZoomRatio }, { (ExifTag)ExifTag.DigitalZoomRatio },
{ ExifTag.GPSAltitude }, { (ExifTag)ExifTag.GPSAltitude },
{ ExifTag.GPSDOP }, { (ExifTag)ExifTag.GPSDOP },
{ ExifTag.GPSSpeed }, { (ExifTag)ExifTag.GPSSpeed },
{ ExifTag.GPSTrack }, { (ExifTag)ExifTag.GPSTrack },
{ ExifTag.GPSImgDirection }, { (ExifTag)ExifTag.GPSImgDirection },
{ ExifTag.GPSDestBearing }, { (ExifTag)ExifTag.GPSDestBearing },
{ ExifTag.GPSDestDistance }, { (ExifTag)ExifTag.GPSDestDistance },
{ ExifTag.GPSHPositioningError }, { (ExifTag)ExifTag.GPSHPositioningError },
}; };
public static TheoryData<ExifTag> RationalArrayTags => new() public static TheoryData<ExifTag> RationalArrayTags => new()
{ {
{ ExifTag.WhitePoint }, { (ExifTag)ExifTag.WhitePoint },
{ ExifTag.PrimaryChromaticities }, { (ExifTag)ExifTag.PrimaryChromaticities },
{ ExifTag.YCbCrCoefficients }, { (ExifTag)ExifTag.YCbCrCoefficients },
{ ExifTag.ReferenceBlackWhite }, { (ExifTag)ExifTag.ReferenceBlackWhite },
{ ExifTag.GPSLatitude }, { (ExifTag)ExifTag.GPSLatitude },
{ ExifTag.GPSLongitude }, { (ExifTag)ExifTag.GPSLongitude },
{ ExifTag.GPSTimestamp }, { (ExifTag)ExifTag.GPSTimestamp },
{ ExifTag.GPSDestLatitude }, { (ExifTag)ExifTag.GPSDestLatitude },
{ ExifTag.GPSDestLongitude }, { (ExifTag)ExifTag.GPSDestLongitude },
{ ExifTag.LensSpecification } { (ExifTag)ExifTag.LensSpecification }
}; };
public static TheoryData<ExifTag> ShortTags => new() public static TheoryData<ExifTag> ShortTags => new()
{ {
{ ExifTag.OldSubfileType }, { (ExifTag)ExifTag.OldSubfileType },
{ ExifTag.Compression }, { (ExifTag)ExifTag.Compression },
{ ExifTag.PhotometricInterpretation }, { (ExifTag)ExifTag.PhotometricInterpretation },
{ ExifTag.Thresholding }, { (ExifTag)ExifTag.Thresholding },
{ ExifTag.CellWidth }, { (ExifTag)ExifTag.CellWidth },
{ ExifTag.CellLength }, { (ExifTag)ExifTag.CellLength },
{ ExifTag.FillOrder }, { (ExifTag)ExifTag.FillOrder },
{ ExifTag.Orientation }, { (ExifTag)ExifTag.Orientation },
{ ExifTag.SamplesPerPixel }, { (ExifTag)ExifTag.SamplesPerPixel },
{ ExifTag.PlanarConfiguration }, { (ExifTag)ExifTag.PlanarConfiguration },
{ ExifTag.Predictor }, { (ExifTag)ExifTag.Predictor },
{ ExifTag.GrayResponseUnit }, { (ExifTag)ExifTag.GrayResponseUnit },
{ ExifTag.ResolutionUnit }, { (ExifTag)ExifTag.ResolutionUnit },
{ ExifTag.CleanFaxData }, { (ExifTag)ExifTag.CleanFaxData },
{ ExifTag.InkSet }, { (ExifTag)ExifTag.InkSet },
{ ExifTag.NumberOfInks }, { (ExifTag)ExifTag.NumberOfInks },
{ ExifTag.DotRange }, { (ExifTag)ExifTag.DotRange },
{ ExifTag.Indexed }, { (ExifTag)ExifTag.Indexed },
{ ExifTag.OPIProxy }, { (ExifTag)ExifTag.OPIProxy },
{ ExifTag.JPEGProc }, { (ExifTag)ExifTag.JPEGProc },
{ ExifTag.JPEGRestartInterval }, { (ExifTag)ExifTag.JPEGRestartInterval },
{ ExifTag.YCbCrPositioning }, { (ExifTag)ExifTag.YCbCrPositioning },
{ ExifTag.Rating }, { (ExifTag)ExifTag.Rating },
{ ExifTag.RatingPercent }, { (ExifTag)ExifTag.RatingPercent },
{ ExifTag.ExposureProgram }, { (ExifTag)ExifTag.ExposureProgram },
{ ExifTag.Interlace }, { (ExifTag)ExifTag.Interlace },
{ ExifTag.SelfTimerMode }, { (ExifTag)ExifTag.SelfTimerMode },
{ ExifTag.SensitivityType }, { (ExifTag)ExifTag.SensitivityType },
{ ExifTag.MeteringMode }, { (ExifTag)ExifTag.MeteringMode },
{ ExifTag.LightSource }, { (ExifTag)ExifTag.LightSource },
{ ExifTag.FocalPlaneResolutionUnit2 }, { (ExifTag)ExifTag.FocalPlaneResolutionUnit2 },
{ ExifTag.SensingMethod2 }, { (ExifTag)ExifTag.SensingMethod2 },
{ ExifTag.Flash }, { (ExifTag)ExifTag.Flash },
{ ExifTag.ColorSpace }, { (ExifTag)ExifTag.ColorSpace },
{ ExifTag.FocalPlaneResolutionUnit }, { (ExifTag)ExifTag.FocalPlaneResolutionUnit },
{ ExifTag.SensingMethod }, { (ExifTag)ExifTag.SensingMethod },
{ ExifTag.CustomRendered }, { (ExifTag)ExifTag.CustomRendered },
{ ExifTag.ExposureMode }, { (ExifTag)ExifTag.ExposureMode },
{ ExifTag.WhiteBalance }, { (ExifTag)ExifTag.WhiteBalance },
{ ExifTag.FocalLengthIn35mmFilm }, { (ExifTag)ExifTag.FocalLengthIn35mmFilm },
{ ExifTag.SceneCaptureType }, { (ExifTag)ExifTag.SceneCaptureType },
{ ExifTag.GainControl }, { (ExifTag)ExifTag.GainControl },
{ ExifTag.Contrast }, { (ExifTag)ExifTag.Contrast },
{ ExifTag.Saturation }, { (ExifTag)ExifTag.Saturation },
{ ExifTag.Sharpness }, { (ExifTag)ExifTag.Sharpness },
{ ExifTag.SubjectDistanceRange }, { (ExifTag)ExifTag.SubjectDistanceRange },
{ ExifTag.GPSDifferential } { (ExifTag)ExifTag.GPSDifferential }
}; };
public static TheoryData<ExifTag> ShortArrayTags => new() public static TheoryData<ExifTag> ShortArrayTags => new()
{ {
{ ExifTag.BitsPerSample }, { (ExifTag)ExifTag.BitsPerSample },
{ ExifTag.MinSampleValue }, { (ExifTag)ExifTag.MinSampleValue },
{ ExifTag.MaxSampleValue }, { (ExifTag)ExifTag.MaxSampleValue },
{ ExifTag.GrayResponseCurve }, { (ExifTag)ExifTag.GrayResponseCurve },
{ ExifTag.ColorMap }, { (ExifTag)ExifTag.ColorMap },
{ ExifTag.ExtraSamples }, { (ExifTag)ExifTag.ExtraSamples },
{ ExifTag.PageNumber }, { (ExifTag)ExifTag.PageNumber },
{ ExifTag.TransferFunction }, { (ExifTag)ExifTag.TransferFunction },
{ ExifTag.HalftoneHints }, { (ExifTag)ExifTag.HalftoneHints },
{ ExifTag.SampleFormat }, { (ExifTag)ExifTag.SampleFormat },
{ ExifTag.TransferRange }, { (ExifTag)ExifTag.TransferRange },
{ ExifTag.DefaultImageColor }, { (ExifTag)ExifTag.DefaultImageColor },
{ ExifTag.JPEGLosslessPredictors }, { (ExifTag)ExifTag.JPEGLosslessPredictors },
{ ExifTag.JPEGPointTransforms }, { (ExifTag)ExifTag.JPEGPointTransforms },
{ ExifTag.YCbCrSubsampling }, { (ExifTag)ExifTag.YCbCrSubsampling },
{ ExifTag.CFARepeatPatternDim }, { (ExifTag)ExifTag.CFARepeatPatternDim },
{ ExifTag.IntergraphPacketData }, { (ExifTag)ExifTag.IntergraphPacketData },
{ ExifTag.ISOSpeedRatings }, { (ExifTag)ExifTag.ISOSpeedRatings },
{ ExifTag.SubjectArea }, { (ExifTag)ExifTag.SubjectArea },
{ ExifTag.SubjectLocation } { (ExifTag)ExifTag.SubjectLocation }
}; };
public static TheoryData<ExifTag> SignedRationalTags => new() public static TheoryData<ExifTag> SignedRationalTags => new()
{ {
{ ExifTag.ShutterSpeedValue }, { (ExifTag)ExifTag.ShutterSpeedValue },
{ ExifTag.BrightnessValue }, { (ExifTag)ExifTag.BrightnessValue },
{ ExifTag.ExposureBiasValue }, { (ExifTag)ExifTag.ExposureBiasValue },
{ ExifTag.AmbientTemperature }, { (ExifTag)ExifTag.AmbientTemperature },
{ ExifTag.WaterDepth }, { (ExifTag)ExifTag.WaterDepth },
{ ExifTag.CameraElevationAngle } { (ExifTag)ExifTag.CameraElevationAngle }
}; };
public static TheoryData<ExifTag> SignedRationalArrayTags => new() public static TheoryData<ExifTag> SignedRationalArrayTags => new()
{ {
{ ExifTag.Decode } { (ExifTag)ExifTag.Decode }
}; };
public static TheoryData<ExifTag> SignedShortArrayTags => new() public static TheoryData<ExifTag> SignedShortArrayTags => new()
{ {
{ ExifTag.TimeZoneOffset } { (ExifTag)ExifTag.TimeZoneOffset }
}; };
public static TheoryData<ExifTag> StringTags => new() public static TheoryData<ExifTag> StringTags => new()
{ {
{ ExifTag.ImageDescription }, { (ExifTag)ExifTag.ImageDescription },
{ ExifTag.Make }, { (ExifTag)ExifTag.Make },
{ ExifTag.Model }, { (ExifTag)ExifTag.Model },
{ ExifTag.Software }, { (ExifTag)ExifTag.Software },
{ ExifTag.DateTime }, { (ExifTag)ExifTag.DateTime },
{ ExifTag.Artist }, { (ExifTag)ExifTag.Artist },
{ ExifTag.HostComputer }, { (ExifTag)ExifTag.HostComputer },
{ ExifTag.Copyright }, { (ExifTag)ExifTag.Copyright },
{ ExifTag.DocumentName }, { (ExifTag)ExifTag.DocumentName },
{ ExifTag.PageName }, { (ExifTag)ExifTag.PageName },
{ ExifTag.InkNames }, { (ExifTag)ExifTag.InkNames },
{ ExifTag.TargetPrinter }, { (ExifTag)ExifTag.TargetPrinter },
{ ExifTag.ImageID }, { (ExifTag)ExifTag.ImageID },
{ ExifTag.MDLabName }, { (ExifTag)ExifTag.MDLabName },
{ ExifTag.MDSampleInfo }, { (ExifTag)ExifTag.MDSampleInfo },
{ ExifTag.MDPrepDate }, { (ExifTag)ExifTag.MDPrepDate },
{ ExifTag.MDPrepTime }, { (ExifTag)ExifTag.MDPrepTime },
{ ExifTag.MDFileUnits }, { (ExifTag)ExifTag.MDFileUnits },
{ ExifTag.SEMInfo }, { (ExifTag)ExifTag.SEMInfo },
{ ExifTag.SpectralSensitivity }, { (ExifTag)ExifTag.SpectralSensitivity },
{ ExifTag.DateTimeOriginal }, { (ExifTag)ExifTag.DateTimeOriginal },
{ ExifTag.DateTimeDigitized }, { (ExifTag)ExifTag.DateTimeDigitized },
{ ExifTag.SubsecTime }, { (ExifTag)ExifTag.SubsecTime },
{ ExifTag.SubsecTimeOriginal }, { (ExifTag)ExifTag.SubsecTimeOriginal },
{ ExifTag.SubsecTimeDigitized }, { (ExifTag)ExifTag.SubsecTimeDigitized },
{ ExifTag.RelatedSoundFile }, { (ExifTag)ExifTag.RelatedSoundFile },
{ ExifTag.FaxSubaddress }, { (ExifTag)ExifTag.FaxSubaddress },
{ ExifTag.OffsetTime }, { (ExifTag)ExifTag.OffsetTime },
{ ExifTag.OffsetTimeOriginal }, { (ExifTag)ExifTag.OffsetTimeOriginal },
{ ExifTag.OffsetTimeDigitized }, { (ExifTag)ExifTag.OffsetTimeDigitized },
{ ExifTag.SecurityClassification }, { (ExifTag)ExifTag.SecurityClassification },
{ ExifTag.ImageHistory }, { (ExifTag)ExifTag.ImageHistory },
{ ExifTag.ImageUniqueID }, { (ExifTag)ExifTag.ImageUniqueID },
{ ExifTag.OwnerName }, { (ExifTag)ExifTag.OwnerName },
{ ExifTag.SerialNumber }, { (ExifTag)ExifTag.SerialNumber },
{ ExifTag.LensMake }, { (ExifTag)ExifTag.LensMake },
{ ExifTag.LensModel }, { (ExifTag)ExifTag.LensModel },
{ ExifTag.LensSerialNumber }, { (ExifTag)ExifTag.LensSerialNumber },
{ ExifTag.GDALMetadata }, { (ExifTag)ExifTag.GDALMetadata },
{ ExifTag.GDALNoData }, { (ExifTag)ExifTag.GDALNoData },
{ ExifTag.GPSLatitudeRef }, { (ExifTag)ExifTag.GPSLatitudeRef },
{ ExifTag.GPSLongitudeRef }, { (ExifTag)ExifTag.GPSLongitudeRef },
{ ExifTag.GPSSatellites }, { (ExifTag)ExifTag.GPSSatellites },
{ ExifTag.GPSStatus }, { (ExifTag)ExifTag.GPSStatus },
{ ExifTag.GPSMeasureMode }, { (ExifTag)ExifTag.GPSMeasureMode },
{ ExifTag.GPSSpeedRef }, { (ExifTag)ExifTag.GPSSpeedRef },
{ ExifTag.GPSTrackRef }, { (ExifTag)ExifTag.GPSTrackRef },
{ ExifTag.GPSImgDirectionRef }, { (ExifTag)ExifTag.GPSImgDirectionRef },
{ ExifTag.GPSMapDatum }, { (ExifTag)ExifTag.GPSMapDatum },
{ ExifTag.GPSDestLatitudeRef }, { (ExifTag)ExifTag.GPSDestLatitudeRef },
{ ExifTag.GPSDestLongitudeRef }, { (ExifTag)ExifTag.GPSDestLongitudeRef },
{ ExifTag.GPSDestBearingRef }, { (ExifTag)ExifTag.GPSDestBearingRef },
{ ExifTag.GPSDestDistanceRef }, { (ExifTag)ExifTag.GPSDestDistanceRef },
{ ExifTag.GPSDateStamp }, { (ExifTag)ExifTag.GPSDateStamp },
}; };
public static TheoryData<ExifTag> UndefinedTags => new() public static TheoryData<ExifTag> UndefinedTags => new()
{ {
{ ExifTag.FileSource }, { (ExifTag)ExifTag.FileSource },
{ ExifTag.SceneType } { (ExifTag)ExifTag.SceneType }
}; };
public static TheoryData<ExifTag> UndefinedArrayTags => new() public static TheoryData<ExifTag> UndefinedArrayTags => new()
{ {
{ ExifTag.JPEGTables }, { (ExifTag)ExifTag.JPEGTables },
{ ExifTag.OECF }, { (ExifTag)ExifTag.OECF },
{ ExifTag.ExifVersion }, { (ExifTag)ExifTag.ExifVersion },
{ ExifTag.ComponentsConfiguration }, { (ExifTag)ExifTag.ComponentsConfiguration },
{ ExifTag.MakerNote }, { (ExifTag)ExifTag.MakerNote },
{ ExifTag.FlashpixVersion }, { (ExifTag)ExifTag.FlashpixVersion },
{ ExifTag.SpatialFrequencyResponse }, { (ExifTag)ExifTag.SpatialFrequencyResponse },
{ ExifTag.SpatialFrequencyResponse2 }, { (ExifTag)ExifTag.SpatialFrequencyResponse2 },
{ ExifTag.Noise }, { (ExifTag)ExifTag.Noise },
{ ExifTag.CFAPattern }, { (ExifTag)ExifTag.CFAPattern },
{ ExifTag.DeviceSettingDescription }, { (ExifTag)ExifTag.DeviceSettingDescription },
{ ExifTag.ImageSourceData }, { (ExifTag)ExifTag.ImageSourceData },
}; };
public static TheoryData<ExifTag> EncodedStringTags => new() public static TheoryData<ExifTag> EncodedStringTags => new()
{ {
{ ExifTag.UserComment }, { (ExifTag)ExifTag.UserComment },
{ ExifTag.GPSProcessingMethod }, { (ExifTag)ExifTag.GPSProcessingMethod },
{ ExifTag.GPSAreaInformation } { (ExifTag)ExifTag.GPSAreaInformation }
}; };
public static TheoryData<ExifTag> Ucs2StringTags => new() public static TheoryData<ExifTag> Ucs2StringTags => new()
{ {
{ ExifTag.XPTitle }, { (ExifTag)ExifTag.XPTitle },
{ ExifTag.XPComment }, { (ExifTag)ExifTag.XPComment },
{ ExifTag.XPAuthor }, { (ExifTag)ExifTag.XPAuthor },
{ ExifTag.XPKeywords }, { (ExifTag)ExifTag.XPKeywords },
{ ExifTag.XPSubject }, { (ExifTag)ExifTag.XPSubject },
}; };
[Theory] [Theory]

2
tests/ImageSharp.Tests/PixelFormats/L8Tests.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats;
public class L8Tests public class L8Tests
{ {
public static readonly TheoryData<byte> LuminanceData public static readonly TheoryData<byte> 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] [Theory]
[InlineData(0)] [InlineData(0)]

2
tests/ImageSharp.Tests/PixelFormats/La16Tests.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats;
public class La16Tests public class La16Tests
{ {
public static readonly TheoryData<byte> LuminanceData public static readonly TheoryData<byte> 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] [Theory]
[InlineData(0, 0)] [InlineData(0, 0)]

1
tests/ImageSharp.Tests/PixelFormats/PixelOperations/Generated/PixelOperationsTests.Specialized.Generated.cs

@ -5,7 +5,6 @@
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit; using Xunit;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations; namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations;

59
tests/ImageSharp.Tests/PixelFormats/PixelOperations/PixelOperationsTests.cs

@ -10,7 +10,6 @@ using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Common; using SixLabors.ImageSharp.Tests.Common;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations; namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations;
@ -315,35 +314,35 @@ public abstract class PixelOperationsTests<TPixel> : MeasureFixture
public static readonly TheoryData<object> Generic_To_Data = new() public static readonly TheoryData<object> Generic_To_Data = new()
{ {
new TestPixel<A8>(), (object)new TestPixel<A8>(),
new TestPixel<Abgr32>(), (object)new TestPixel<Abgr32>(),
new TestPixel<Argb32>(), (object)new TestPixel<Argb32>(),
new TestPixel<Bgr24>(), (object)new TestPixel<Bgr24>(),
new TestPixel<Bgr565>(), (object)new TestPixel<Bgr565>(),
new TestPixel<Bgra32>(), (object)new TestPixel<Bgra32>(),
new TestPixel<Bgra4444>(), (object)new TestPixel<Bgra4444>(),
new TestPixel<Bgra5551>(), (object)new TestPixel<Bgra5551>(),
new TestPixel<Byte4>(), (object)new TestPixel<Byte4>(),
new TestPixel<HalfSingle>(), (object)new TestPixel<HalfSingle>(),
new TestPixel<HalfVector2>(), (object)new TestPixel<HalfVector2>(),
new TestPixel<HalfVector4>(), (object)new TestPixel<HalfVector4>(),
new TestPixel<L16>(), (object)new TestPixel<L16>(),
new TestPixel<L8>(), (object)new TestPixel<L8>(),
new TestPixel<La16>(), (object)new TestPixel<La16>(),
new TestPixel<La32>(), (object)new TestPixel<La32>(),
new TestPixel<NormalizedByte2>(), (object)new TestPixel<NormalizedByte2>(),
new TestPixel<NormalizedByte4>(), (object)new TestPixel<NormalizedByte4>(),
new TestPixel<NormalizedShort2>(), (object)new TestPixel<NormalizedShort2>(),
new TestPixel<NormalizedShort4>(), (object)new TestPixel<NormalizedShort4>(),
new TestPixel<Rg32>(), (object)new TestPixel<Rg32>(),
new TestPixel<Rgb24>(), (object)new TestPixel<Rgb24>(),
new TestPixel<Rgb48>(), (object)new TestPixel<Rgb48>(),
new TestPixel<Rgba1010102>(), (object)new TestPixel<Rgba1010102>(),
new TestPixel<Rgba32>(), (object)new TestPixel<Rgba32>(),
new TestPixel<Rgba64>(), (object)new TestPixel<Rgba64>(),
new TestPixel<RgbaVector>(), (object)new TestPixel<RgbaVector>(),
new TestPixel<Short2>(), (object)new TestPixel<Short2>(),
new TestPixel<Short4>(), (object)new TestPixel<Short4>(),
}; };
[Theory] [Theory]

2
tests/ImageSharp.Tests/Processing/Processors/Convolution/BokehBlurTest.cs

@ -8,7 +8,7 @@ using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Convolution; using SixLabors.ImageSharp.Processing.Processors.Convolution;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution; namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution;

4
tests/ImageSharp.Tests/Processing/Processors/Dithering/DitherTests.cs

@ -43,8 +43,8 @@ public class DitherTests
public static readonly TheoryData<IDither> DefaultInstanceDitherers public static readonly TheoryData<IDither> DefaultInstanceDitherers
= new() = new()
{ {
default(ErrorDither), (IDither)default(ErrorDither),
default(OrderedDither) (IDither)default(OrderedDither)
}; };
private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.05f); private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.05f);

126
tests/ImageSharp.Tests/Processing/Processors/Quantization/QuantizerTests.cs

@ -74,79 +74,79 @@ public class QuantizerTests
= new() = new()
{ {
// Known uses error diffusion by default. // Known uses error diffusion by default.
KnownQuantizers.Hexadecatree, (IQuantizer)KnownQuantizers.Hexadecatree,
KnownQuantizers.WebSafe, (IQuantizer)KnownQuantizers.WebSafe,
KnownQuantizers.Werner, (IQuantizer)KnownQuantizers.Werner,
KnownQuantizers.Wu, (IQuantizer)KnownQuantizers.Wu,
new HexadecatreeQuantizer(NoDitherOptions), (IQuantizer)new HexadecatreeQuantizer(NoDitherOptions),
new WebSafePaletteQuantizer(NoDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(NoDitherOptions),
new WernerPaletteQuantizer(NoDitherOptions), (IQuantizer)new WernerPaletteQuantizer(NoDitherOptions),
new WuQuantizer(NoDitherOptions), (IQuantizer)new WuQuantizer(NoDitherOptions),
new HexadecatreeQuantizer(OrderedDitherOptions), (IQuantizer)new HexadecatreeQuantizer(OrderedDitherOptions),
new WebSafePaletteQuantizer(OrderedDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(OrderedDitherOptions),
new WernerPaletteQuantizer(OrderedDitherOptions), (IQuantizer)new WernerPaletteQuantizer(OrderedDitherOptions),
new WuQuantizer(OrderedDitherOptions) (IQuantizer)new WuQuantizer(OrderedDitherOptions)
}; };
public static readonly TheoryData<IQuantizer> DitherScaleQuantizers public static readonly TheoryData<IQuantizer> DitherScaleQuantizers
= new() = new()
{ {
new HexadecatreeQuantizer(Diffuser0_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Diffuser0_ScaleDitherOptions),
new WebSafePaletteQuantizer(Diffuser0_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Diffuser0_ScaleDitherOptions),
new WernerPaletteQuantizer(Diffuser0_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Diffuser0_ScaleDitherOptions),
new WuQuantizer(Diffuser0_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Diffuser0_ScaleDitherOptions),
new HexadecatreeQuantizer(Diffuser0_25_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Diffuser0_25_ScaleDitherOptions),
new WebSafePaletteQuantizer(Diffuser0_25_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Diffuser0_25_ScaleDitherOptions),
new WernerPaletteQuantizer(Diffuser0_25_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Diffuser0_25_ScaleDitherOptions),
new WuQuantizer(Diffuser0_25_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Diffuser0_25_ScaleDitherOptions),
new HexadecatreeQuantizer(Diffuser0_5_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Diffuser0_5_ScaleDitherOptions),
new WebSafePaletteQuantizer(Diffuser0_5_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Diffuser0_5_ScaleDitherOptions),
new WernerPaletteQuantizer(Diffuser0_5_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Diffuser0_5_ScaleDitherOptions),
new WuQuantizer(Diffuser0_5_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Diffuser0_5_ScaleDitherOptions),
new HexadecatreeQuantizer(Diffuser0_75_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Diffuser0_75_ScaleDitherOptions),
new WebSafePaletteQuantizer(Diffuser0_75_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Diffuser0_75_ScaleDitherOptions),
new WernerPaletteQuantizer(Diffuser0_75_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Diffuser0_75_ScaleDitherOptions),
new WuQuantizer(Diffuser0_75_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Diffuser0_75_ScaleDitherOptions),
new HexadecatreeQuantizer(DiffuserDitherOptions), (IQuantizer)new HexadecatreeQuantizer(DiffuserDitherOptions),
new WebSafePaletteQuantizer(DiffuserDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(DiffuserDitherOptions),
new WernerPaletteQuantizer(DiffuserDitherOptions), (IQuantizer)new WernerPaletteQuantizer(DiffuserDitherOptions),
new WuQuantizer(DiffuserDitherOptions), (IQuantizer)new WuQuantizer(DiffuserDitherOptions),
new HexadecatreeQuantizer(Ordered0_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Ordered0_ScaleDitherOptions),
new WebSafePaletteQuantizer(Ordered0_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Ordered0_ScaleDitherOptions),
new WernerPaletteQuantizer(Ordered0_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Ordered0_ScaleDitherOptions),
new WuQuantizer(Ordered0_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Ordered0_ScaleDitherOptions),
new HexadecatreeQuantizer(Ordered0_25_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Ordered0_25_ScaleDitherOptions),
new WebSafePaletteQuantizer(Ordered0_25_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Ordered0_25_ScaleDitherOptions),
new WernerPaletteQuantizer(Ordered0_25_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Ordered0_25_ScaleDitherOptions),
new WuQuantizer(Ordered0_25_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Ordered0_25_ScaleDitherOptions),
new HexadecatreeQuantizer(Ordered0_5_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Ordered0_5_ScaleDitherOptions),
new WebSafePaletteQuantizer(Ordered0_5_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Ordered0_5_ScaleDitherOptions),
new WernerPaletteQuantizer(Ordered0_5_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Ordered0_5_ScaleDitherOptions),
new WuQuantizer(Ordered0_5_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Ordered0_5_ScaleDitherOptions),
new HexadecatreeQuantizer(Ordered0_75_ScaleDitherOptions), (IQuantizer)new HexadecatreeQuantizer(Ordered0_75_ScaleDitherOptions),
new WebSafePaletteQuantizer(Ordered0_75_ScaleDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(Ordered0_75_ScaleDitherOptions),
new WernerPaletteQuantizer(Ordered0_75_ScaleDitherOptions), (IQuantizer)new WernerPaletteQuantizer(Ordered0_75_ScaleDitherOptions),
new WuQuantizer(Ordered0_75_ScaleDitherOptions), (IQuantizer)new WuQuantizer(Ordered0_75_ScaleDitherOptions),
new HexadecatreeQuantizer(OrderedDitherOptions), (IQuantizer)new HexadecatreeQuantizer(OrderedDitherOptions),
new WebSafePaletteQuantizer(OrderedDitherOptions), (IQuantizer)new WebSafePaletteQuantizer(OrderedDitherOptions),
new WernerPaletteQuantizer(OrderedDitherOptions), (IQuantizer)new WernerPaletteQuantizer(OrderedDitherOptions),
new WuQuantizer(OrderedDitherOptions), (IQuantizer)new WuQuantizer(OrderedDitherOptions),
}; };
public static readonly TheoryData<IDither> DefaultInstanceDitherers public static readonly TheoryData<IDither> DefaultInstanceDitherers
= new() = new()
{ {
default(ErrorDither), (IDither)default(ErrorDither),
default(OrderedDither) (IDither)default(OrderedDither)
}; };
private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.05F); private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.05F);

1
tests/ImageSharp.Tests/Processing/Processors/Transforms/AffineTransformTests.cs

@ -7,7 +7,6 @@ using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Transforms; using SixLabors.ImageSharp.Processing.Processors.Transforms;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Processing.Transforms; namespace SixLabors.ImageSharp.Tests.Processing.Transforms;

1
tests/ImageSharp.Tests/Processing/Processors/Transforms/ProjectiveTransformTests.cs

@ -9,7 +9,6 @@ using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Transforms; using SixLabors.ImageSharp.Processing.Processors.Transforms;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms; namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms;

1
tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeKernelMapTests.cs

@ -4,7 +4,6 @@
using System.Text; using System.Text;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Transforms; using SixLabors.ImageSharp.Processing.Processors.Transforms;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms; namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms;

2
tests/ImageSharp.Tests/Processing/Processors/Transforms/RotateTests.cs

@ -15,7 +15,7 @@ public class RotateTests
public static readonly TheoryData<float> RotateAngles public static readonly TheoryData<float> RotateAngles
= new() = new()
{ {
50, -50, 170, -170 50f, -50f, 170f, -170f
}; };
public static readonly TheoryData<RotateMode> RotateEnumValues public static readonly TheoryData<RotateMode> RotateEnumValues

1
tests/ImageSharp.Tests/ProfilingBenchmarks/LoadResizeSaveProfilingBenchmarks.cs

@ -3,7 +3,6 @@
using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks; namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks;

1
tests/ImageSharp.Tests/ProfilingBenchmarks/ResizeProfilingBenchmarks.cs

@ -3,7 +3,6 @@
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks; namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks;

14
tests/ImageSharp.Tests/TestUtilities/Attributes/ImageDataAttributeBase.cs

@ -3,6 +3,7 @@
using System.Reflection; using System.Reflection;
using Xunit.Sdk; using Xunit.Sdk;
using Xunit.v3;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;
@ -42,11 +43,22 @@ public abstract class ImageDataAttributeBase : DataAttribute
/// </summary> /// </summary>
public Type MemberType { get; set; } public Type MemberType { get; set; }
/// <inheritdoc/>
public override bool SupportsDiscoveryEnumeration() => true;
/// <inheritdoc/>
public override ValueTask<IReadOnlyCollection<ITheoryDataRow?>> GetData(MethodInfo testMethod, DisposalTracker disposalTracker)
{
IEnumerable<object[]> rows = this.GetDataRows(testMethod);
IReadOnlyCollection<ITheoryDataRow?> result = rows.Select(row => ConvertDataRow(row)).ToList();
return new ValueTask<IReadOnlyCollection<ITheoryDataRow?>>(result);
}
/// <summary>Returns the data to be used to test the theory.</summary> /// <summary>Returns the data to be used to test the theory.</summary>
/// <param name="testMethod">The method that is being tested</param> /// <param name="testMethod">The method that is being tested</param>
/// <returns>One or more sets of theory data. Each invocation of the test method /// <returns>One or more sets of theory data. Each invocation of the test method
/// is represented by a single object array.</returns> /// is represented by a single object array.</returns>
public override IEnumerable<object[]> GetData(MethodInfo testMethod) private IEnumerable<object[]> GetDataRows(MethodInfo testMethod)
{ {
IEnumerable<object[]> addedRows = Enumerable.Empty<object[]>().ToArray(); IEnumerable<object[]> addedRows = Enumerable.Empty<object[]>().ToArray();
if (!string.IsNullOrWhiteSpace(this.MemberName)) if (!string.IsNullOrWhiteSpace(this.MemberName))

44
tests/ImageSharp.Tests/TestUtilities/BasicSerializer.cs

@ -2,7 +2,7 @@
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using System.ComponentModel; using System.ComponentModel;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests.TestUtilities; namespace SixLabors.ImageSharp.Tests.TestUtilities;
@ -13,8 +13,11 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities;
/// </summary> /// </summary>
internal class BasicSerializer : IXunitSerializationInfo internal class BasicSerializer : IXunitSerializationInfo
{ {
private readonly Dictionary<string, string> map = []; // Stores (string representation, type) per key.
private readonly Dictionary<string, (string str, Type type)> map = [];
// Separator between key, type AQN and value in the dump format.
// ':' is safe because AssemblyQualifiedName and converter output don't contain it.
public const char Separator = ':'; public const char Separator = ':';
private string DumpToString(Type type) private string DumpToString(Type type)
@ -22,14 +25,14 @@ internal class BasicSerializer : IXunitSerializationInfo
using MemoryStream ms = new(); using MemoryStream ms = new();
using StreamWriter writer = new(ms); using StreamWriter writer = new(ms);
writer.WriteLine(type.FullName); writer.WriteLine(type.FullName);
foreach (KeyValuePair<string, string> kv in this.map) foreach (KeyValuePair<string, (string str, Type t)> kv in this.map)
{ {
writer.WriteLine($"{kv.Key}{Separator}{kv.Value}"); // Format: key:TypeAssemblyQualifiedName:value
writer.WriteLine($"{kv.Key}{Separator}{kv.Value.t.AssemblyQualifiedName}{Separator}{kv.Value.str}");
} }
writer.Flush(); writer.Flush();
byte[] data = ms.ToArray(); return Convert.ToBase64String(ms.ToArray());
return Convert.ToBase64String(data);
} }
private Type LoadDump(string dump) private Type LoadDump(string dump)
@ -41,8 +44,18 @@ internal class BasicSerializer : IXunitSerializationInfo
Type type = Type.GetType(reader.ReadLine()); Type type = Type.GetType(reader.ReadLine());
for (string s = reader.ReadLine(); s != null; s = reader.ReadLine()) for (string s = reader.ReadLine(); s != null; s = reader.ReadLine())
{ {
string[] kv = s.Split(Separator); // Format: key:TypeAQN:value (3 parts max to preserve ':' inside value)
this.map[kv[0]] = kv[1]; string[] parts = s.Split(Separator, 3);
if (parts.Length == 3)
{
Type valueType = Type.GetType(parts[1]) ?? typeof(string);
this.map[parts[0]] = (parts[2], valueType);
}
else if (parts.Length == 2)
{
// Legacy two-part format: key:value (no type info)
this.map[parts[0]] = (parts[1], typeof(string));
}
} }
return type; return type;
@ -66,6 +79,7 @@ internal class BasicSerializer : IXunitSerializationInfo
return result; return result;
} }
/// <inheritdoc/>
public void AddValue(string key, object value, Type type = null) public void AddValue(string key, object value, Type type = null)
{ {
Guard.NotNull(key, nameof(key)); Guard.NotNull(key, nameof(key));
@ -75,21 +89,19 @@ internal class BasicSerializer : IXunitSerializationInfo
} }
type ??= value.GetType(); type ??= value.GetType();
this.map[key] = (TypeDescriptor.GetConverter(type).ConvertToInvariantString(value), type);
this.map[key] = TypeDescriptor.GetConverter(type).ConvertToInvariantString(value);
} }
public object GetValue(string key, Type type) /// <inheritdoc/>
public object GetValue(string key)
{ {
Guard.NotNull(key, nameof(key)); Guard.NotNull(key, nameof(key));
if (!this.map.TryGetValue(key, out string str)) if (!this.map.TryGetValue(key, out (string str, Type type) entry))
{ {
return type.IsValueType ? Activator.CreateInstance(type) : null; return null;
} }
return TypeDescriptor.GetConverter(type).ConvertFromInvariantString(str); return TypeDescriptor.GetConverter(entry.type).ConvertFromInvariantString(entry.str);
} }
public T GetValue<T>(string key) => (T)this.GetValue(key, typeof(T));
} }

2
tests/ImageSharp.Tests/TestUtilities/FeatureTesting/FeatureTestRunner.cs

@ -4,7 +4,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.Globalization; using System.Globalization;
using Microsoft.DotNet.RemoteExecutor; using Microsoft.DotNet.RemoteExecutor;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests.TestUtilities; namespace SixLabors.ImageSharp.Tests.TestUtilities;

2
tests/ImageSharp.Tests/TestUtilities/ImageProviders/BasicTestPatternProvider.cs

@ -2,7 +2,7 @@
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using System.Numerics; using System.Numerics;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

2
tests/ImageSharp.Tests/TestUtilities/ImageProviders/BlankProvider.cs

@ -2,8 +2,8 @@
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Sdk;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

2
tests/ImageSharp.Tests/TestUtilities/ImageProviders/FileProvider.cs

@ -6,8 +6,8 @@ using System.Reflection;
using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Sdk;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

2
tests/ImageSharp.Tests/TestUtilities/ImageProviders/MemberMethodProvider.cs

@ -3,7 +3,7 @@
using System.Reflection; using System.Reflection;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

2
tests/ImageSharp.Tests/TestUtilities/ImageProviders/SolidProvider.cs

@ -3,7 +3,7 @@
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

2
tests/ImageSharp.Tests/TestUtilities/ImageProviders/TestImageProvider.cs

@ -7,8 +7,8 @@ using Castle.Core.Internal;
using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using Xunit.Sdk;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

2
tests/ImageSharp.Tests/TestUtilities/ImageProviders/TestPatternProvider.cs

@ -4,7 +4,7 @@
using System.Numerics; using System.Numerics;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

1
tests/ImageSharp.Tests/TestUtilities/MeasureFixture.cs

@ -3,7 +3,6 @@
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

14
tests/ImageSharp.Tests/TestUtilities/SixLaborsXunitTestFramework.cs

@ -3,22 +3,16 @@
using BenchmarkDotNet.Environments; using BenchmarkDotNet.Environments;
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions; using Xunit.v3;
using Xunit.Sdk;
[assembly: Xunit.TestFramework(SixLaborsXunitTestFramework.Type, SixLaborsXunitTestFramework.Assembly)] [assembly: Xunit.TestFramework(typeof(SixLaborsXunitTestFramework))]
namespace SixLabors.ImageSharp.Tests.TestUtilities; namespace SixLabors.ImageSharp.Tests.TestUtilities;
public class SixLaborsXunitTestFramework : XunitTestFramework public class SixLaborsXunitTestFramework : XunitTestFramework
{ {
public const string Type = "SixLabors.ImageSharp.Tests.TestUtilities.SixLaborsXunitTestFramework"; public SixLaborsXunitTestFramework()
public const string Assembly = "SixLabors.ImageSharp.Tests";
public SixLaborsXunitTestFramework(IMessageSink messageSink)
: base(messageSink)
{ {
DiagnosticMessage message = new(HostEnvironmentInfo.GetInformation()); Console.WriteLine(HostEnvironmentInfo.GetInformation());
messageSink.OnMessage(message);
} }
} }

2
tests/ImageSharp.Tests/TestUtilities/TestPixel.cs

@ -3,7 +3,7 @@
using System.Numerics; using System.Numerics;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests.TestUtilities; namespace SixLabors.ImageSharp.Tests.TestUtilities;

3
tests/ImageSharp.Tests/TestUtilities/TestType.cs

@ -1,7 +1,8 @@
// Copyright (c) Six Labors. // Copyright (c) Six Labors.
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using Xunit.Abstractions;
using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests.TestUtilities; namespace SixLabors.ImageSharp.Tests.TestUtilities;

2
tests/ImageSharp.Tests/TestUtilities/TestVector4.cs

@ -2,7 +2,7 @@
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using System.Numerics; using System.Numerics;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests.TestUtilities; namespace SixLabors.ImageSharp.Tests.TestUtilities;

2
tests/ImageSharp.Tests/TestUtilities/Tests/BasicSerializerTests.cs

@ -2,7 +2,7 @@
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Tests.TestUtilities; using SixLabors.ImageSharp.Tests.TestUtilities;
using Xunit.Abstractions; using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

2
tests/ImageSharp.Tests/TestUtilities/Tests/FeatureTestRunnerTests.cs

@ -4,8 +4,8 @@
using System.Numerics; using System.Numerics;
using System.Runtime.Intrinsics.Arm; using System.Runtime.Intrinsics.Arm;
using System.Runtime.Intrinsics.X86; using System.Runtime.Intrinsics.X86;
using Xunit.Abstractions;
using Aes = System.Runtime.Intrinsics.X86.Aes; using Aes = System.Runtime.Intrinsics.X86.Aes;
using Xunit.Sdk;
namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests; namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests;

1
tests/ImageSharp.Tests/TestUtilities/Tests/ImageComparerTests.cs

@ -5,7 +5,6 @@ using Moq;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

1
tests/ImageSharp.Tests/TestUtilities/Tests/MagickReferenceCodecTests.cs

@ -5,7 +5,6 @@ using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests; namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests;

1
tests/ImageSharp.Tests/TestUtilities/Tests/ReferenceDecoderBenchmarks.cs

@ -4,7 +4,6 @@
using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests; namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests;

1
tests/ImageSharp.Tests/TestUtilities/Tests/SystemDrawingReferenceCodecTests.cs

@ -8,7 +8,6 @@ using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests; namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests;

3
tests/ImageSharp.Tests/TestUtilities/Tests/TestEnvironmentTests.cs

@ -9,7 +9,6 @@ using SixLabors.ImageSharp.Formats.Gif;
using SixLabors.ImageSharp.Formats.Jpeg; using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Webp; using SixLabors.ImageSharp.Formats.Webp;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;
@ -121,7 +120,7 @@ public class TestEnvironmentTests
// https://github.com/SixLabors/ImageSharp/blob/381dff8640b721a34b1227c970fcf6ad6c5e3e72/ci-test.ps1#L30 // https://github.com/SixLabors/ImageSharp/blob/381dff8640b721a34b1227c970fcf6ad6c5e3e72/ci-test.ps1#L30
public static bool IsNot32BitNetFramework = !TestEnvironment.IsFramework || TestEnvironment.Is64BitProcess; public static bool IsNot32BitNetFramework = !TestEnvironment.IsFramework || TestEnvironment.Is64BitProcess;
[ConditionalFact(nameof(IsNot32BitNetFramework))] [Fact(SkipUnless = nameof(IsNot32BitNetFramework))]
public void RemoteExecutor_FailingRemoteTestShouldFailLocalTest() public void RemoteExecutor_FailingRemoteTestShouldFailLocalTest()
{ {
static void FailingCode() static void FailingCode()

9
tests/ImageSharp.Tests/TestUtilities/Tests/TestImageProviderTests.cs

@ -8,7 +8,6 @@ using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.Metadata;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;
@ -17,14 +16,14 @@ public class TestImageProviderTests
{ {
public static readonly TheoryData<object> BasicData = new() public static readonly TheoryData<object> BasicData = new()
{ {
TestImageProvider<Rgba32>.Blank(10, 20), (object)TestImageProvider<Rgba32>.Blank(10, 20),
TestImageProvider<HalfVector4>.Blank(10, 20), (object)TestImageProvider<HalfVector4>.Blank(10, 20),
}; };
public static readonly TheoryData<object> FileData = new() public static readonly TheoryData<object> FileData = new()
{ {
TestImageProvider<Rgba32>.File(TestImages.Bmp.Car), (object)TestImageProvider<Rgba32>.File(TestImages.Bmp.Car),
TestImageProvider<HalfVector4>.File(TestImages.Bmp.F) (object)TestImageProvider<HalfVector4>.File(TestImages.Bmp.F)
}; };
public static string[] AllBmpFiles = [TestImages.Bmp.F, TestImages.Bmp.Bit8]; public static string[] AllBmpFiles = [TestImages.Bmp.F, TestImages.Bmp.Bit8];

1
tests/ImageSharp.Tests/TestUtilities/Tests/TestUtilityExtensionsTests.cs

@ -5,7 +5,6 @@ using System.Numerics;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;

6
tests/ImageSharp.Tests/ValidateDisposedMemoryAllocationsAttribute.cs

@ -2,7 +2,7 @@
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using System.Reflection; using System.Reflection;
using Xunit.Sdk; using Xunit.v3;
namespace SixLabors.ImageSharp.Tests; namespace SixLabors.ImageSharp.Tests;
@ -19,10 +19,10 @@ public class ValidateDisposedMemoryAllocationsAttribute : BeforeAfterTestAttribu
public ValidateDisposedMemoryAllocationsAttribute(int expected) public ValidateDisposedMemoryAllocationsAttribute(int expected)
=> this.expected = expected; => this.expected = expected;
public override void Before(MethodInfo methodUnderTest) public override void Before(MethodInfo methodUnderTest, IXunitTest test)
=> MemoryAllocatorValidator.MonitorAllocations(); => MemoryAllocatorValidator.MonitorAllocations();
public override void After(MethodInfo methodUnderTest) public override void After(MethodInfo methodUnderTest, IXunitTest test)
{ {
MemoryAllocatorValidator.ValidateAllocations(this.expected); MemoryAllocatorValidator.ValidateAllocations(this.expected);
MemoryAllocatorValidator.StopMonitoringAllocations(); MemoryAllocatorValidator.StopMonitoringAllocations();

Loading…
Cancel
Save