Browse Source

fixed JpegEncoderTests

af/merge-core
Anton Firszov 8 years ago
parent
commit
1e777f595d
  1. 28
      tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.cs
  2. 2
      tests/Images/External

28
tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.cs

@ -15,6 +15,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using SixLabors.Primitives;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
@ -55,20 +56,27 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
TestJpegEncoderCore(provider, subsample, quality); TestJpegEncoderCore(provider, subsample, quality);
} }
private static ImageComparer GetComparer(int quality) /// <summary>
/// Anton's SUPER-SCIENTIFIC tolerance threshold calculation
/// </summary>
private static ImageComparer GetComparer(int quality, JpegSubsample subsample)
{ {
if (quality > 90) float tolerance = 0.015f; // ~1.5%
{
return ImageComparer.Tolerant(0.0005f / 100); if (quality < 50)
}
else if (quality > 50)
{ {
return ImageComparer.Tolerant(0.005f / 100); tolerance *= 10f;
} }
else else if (quality < 75 || subsample == JpegSubsample.Ratio420)
{ {
return ImageComparer.Tolerant(0.01f / 100); tolerance *= 5f;
if (subsample == JpegSubsample.Ratio420)
{
tolerance *= 2f;
}
} }
return ImageComparer.Tolerant(tolerance);
} }
private static void TestJpegEncoderCore<TPixel>( private static void TestJpegEncoderCore<TPixel>(
@ -88,7 +96,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
Quality = quality Quality = quality
}; };
string info = $"{subsample}-Q{quality}"; string info = $"{subsample}-Q{quality}";
ImageComparer comparer = GetComparer(quality); ImageComparer comparer = GetComparer(quality, subsample);
// Does DebugSave & load reference CompareToReferenceInput(): // Does DebugSave & load reference CompareToReferenceInput():
image.VerifyEncoder(provider, "jpeg", info, encoder, comparer, referenceImageExtension: "png"); image.VerifyEncoder(provider, "jpeg", info, encoder, comparer, referenceImageExtension: "png");

2
tests/Images/External

@ -1 +1 @@
Subproject commit d9c7d37074e112eabeccdde6381286f69b01b8b1 Subproject commit 20f83891ce75597486f5532010a8c5dea1419a4d
Loading…
Cancel
Save