Browse Source

fixed JpegEncoderTests

pull/472/head
Anton Firszov 9 years ago
parent
commit
ed3525d5e7
  1. 26
      tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.cs
  2. 2
      tests/Images/External

26
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,22 +56,29 @@ 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%
if (quality < 50)
{ {
return ImageComparer.Tolerant(0.0005f / 100); tolerance *= 10f;
} }
else if (quality > 50) else if (quality < 75 || subsample == JpegSubsample.Ratio420)
{ {
return ImageComparer.Tolerant(0.005f / 100); tolerance *= 5f;
} if (subsample == JpegSubsample.Ratio420)
else
{ {
return ImageComparer.Tolerant(0.01f / 100); tolerance *= 2f;
} }
} }
return ImageComparer.Tolerant(tolerance);
}
private static void TestJpegEncoderCore<TPixel>( private static void TestJpegEncoderCore<TPixel>(
TestImageProvider<TPixel> provider, TestImageProvider<TPixel> provider,
JpegSubsample subsample, JpegSubsample subsample,
@ -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