Browse Source

adding more tolerance

af/merge-core
Anton Firszov 8 years ago
parent
commit
cc77c818d7
  1. 9
      tests/ImageSharp.Tests/Processing/Processors/Convolution/DetectEdgesTest.cs
  2. 30
      tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
  3. 13
      tests/ImageSharp.Tests/Processing/Transforms/AffineTransformTests.cs
  4. 6
      tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs

9
tests/ImageSharp.Tests/Processing/Processors/Convolution/DetectEdgesTest.cs

@ -11,9 +11,12 @@ using Xunit;
namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
{
using SixLabors.ImageSharp.Processing.Convolution;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
public class DetectEdgesTest : FileTestBase
{
private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.01f);
public static readonly string[] CommonTestImages = { TestImages.Png.Bike };
public static readonly TheoryData<EdgeDetectionOperators> DetectEdgesFilters = new TheoryData<EdgeDetectionOperators>
@ -40,7 +43,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
{
image.Mutate(x => x.DetectEdges(detector));
image.DebugSave(provider, detector.ToString());
image.CompareToReferenceOutput(provider, detector.ToString());
image.CompareToReferenceOutput(ValidatorComparer, provider, detector.ToString());
}
}
@ -53,7 +56,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
{
image.Mutate(x => x.DetectEdges());
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -80,7 +83,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
image.Mutate(x => x.DetectEdges(bounds));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
}

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

@ -18,7 +18,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
{
public static readonly string[] CommonTestImages = { TestImages.Png.CalliphoraPartial };
private static readonly ImageComparer ResizeValidatorComparer = ImageComparer.Tolerant(0.01f / 100);
private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.01f);
public static readonly TheoryData<string, IResampler> AllReSamplers =
new TheoryData<string, IResampler>
@ -53,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(ResizeValidatorComparer, provider, details);
image.CompareToReferenceOutput(ValidatorComparer, provider, details);
}
}
@ -67,7 +67,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(image.Size() / 2, true));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -81,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(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -94,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(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -125,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(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -139,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(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -153,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(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -172,7 +172,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -191,7 +191,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -211,7 +211,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -231,7 +231,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -251,7 +251,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -271,7 +271,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -291,7 +291,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
image.Mutate(x => x.Resize(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ResizeValidatorComparer, provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}

13
tests/ImageSharp.Tests/Processing/Transforms/AffineTransformTests.cs

@ -12,11 +12,14 @@ using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Processing.Transforms
{
using SixLabors.ImageSharp.Processing.Transforms;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
public class AffineTransformTests
{
private readonly ITestOutputHelper Output;
private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.01f);
/// <summary>
/// angleDeg, sx, sy, tx, ty
/// </summary>
@ -117,7 +120,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
string testOutputDetails = $"R({angleDeg})_S({sx},{sy})_T({tx},{ty})";
image.DebugSave(provider, testOutputDetails);
image.CompareToReferenceOutput(provider, testOutputDetails);
image.CompareToReferenceOutput(ValidatorComparer, provider, testOutputDetails);
}
}
@ -134,7 +137,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
string testOutputDetails = $"R({angleDeg})_S({s})";
image.DebugSave(provider, testOutputDetails);
image.CompareToReferenceOutput(provider, testOutputDetails);
image.CompareToReferenceOutput(ValidatorComparer, provider, testOutputDetails);
}
}
@ -166,7 +169,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
image.Mutate(i => i.Transform(m, KnownResamplers.Spline, rectangle));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -184,7 +187,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
image.Mutate(i => i.Transform(m, KnownResamplers.Spline, rectangle));
image.DebugSave(provider);
image.CompareToReferenceOutput(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
@ -204,7 +207,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
});
image.DebugSave(provider, resamplerName);
image.CompareToReferenceOutput(provider, resamplerName);
image.CompareToReferenceOutput(ValidatorComparer, provider, resamplerName);
}
}

6
tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs

@ -25,6 +25,12 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison
return new TolerantImageComparer(imageThreshold, perPixelManhattanThreshold);
}
/// <summary>
/// Returns Tolerant(imageThresholdInPercents/100)
/// </summary>
public static ImageComparer TolerantPercentage(float imageThresholdInPercents) =>
Tolerant(imageThresholdInPercents / 100f);
public abstract ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>(
ImageFrame<TPixelA> expected,
ImageFrame<TPixelB> actual)

Loading…
Cancel
Save