Browse Source

tweak tolerance for DetectEdgesTest and OilPaintTest

pull/1574/head
Anton Firszov 6 years ago
parent
commit
c44543c294
  1. 23
      tests/ImageSharp.Tests/Processing/Processors/Convolution/DetectEdgesTest.cs
  2. 13
      tests/ImageSharp.Tests/Processing/Processors/Effects/OilPaintTest.cs

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

@ -12,9 +12,9 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
[GroupOutput("Convolution")]
public class DetectEdgesTest
{
// I think our comparison is not accurate enough (nor can be) for RgbaVector.
// The image pixels are identical according to BeyondCompare.
private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.0456F);
private static readonly ImageComparer OpaqueComparer = ImageComparer.TolerantPercentage(0.01F);
private static readonly ImageComparer TransparentComparer = ImageComparer.TolerantPercentage(0.5F);
public static readonly string[] TestImages = { Tests.TestImages.Png.Bike };
@ -46,7 +46,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
var bounds = new Rectangle(10, 10, size.Width / 2, size.Height / 2);
ctx.DetectEdges(bounds);
},
comparer: ValidatorComparer,
comparer: OpaqueComparer,
useReferenceOutputFrom: nameof(this.DetectEdges_InBox));
}
@ -56,11 +56,13 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
public void DetectEdges_WorksWithAllFilters<TPixel>(TestImageProvider<TPixel> provider, EdgeDetectionOperators detector)
where TPixel : unmanaged, IPixel<TPixel>
{
bool hasAlpha = provider.SourceFileOrDescription.Contains("TestPattern");
ImageComparer comparer = hasAlpha ? TransparentComparer : OpaqueComparer;
using (Image<TPixel> image = provider.GetImage())
{
image.Mutate(x => x.DetectEdges(detector));
image.DebugSave(provider, detector.ToString());
image.CompareToReferenceOutput(ValidatorComparer, provider, detector.ToString());
image.CompareToReferenceOutput(comparer, provider, detector.ToString());
}
}
@ -69,11 +71,18 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
public void DetectEdges_IsNotBoundToSinglePixelType<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : unmanaged, IPixel<TPixel>
{
// James:
// I think our comparison is not accurate enough (nor can be) for RgbaVector.
// The image pixels are identical according to BeyondCompare.
ImageComparer comparer = typeof(TPixel) == typeof(RgbaVector) ?
ImageComparer.TolerantPercentage(1f) :
OpaqueComparer;
using (Image<TPixel> image = provider.GetImage())
{
image.Mutate(x => x.DetectEdges());
image.DebugSave(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
image.CompareToReferenceOutput(comparer, provider);
}
}
@ -100,7 +109,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Convolution
image.Mutate(x => x.DetectEdges(bounds));
image.DebugSave(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
image.CompareToReferenceOutput(OpaqueComparer, provider);
}
}

13
tests/ImageSharp.Tests/Processing/Processors/Effects/OilPaintTest.cs

@ -3,7 +3,7 @@
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Processing.Processors.Effects
@ -29,8 +29,12 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Effects
where TPixel : unmanaged, IPixel<TPixel>
{
provider.RunValidatingProcessorTest(
x => x.OilPaint(levels, brushSize),
$"{levels}-{brushSize}",
x =>
{
x.OilPaint(levels, brushSize);
return $"{levels}-{brushSize}";
},
ImageComparer.TolerantPercentage(0.01F),
appendPixelTypeToFileName: false);
}
@ -42,7 +46,8 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Effects
{
provider.RunRectangleConstrainedValidatingProcessorTest(
(x, rect) => x.OilPaint(levels, brushSize, rect),
$"{levels}-{brushSize}");
$"{levels}-{brushSize}",
ImageComparer.TolerantPercentage(0.01F));
}
}
}

Loading…
Cancel
Save