diff --git a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs index 53f71fb7b9..586ca9bba6 100644 --- a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs @@ -1,28 +1,24 @@ // Copyright (c) Six Labors and contributors. // Licensed under the Apache License, Version 2.0. +// ReSharper disable InconsistentNaming + +using System.Buffers.Binary; using System.IO; using System.Text; + +using SixLabors.ImageSharp.Formats.Png; using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; + using Xunit; -// ReSharper disable InconsistentNaming -namespace SixLabors.ImageSharp.Tests +namespace SixLabors.ImageSharp.Tests.Formats.Png { - using System.Buffers.Binary; - using System.Linq; - - using SixLabors.ImageSharp.Formats.Png; - using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; - - // TODO: Fix all bugs, and re enable Skipped and commented stuff !!! public class PngDecoderTests { private const PixelTypes PixelTypes = Tests.PixelTypes.Rgba32 | Tests.PixelTypes.RgbaVector | Tests.PixelTypes.Argb32; - - // TODO: Cannot use exact comparer since System.Drawing doesn't preserve more than 32bits. - private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.1302F, 2134); - + // Contains the png marker, IHDR and pHYs chunks of a 1x1 pixel 32bit png 1 a single black pixel. private static readonly byte[] raw1x1PngIHDRAndpHYs = { @@ -105,30 +101,6 @@ namespace SixLabors.ImageSharp.Tests TestImages.Png.GrayTrns16BitInterlaced }; - // This is a workaround for Mono-s decoder being incompatible with ours and GDI+. - // We shouldn't mix these with the Interleaved cases (which are also failing with Mono System.Drawing). Let's go AAA! - private static readonly string[] SkipOnMono = - { - TestImages.Png.Bad.ChunkLength2, - TestImages.Png.VimImage2, - TestImages.Png.Splash, - TestImages.Png.Indexed, - TestImages.Png.Bad.ChunkLength1, - TestImages.Png.VersioningImage1, - TestImages.Png.Banner7Adam7InterlaceMode, - TestImages.Png.GrayTrns16BitInterlaced, - TestImages.Png.Rgb48BppInterlaced - }; - - private static bool SkipVerification(ITestImageProvider provider) - { - string fn = provider.SourceFileOrDescription; - - // This is a workaround for Mono-s decoder being incompatible with ours and GDI+. - // We shouldn't mix these with the Interleaved cases (which are also failing with Mono System.Drawing). Let's go AAA! - return (TestEnvironment.IsLinux || TestEnvironment.IsMono) && SkipOnMono.Contains(fn); - } - [Theory] [WithFileCollection(nameof(CommonTestImages), PixelTypes.Rgba32)] public void Decode(TestImageProvider provider) @@ -137,22 +109,7 @@ namespace SixLabors.ImageSharp.Tests using (Image image = provider.GetImage(new PngDecoder())) { image.DebugSave(provider); - - if (!SkipVerification(provider)) - { - image.CompareToOriginal(provider, ImageComparer.Exact); - } - } - } - - [Theory] - [WithFile(TestImages.Png.Interlaced, PixelTypes.Rgba32)] - public void Decode_Interlaced_DoesNotThrow(TestImageProvider provider) - where TPixel : struct, IPixel - { - using (Image image = provider.GetImage(new PngDecoder())) - { - image.DebugSave(provider); + image.CompareToOriginal(provider, ImageComparer.Exact); } } @@ -175,12 +132,8 @@ namespace SixLabors.ImageSharp.Tests { using (Image image = provider.GetImage(new PngDecoder())) { - var encoder = new PngEncoder { ColorType = PngColorType.Rgb, BitDepth = PngBitDepth.Bit16 }; - - if (!SkipVerification(provider)) - { - image.VerifyEncoder(provider, "png", null, encoder, customComparer: ValidatorComparer); - } + image.DebugSave(provider); + image.CompareToOriginal(provider, ImageComparer.Exact); } } @@ -191,12 +144,8 @@ namespace SixLabors.ImageSharp.Tests { using (Image image = provider.GetImage(new PngDecoder())) { - var encoder = new PngEncoder { ColorType = PngColorType.RgbWithAlpha, BitDepth = PngBitDepth.Bit16 }; - - if (!SkipVerification(provider)) - { - image.VerifyEncoder(provider, "png", null, encoder, customComparer: ValidatorComparer); - } + image.DebugSave(provider); + image.CompareToOriginal(provider, ImageComparer.Exact); } } @@ -207,12 +156,8 @@ namespace SixLabors.ImageSharp.Tests { using (Image image = provider.GetImage(new PngDecoder())) { - var encoder = new PngEncoder { ColorType = PngColorType.Grayscale, BitDepth = PngBitDepth.Bit16 }; - - if (!SkipVerification(provider)) - { - image.VerifyEncoder(provider, "png", null, encoder, customComparer: ValidatorComparer); - } + image.DebugSave(provider); + image.CompareToOriginal(provider, ImageComparer.Exact); } } @@ -223,12 +168,8 @@ namespace SixLabors.ImageSharp.Tests { using (Image image = provider.GetImage(new PngDecoder())) { - var encoder = new PngEncoder { ColorType = PngColorType.GrayscaleWithAlpha, BitDepth = PngBitDepth.Bit16 }; - - if (!SkipVerification(provider)) - { - image.VerifyEncoder(provider, "png", null, encoder, customComparer: ValidatorComparer); - } + image.DebugSave(provider); + image.CompareToOriginal(provider, ImageComparer.Exact); } } @@ -303,7 +244,7 @@ namespace SixLabors.ImageSharp.Tests [InlineData(TestImages.Png.Blur, 32)] [InlineData(TestImages.Png.Rgb48Bpp, 48)] [InlineData(TestImages.Png.Rgb48BppInterlaced, 48)] - public void DetectPixelSize(string imagePath, int expectedPixelSize) + public void Identify(string imagePath, int expectedPixelSize) { var testFile = TestFile.Create(imagePath); using (var stream = new MemoryStream(testFile.Bytes, false))