Browse Source

higher tolerance for Resize and Filters

af/merge-core
Anton Firszov 8 years ago
parent
commit
bee66f234c
  1. 4
      tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
  2. 10
      tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
  3. 31
      tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
  4. 11
      tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
  5. 6
      tests/ImageSharp.Tests/TestUtilities/TestUtils.cs

4
tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs

@ -67,7 +67,7 @@ namespace SixLabors.ImageSharp.Tests
using (Image<TPixel> image = provider.GetImage())
{
image.DebugSave(provider);
image.CompareFirstFrameToReferenceOutput(provider, ImageComparer.Exact);
image.CompareFirstFrameToReferenceOutput(ImageComparer.Exact, provider);
}
}
@ -85,7 +85,7 @@ namespace SixLabors.ImageSharp.Tests
{
Assert.Equal(expectedFrameCount, image.Frames.Count);
image.DebugSave(provider);
image.CompareFirstFrameToReferenceOutput(provider, ImageComparer.Exact);
image.CompareFirstFrameToReferenceOutput(ImageComparer.Exact, provider);
}
}

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

@ -134,7 +134,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
image.DebugSave(provider);
provider.Utility.TestName = DecodeBaselineJpegOutputName;
image.CompareToReferenceOutput(provider, ImageComparer.Tolerant(BaselineTolerance_PdfJs), appendPixelTypeToFileName: false);
image.CompareToReferenceOutput(ImageComparer.Tolerant(BaselineTolerance_PdfJs), provider, appendPixelTypeToFileName: false);
}
}
@ -148,8 +148,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
image.DebugSave(provider);
provider.Utility.TestName = DecodeBaselineJpegOutputName;
image.CompareToReferenceOutput(
provider,
this.GetImageComparerForOrigDecoder(provider),
provider,
appendPixelTypeToFileName: false);
}
}
@ -165,8 +165,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
provider.Utility.TestName = DecodeBaselineJpegOutputName;
image.CompareToReferenceOutput(
provider,
ImageComparer.Tolerant(BaselineTolerance_PdfJs),
provider,
appendPixelTypeToFileName: false);
}
}
@ -193,8 +193,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
provider.Utility.TestName = DecodeProgressiveJpegOutputName;
image.CompareToReferenceOutput(
provider,
this.GetImageComparerForOrigDecoder(provider),
provider,
appendPixelTypeToFileName: false);
}
}
@ -210,8 +210,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
provider.Utility.TestName = DecodeProgressiveJpegOutputName;
image.CompareToReferenceOutput(
provider,
ImageComparer.Tolerant(ProgressiveTolerance_PdfJs),
provider,
appendPixelTypeToFileName: false);
}
}

31
tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs

@ -12,11 +12,14 @@ using Xunit;
namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
{
using SixLabors.ImageSharp.Processing.Transforms;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
public class ResizeTests : FileTestBase
{
public static readonly string[] CommonTestImages = { TestImages.Png.CalliphoraPartial };
private static readonly ImageComparer ResizeValidatorComparer = ImageComparer.Tolerant(0.01f / 100);
public static readonly TheoryData<string, IResampler> AllReSamplers =
new TheoryData<string, IResampler>
{
@ -50,7 +53,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
string details = $"{name}-{ratio.ToString(System.Globalization.CultureInfo.InvariantCulture)}";
image.DebugSave(provider, details);
image.CompareToReferenceOutput(provider, details);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider, details);
}
}
@ -64,7 +67,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(image.Size() / 2, true));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -78,7 +81,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(image.Width / 2, image.Height / 2, true));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -91,7 +94,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
{
image.Mutate(x => x.Resize(image.Width / 2, image.Height / 2));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -122,7 +125,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(image.Width, image.Height, KnownResamplers.Bicubic, sourceRectangle, destRectangle, false));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -136,7 +139,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(image.Width / 3, 0, false));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -150,7 +153,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(0, image.Height / 3, false));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -169,7 +172,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -188,7 +191,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -208,7 +211,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -228,7 +231,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -248,7 +251,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -268,7 +271,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}
@ -288,7 +291,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
}
}

11
tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs

@ -120,6 +120,7 @@ namespace SixLabors.ImageSharp.Tests
/// <param name="extension">The extension</param>
/// <param name="grayscale">A boolean indicating whether we should debug save + compare against a grayscale image, smaller in size.</param>
/// <param name="appendPixelTypeToFileName">A boolean indicating whether to append the pixel type to the output file name.</param>
/// <param name="comparer">A custom <see cref="ImageComparer"/> for the verification</param>
/// <returns></returns>
public static Image<TPixel> CompareToReferenceOutput<TPixel>(
this Image<TPixel> image,
@ -132,22 +133,22 @@ namespace SixLabors.ImageSharp.Tests
{
return CompareToReferenceOutput(
image,
provider,
ImageComparer.Tolerant(),
provider,
testOutputDetails,
extension,
grayscale,
appendPixelTypeToFileName);
}
/// <summary>
/// Compares the image against the expected Reference output, throws an exception if the images are not similar enough.
/// The output file should be named identically to the output produced by <see cref="DebugSave{TPixel}(Image{TPixel}, ITestImageProvider, object, string, bool)"/>.
/// </summary>
/// <typeparam name="TPixel">The pixel format</typeparam>
/// <param name="image">The image</param>
/// <param name="provider">The image provider</param>
/// <param name="comparer">The <see cref="ImageComparer"/> to use</param>
/// <param name="provider">The image provider</param>
/// <param name="testOutputDetails">Details to be concatenated to the test output file, describing the parameters of the test.</param>
/// <param name="extension">The extension</param>
/// <param name="grayscale">A boolean indicating whether we should debug save + compare against a grayscale image, smaller in size.</param>
@ -155,8 +156,8 @@ namespace SixLabors.ImageSharp.Tests
/// <returns></returns>
public static Image<TPixel> CompareToReferenceOutput<TPixel>(
this Image<TPixel> image,
ITestImageProvider provider,
ImageComparer comparer,
ITestImageProvider provider,
object testOutputDetails = null,
string extension = "png",
bool grayscale = false,
@ -177,8 +178,8 @@ namespace SixLabors.ImageSharp.Tests
public static Image<TPixel> CompareFirstFrameToReferenceOutput<TPixel>(
this Image<TPixel> image,
ITestImageProvider provider,
ImageComparer comparer,
ITestImageProvider provider,
object testOutputDetails = null,
string extension = "png",
bool grayscale = false,

6
tests/ImageSharp.Tests/TestUtilities/TestUtils.cs

@ -165,6 +165,10 @@ namespace SixLabors.ImageSharp.Tests
ImageComparer comparer = null)
where TPixel : struct, IPixel<TPixel>
{
if (comparer == null)
{
comparer = ImageComparer.Tolerant(0.5f / 100);
}
using (Image<TPixel> image = provider.GetImage())
{
image.Mutate(process);
@ -173,7 +177,7 @@ namespace SixLabors.ImageSharp.Tests
// TODO: Investigate the cause of pixel inaccuracies under Linux
if (TestEnvironment.IsWindows)
{
image.CompareToReferenceOutput(provider, testOutputDetails);
image.CompareToReferenceOutput(comparer, provider, testOutputDetails);
}
}
}

Loading…
Cancel
Save