From fdab53637626ea496d9abcfa8febc1aedae15786 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Fri, 4 Oct 2019 20:40:11 +0200 Subject: [PATCH] Add unit test for issue #1014 --- .../Formats/Png/PngDecoderTests.cs | 24 ++++++++++++++++++ tests/ImageSharp.Tests/TestImages.cs | 8 ++++++ .../Images/Input/Png/issues/Issue_1014_1.png | Bin 0 -> 3965 bytes .../Images/Input/Png/issues/Issue_1014_2.png | Bin 0 -> 6626 bytes .../Images/Input/Png/issues/Issue_1014_3.png | Bin 0 -> 4157 bytes .../Images/Input/Png/issues/Issue_1014_4.png | Bin 0 -> 3328 bytes .../Images/Input/Png/issues/Issue_1014_5.png | Bin 0 -> 4085 bytes .../Images/Input/Png/issues/Issue_1014_6.png | Bin 0 -> 2114 bytes 8 files changed, 32 insertions(+) create mode 100644 tests/Images/Input/Png/issues/Issue_1014_1.png create mode 100644 tests/Images/Input/Png/issues/Issue_1014_2.png create mode 100644 tests/Images/Input/Png/issues/Issue_1014_3.png create mode 100644 tests/Images/Input/Png/issues/Issue_1014_4.png create mode 100644 tests/Images/Input/Png/issues/Issue_1014_5.png create mode 100644 tests/Images/Input/Png/issues/Issue_1014_6.png diff --git a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs index 91b1ef2c1..2a76310fc 100644 --- a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs @@ -75,6 +75,13 @@ namespace SixLabors.ImageSharp.Tests.Formats.Png TestImages.Png.GrayAlpha8BitInterlaced }; + public static readonly string[] TestImagesIssue1014 = + { + TestImages.Png.Issue1014_1, TestImages.Png.Issue1014_2, + TestImages.Png.Issue1014_3, TestImages.Png.Issue1014_4, + TestImages.Png.Issue1014_5, TestImages.Png.Issue1014_6 + }; + [Theory] [WithFileCollection(nameof(CommonTestImages), PixelTypes.Rgba32)] public void Decode(TestImageProvider provider) @@ -199,5 +206,22 @@ namespace SixLabors.ImageSharp.Tests.Formats.Png Assert.Equal(expectedPixelSize, Image.Identify(stream)?.PixelType?.BitsPerPixel); } } + + [Theory] + [WithFileCollection(nameof(TestImagesIssue1014), PixelTypes.Rgba32)] + public void Issue1014(TestImageProvider provider) + where TPixel : struct, IPixel + { + System.Exception ex = Record.Exception( + () => + { + using (Image image = provider.GetImage(new PngDecoder())) + { + image.DebugSave(provider); + // TODO: compare to expected output + } + }); + Assert.Null(ex); + } } } diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 163d09bdd..146f2efcd 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -82,6 +82,14 @@ namespace SixLabors.ImageSharp.Tests public const string Ducky = "Png/ducky.png"; public const string Rainbow = "Png/rainbow.png"; + // Issue 1014: https://github.com/SixLabors/ImageSharp/issues/1014 + public const string Issue1014_1 = "Png/issues/Issue_1014_1.png"; + public const string Issue1014_2 = "Png/issues/Issue_1014_2.png"; + public const string Issue1014_3 = "Png/issues/Issue_1014_3.png"; + public const string Issue1014_4 = "Png/issues/Issue_1014_4.png"; + public const string Issue1014_5 = "Png/issues/Issue_1014_5.png"; + public const string Issue1014_6 = "Png/issues/Issue_1014_6.png"; + public static class Bad { // Odd chunk lengths diff --git a/tests/Images/Input/Png/issues/Issue_1014_1.png b/tests/Images/Input/Png/issues/Issue_1014_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2cbd401e61ca8754b1e43b994518602bc70b330e GIT binary patch literal 3965 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 TdTltkZopv=%C2CS_r-q#=xJ4R literal 0 HcmV?d00001 diff --git a/tests/Images/Input/Png/issues/Issue_1014_2.png b/tests/Images/Input/Png/issues/Issue_1014_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1c8ea5b9777ccb3e21b36c517d7c0485b3a53e GIT binary patch literal 6626 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 literal 0 HcmV?d00001 diff --git a/tests/Images/Input/Png/issues/Issue_1014_3.png b/tests/Images/Input/Png/issues/Issue_1014_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3a7a8ed2c003ae26420ce39acc31a38bf3757b62 GIT binary patch literal 4157 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 S6K%qK0aoYjEeg+h-uw?P|F}8; literal 0 HcmV?d00001 diff --git a/tests/Images/Input/Png/issues/Issue_1014_4.png b/tests/Images/Input/Png/issues/Issue_1014_4.png new file mode 100644 index 0000000000000000000000000000000000000000..54d099427d3f9d63db566f2f2ec1bbfa1fc6a548 GIT binary patch literal 3328 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 literal 0 HcmV?d00001