diff --git a/src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs b/src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs
index 60a2e1246..62898d399 100644
--- a/src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs
+++ b/src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs
@@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort
///
/// Image decoder for generating an image out of a jpg stream.
///
- public sealed class OldJpegDecoder : IImageDecoder, IJpegDecoderOptions
+ internal sealed class OldJpegDecoder : IImageDecoder, IJpegDecoderOptions
{
///
/// Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded.
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/BadEofJpegTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/BadEofJpegTests.cs
deleted file mode 100644
index bf6b4476c..000000000
--- a/tests/ImageSharp.Tests/Formats/Jpg/BadEofJpegTests.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) Six Labors and contributors.
-// Licensed under the Apache License, Version 2.0.
-
-using SixLabors.ImageSharp.PixelFormats;
-using Xunit;
-using Xunit.Abstractions;
-
-// ReSharper disable InconsistentNaming
-
-namespace SixLabors.ImageSharp.Tests
-{
- public class BadEOFJpegTests : MeasureFixture
- {
- public BadEOFJpegTests(ITestOutputHelper output)
- : base(output)
- {
- }
-
- [Theory]
- [WithFile(TestImages.Jpeg.Baseline.Bad.MissingEOF, PixelTypes.Rgba32)]
- public void LoadBaselineImage(TestImageProvider provider)
- where TPixel : struct, IPixel
- {
- using (Image image = provider.GetImage())
- {
- Assert.NotNull(image);
- image.DebugSave(provider);
- }
- }
-
- [Theory] // TODO: #18
- [WithFile(TestImages.Jpeg.Progressive.Bad.BadEOF, PixelTypes.Rgba32)]
- public void LoadProgressiveImage(TestImageProvider provider)
- where TPixel : struct, IPixel
- {
- using (Image image = provider.GetImage())
- {
- Assert.NotNull(image);
- image.DebugSave(provider);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
index 277554586..2d31a59f9 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
@@ -28,10 +28,16 @@ namespace SixLabors.ImageSharp.Tests
{
TestImages.Jpeg.Baseline.Calliphora, TestImages.Jpeg.Baseline.Cmyk,
TestImages.Jpeg.Baseline.Jpeg400, TestImages.Jpeg.Baseline.Jpeg444,
- TestImages.Jpeg.Baseline.Testimgorig
+ TestImages.Jpeg.Baseline.Testimgorig,
+ TestImages.Jpeg.Baseline.Bad.BadEOF,
+ TestImages.Jpeg.Baseline.Bad.ExifUndefType,
};
- public static string[] ProgressiveTestJpegs = TestImages.Jpeg.Progressive.All;
+ public static string[] ProgressiveTestJpegs =
+ {
+ TestImages.Jpeg.Progressive.Fb, TestImages.Jpeg.Progressive.Progress,
+ TestImages.Jpeg.Progressive.Festzug, TestImages.Jpeg.Progressive.Bad.BadEOF
+ };
// TODO: We should make this comparer less tolerant ...
private static readonly ImageComparer VeryTolerantJpegComparer =
@@ -44,99 +50,117 @@ namespace SixLabors.ImageSharp.Tests
private ITestOutputHelper Output { get; }
- private static IImageDecoder OriginalDecoder => new OldJpegDecoder();
-
- private static IImageDecoder PdfJsDecoder => new JpegDecoder();
-
- private float GetDifferenceInPercents(Image image, TestImageProvider provider)
- where TPixel : struct, IPixel
- {
- var reportingComparer = ImageComparer.Tolerant(0, 0);
-
- ImageSimilarityReport report = image.GetReferenceOutputSimilarityReports(
- provider,
- reportingComparer,
- appendPixelTypeToFileName: false).SingleOrDefault();
-
- if (report != null && report.TotalNormalizedDifference.HasValue)
- {
- return report.TotalNormalizedDifference.Value * 100;
- }
-
- return 0;
- }
+ private static IImageDecoder OldJpegDecoder => new OldJpegDecoder();
+ private static IImageDecoder PdfJsJpegDecoder => new JpegDecoder();
+
[Theory]
- [WithFileCollection(nameof(BaselineTestJpegs), PixelTypes.Rgba32)]
- public void CompareJpegDecoders(TestImageProvider provider)
+ [WithFileCollection(nameof(BaselineTestJpegs), PixelTypes.Rgba32 | PixelTypes.Rgba32 | PixelTypes.Argb32)]
+ public void DecodeBaselineJpeg(TestImageProvider provider)
where TPixel : struct, IPixel
{
- this.Output.WriteLine(provider.SourceFileOrDescription);
- provider.Utility.TestName = nameof(this.DecodeBaselineJpeg);
-
- using (Image image = provider.GetImage(OriginalDecoder))
+ using (Image image = provider.GetImage(PdfJsJpegDecoder))
{
- double d = this.GetDifferenceInPercents(image, provider);
- this.Output.WriteLine($"Difference using ORIGINAL decoder: {d:0.0000}%");
- }
+ image.DebugSave(provider);
- using (Image image = provider.GetImage(PdfJsDecoder))
- {
- double d = this.GetDifferenceInPercents(image, provider);
- this.Output.WriteLine($"Difference using PDFJS decoder: {d:0.0000}%");
+ image.CompareToReferenceOutput(provider, VeryTolerantJpegComparer, appendPixelTypeToFileName: false);
}
}
[Theory]
[WithFileCollection(nameof(BaselineTestJpegs), PixelTypes.Rgba32 | PixelTypes.Rgba32 | PixelTypes.Argb32)]
- public void DecodeBaselineJpeg(TestImageProvider provider)
+ public void DecodeBaselineJpeg_Old(TestImageProvider provider)
where TPixel : struct, IPixel
{
- using (Image image = provider.GetImage(OriginalDecoder))
+ using (Image image = provider.GetImage(OldJpegDecoder))
{
image.DebugSave(provider);
+
+ provider.Utility.TestName = nameof(this.DecodeBaselineJpeg);
image.CompareToReferenceOutput(provider, VeryTolerantJpegComparer, appendPixelTypeToFileName: false);
}
}
[Theory]
- [WithFileCollection(nameof(BaselineTestJpegs), PixelTypes.Rgba32 | PixelTypes.Rgba32 | PixelTypes.Argb32)]
- public void DecodeBaselineJpeg_PdfJs(TestImageProvider provider)
+ [WithFileCollection(nameof(ProgressiveTestJpegs), PixelTypes.Rgba32 | PixelTypes.Rgba32 | PixelTypes.Argb32)]
+ public void DecodeProgressiveJpeg(TestImageProvider provider)
where TPixel : struct, IPixel
{
- using (Image image = provider.GetImage(PdfJsDecoder))
+ using (Image image = provider.GetImage(PdfJsJpegDecoder))
{
image.DebugSave(provider);
-
- provider.Utility.TestName = nameof(this.DecodeBaselineJpeg);
+
image.CompareToReferenceOutput(provider, VeryTolerantJpegComparer, appendPixelTypeToFileName: false);
}
}
[Theory]
[WithFileCollection(nameof(ProgressiveTestJpegs), PixelTypes.Rgba32 | PixelTypes.Rgba32 | PixelTypes.Argb32)]
- public void DecodeProgressiveJpeg(TestImageProvider provider)
+ public void DecodeProgressiveJpeg_Old(TestImageProvider provider)
where TPixel : struct, IPixel
{
- using (Image image = provider.GetImage(OriginalDecoder))
+ using (Image image = provider.GetImage(OldJpegDecoder))
{
- image.DebugSave(provider, VeryTolerantJpegComparer);
+ image.DebugSave(provider);
+
+ provider.Utility.TestName = nameof(this.DecodeProgressiveJpeg);
+ image.CompareToReferenceOutput(provider, VeryTolerantJpegComparer, appendPixelTypeToFileName: false);
}
}
+
+ private float GetDifferenceInPercents(Image image, TestImageProvider provider)
+ where TPixel : struct, IPixel
+ {
+ var reportingComparer = ImageComparer.Tolerant(0, 0);
+ ImageSimilarityReport report = image.GetReferenceOutputSimilarityReports(
+ provider,
+ reportingComparer,
+ appendPixelTypeToFileName: false).SingleOrDefault();
- [Theory]
- [WithFileCollection(nameof(ProgressiveTestJpegs), PixelTypes.Rgba32 | PixelTypes.Rgba32 | PixelTypes.Argb32)]
- public void DecodeProgressiveJpeg_PdfJs(TestImageProvider provider)
+ if (report != null && report.TotalNormalizedDifference.HasValue)
+ {
+ return report.TotalNormalizedDifference.Value * 100;
+ }
+
+ return 0;
+ }
+
+ private void CompareJpegDecodersImpl(TestImageProvider provider, string testName)
where TPixel : struct, IPixel
{
- using (Image image = provider.GetImage(PdfJsDecoder))
+ this.Output.WriteLine(provider.SourceFileOrDescription);
+ provider.Utility.TestName = testName;
+
+ using (Image image = provider.GetImage(OldJpegDecoder))
{
- image.DebugSave(provider, VeryTolerantJpegComparer);
+ double d = this.GetDifferenceInPercents(image, provider);
+ this.Output.WriteLine($"Difference using ORIGINAL decoder: {d:0.0000}%");
+ }
+
+ using (Image image = provider.GetImage(PdfJsJpegDecoder))
+ {
+ double d = this.GetDifferenceInPercents(image, provider);
+ this.Output.WriteLine($"Difference using PDFJS decoder: {d:0.0000}%");
}
}
+ [Theory]
+ [WithFileCollection(nameof(BaselineTestJpegs), PixelTypes.Rgba32)]
+ public void CompareJpegDecoders_Baseline(TestImageProvider provider)
+ where TPixel : struct, IPixel
+ {
+ this.CompareJpegDecodersImpl(provider, nameof(this.DecodeBaselineJpeg));
+ }
+ [Theory]
+ [WithFileCollection(nameof(ProgressiveTestJpegs), PixelTypes.Rgba32)]
+ public void CompareJpegDecoders_Progressive(TestImageProvider provider)
+ where TPixel : struct, IPixel
+ {
+ this.CompareJpegDecodersImpl(provider, nameof(this.DecodeProgressiveJpeg));
+ }
+
[Theory]
[WithSolidFilledImages(16, 16, 255, 0, 0, PixelTypes.Rgba32, JpegSubsample.Ratio420, 75)]
[WithSolidFilledImages(16, 16, 255, 0, 0, PixelTypes.Rgba32, JpegSubsample.Ratio420, 100)]
diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs
index 64c08b7e4..4adc9bd72 100644
--- a/tests/ImageSharp.Tests/TestImages.cs
+++ b/tests/ImageSharp.Tests/TestImages.cs
@@ -84,7 +84,7 @@ namespace SixLabors.ImageSharp.Tests
{
public static class Bad
{
- public const string MissingEOF = "Jpg/baseline/badeof.jpg";
+ public const string BadEOF = "Jpg/baseline/badeof.jpg";
public const string ExifUndefType = "Jpg/baseline/ExifUndefType.jpg";
}
diff --git a/tests/Images/External b/tests/Images/External
index 9ac60731a..086c854f0 160000
--- a/tests/Images/External
+++ b/tests/Images/External
@@ -1 +1 @@
-Subproject commit 9ac60731a5da104690453e104db84d6ed6971622
+Subproject commit 086c854f001e3bb1fa9085e76ba902171140dcc6