From cc77c818d7d911f99f10007da1a27396e8f3f28a Mon Sep 17 00:00:00 2001 From: Anton Firszov Date: Sat, 31 Mar 2018 22:30:32 +0200 Subject: [PATCH] adding more tolerance --- .../Processors/Convolution/DetectEdgesTest.cs | 9 ++++-- .../Processors/Transforms/ResizeTests.cs | 30 +++++++++---------- .../Transforms/AffineTransformTests.cs | 13 ++++---- .../ImageComparison/ImageComparer.cs | 6 ++++ 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/tests/ImageSharp.Tests/Processing/Processors/Convolution/DetectEdgesTest.cs b/tests/ImageSharp.Tests/Processing/Processors/Convolution/DetectEdgesTest.cs index a3687f7b5..6541b2900 100644 --- a/tests/ImageSharp.Tests/Processing/Processors/Convolution/DetectEdgesTest.cs +++ b/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 DetectEdgesFilters = new TheoryData @@ -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); } } } diff --git a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs b/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs index 567986dd5..c440bee85 100644 --- a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs +++ b/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 AllReSamplers = new TheoryData @@ -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); } } diff --git a/tests/ImageSharp.Tests/Processing/Transforms/AffineTransformTests.cs b/tests/ImageSharp.Tests/Processing/Transforms/AffineTransformTests.cs index 605f4075a..0ac19d62b 100644 --- a/tests/ImageSharp.Tests/Processing/Transforms/AffineTransformTests.cs +++ b/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); + /// /// angleDeg, sx, sy, tx, ty /// @@ -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); } } diff --git a/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs b/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs index ca7d7c6a8..7dbbe6311 100644 --- a/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs +++ b/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs @@ -25,6 +25,12 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison return new TolerantImageComparer(imageThreshold, perPixelManhattanThreshold); } + /// + /// Returns Tolerant(imageThresholdInPercents/100) + /// + public static ImageComparer TolerantPercentage(float imageThresholdInPercents) => + Tolerant(imageThresholdInPercents / 100f); + public abstract ImageSimilarityReport CompareImagesOrFrames( ImageFrame expected, ImageFrame actual)