Browse Source

Single image compare utils for multiple Formats

pull/1851/head
Ynse Hoornenborg 5 years ago
parent
commit
dd49f9a811
  1. 4
      tests/ImageSharp.Tests/Formats/Pbm/PbmEncoderTests.cs
  2. 96
      tests/ImageSharp.Tests/Formats/Tga/TgaDecoderTests.cs
  3. 4
      tests/ImageSharp.Tests/Formats/Tga/TgaEncoderTests.cs
  4. 8
      tests/ImageSharp.Tests/Formats/Tiff/TiffMetadataTests.cs
  5. 65
      tests/ImageSharp.Tests/Formats/Tiff/TiffTestUtils.cs
  6. 2
      tests/ImageSharp.Tests/Formats/WebP/LosslessUtilsTests.cs
  7. 5
      tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparingUtils.cs

4
tests/ImageSharp.Tests/Formats/Pbm/PbmEncoderTests.cs

@ -5,7 +5,7 @@ using System.IO;
using SixLabors.ImageSharp.Formats.Pbm;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Formats.Tga;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
using static SixLabors.ImageSharp.Tests.TestImages.Pbm;
@ -135,7 +135,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Pbm
memStream.Position = 0;
using (var encodedImage = (Image<TPixel>)Image.Load(memStream))
{
TgaTestUtils.CompareWithReferenceDecoder(provider, encodedImage, useExactComparer, compareTolerance);
ImageComparingUtils.CompareWithReferenceDecoder(provider, encodedImage, useExactComparer, compareTolerance);
}
}
}

96
tests/ImageSharp.Tests/Formats/Tga/TgaDecoderTests.cs

@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -53,7 +53,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -65,7 +65,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -89,7 +89,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -101,7 +101,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -113,7 +113,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -245,7 +245,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -257,7 +257,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -269,7 +269,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -281,7 +281,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -293,7 +293,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -305,7 +305,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -317,7 +317,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -329,7 +329,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -341,7 +341,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -353,7 +353,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -365,7 +365,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -377,7 +377,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -389,7 +389,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -401,7 +401,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -413,7 +413,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -425,7 +425,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -437,7 +437,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -449,7 +449,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -461,7 +461,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -473,7 +473,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -485,7 +485,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -497,7 +497,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -509,7 +509,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -521,7 +521,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -533,7 +533,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -545,7 +545,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -557,7 +557,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -569,7 +569,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -581,7 +581,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -593,7 +593,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -605,7 +605,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -617,7 +617,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -629,7 +629,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -641,7 +641,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -653,7 +653,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -665,7 +665,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -677,7 +677,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -689,7 +689,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -701,7 +701,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}
@ -714,7 +714,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
using (Image<TPixel> image = provider.GetImage(TgaDecoder))
{
image.DebugSave(provider);
TgaTestUtils.CompareWithReferenceDecoder(provider, image);
ImageComparingUtils.CompareWithReferenceDecoder(provider, image);
}
}

4
tests/ImageSharp.Tests/Formats/Tga/TgaEncoderTests.cs

@ -4,7 +4,7 @@
using System.IO;
using SixLabors.ImageSharp.Formats.Tga;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
using static SixLabors.ImageSharp.Tests.TestImages.Tga;
@ -150,7 +150,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
memStream.Position = 0;
using (var encodedImage = (Image<TPixel>)Image.Load(memStream))
{
TgaTestUtils.CompareWithReferenceDecoder(provider, encodedImage, useExactComparer, compareTolerance);
ImageComparingUtils.CompareWithReferenceDecoder(provider, encodedImage, useExactComparer, compareTolerance);
}
}
}

8
tests/ImageSharp.Tests/Formats/Tiff/TiffMetadataTests.cs

@ -1,6 +1,7 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System.Collections.Generic;
using System.IO;
using System.Linq;
using SixLabors.ImageSharp.Common.Helpers;
@ -22,6 +23,13 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
{
private static TiffDecoder TiffDecoder => new TiffDecoder();
private class NumberComparer : IEqualityComparer<Number>
{
public bool Equals(Number x, Number y) => x.Equals(y);
public int GetHashCode(Number obj) => obj.GetHashCode();
}
[Fact]
public void TiffMetadata_CloneIsDeep()
{

65
tests/ImageSharp.Tests/Formats/Tiff/TiffTestUtils.cs

@ -1,65 +0,0 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Collections.Generic;
using System.IO;
using ImageMagick;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Formats.Tiff
{
public static class TiffTestUtils
{
public static void CompareWithReferenceDecoder<TPixel>(
string encodedImagePath,
Image<TPixel> image,
bool useExactComparer = true,
float compareTolerance = 0.01f)
where TPixel : unmanaged, ImageSharp.PixelFormats.IPixel<TPixel>
{
var testFile = TestFile.Create(encodedImagePath);
Image<Rgba32> magickImage = DecodeWithMagick<Rgba32>(Configuration.Default, new FileInfo(testFile.FullPath));
if (useExactComparer)
{
ImageComparer.Exact.VerifySimilarity(magickImage, image);
}
else
{
ImageComparer.Tolerant(compareTolerance).VerifySimilarity(magickImage, image);
}
}
public static Image<TPixel> DecodeWithMagick<TPixel>(Configuration configuration, FileInfo fileInfo)
where TPixel : unmanaged, ImageSharp.PixelFormats.IPixel<TPixel>
{
using var magickImage = new MagickImage(fileInfo);
magickImage.AutoOrient();
var result = new Image<TPixel>(configuration, magickImage.Width, magickImage.Height);
Assert.True(result.TryGetSinglePixelSpan(out Span<TPixel> resultPixels));
using IUnsafePixelCollection<ushort> pixels = magickImage.GetPixelsUnsafe();
byte[] data = pixels.ToByteArray(PixelMapping.RGBA);
PixelOperations<TPixel>.Instance.FromRgba32Bytes(
configuration,
data,
resultPixels,
resultPixels.Length);
return result;
}
}
internal class NumberComparer : IEqualityComparer<Number>
{
public bool Equals(Number x, Number y) => x.Equals(y);
public int GetHashCode(Number obj) => obj.GetHashCode();
}
}

2
tests/ImageSharp.Tests/Formats/WebP/LosslessUtilsTests.cs

@ -229,7 +229,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Webp
public void TransformColorInverse_Works() => RunTransformColorInverseTest();
#if SUPPORTS_RUNTIME_INTRINSICS
[Fact]
public void CombinedShannonEntropy_WithHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunCombinedShannonEntropyTest, HwIntrinsics.AllowAll);

5
tests/ImageSharp.Tests/Formats/Tga/TgaTestUtils.cs → tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparingUtils.cs

@ -5,12 +5,11 @@ using System;
using System.IO;
using ImageMagick;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Formats.Tga
namespace SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison
{
public static class TgaTestUtils
public static class ImageComparingUtils
{
public static void CompareWithReferenceDecoder<TPixel>(
TestImageProvider<TPixel> provider,
Loading…
Cancel
Save