diff --git a/tests/ImageSharp.Tests/Processing/Transforms/ResizeTests.cs b/tests/ImageSharp.Tests/Processing/Transforms/ResizeTests.cs index 296cc6797..a7274b05c 100644 --- a/tests/ImageSharp.Tests/Processing/Transforms/ResizeTests.cs +++ b/tests/ImageSharp.Tests/Processing/Transforms/ResizeTests.cs @@ -32,6 +32,18 @@ namespace ImageSharp.Tests.Processing.Transforms { "Welch", new WelchResampler() } }; + [Theory] + [WithFile(TestImages.Gif.Giphy, DefaultPixelType)] + public void ResizeShouldApplyToAllFrames(TestImageProvider provider) + where TPixel : struct, IPixel + { + using (Image image = provider.GetImage()) + { + image.Resize(image.Width / 2, image.Height / 2, true) + .CompareToReferenceOutput(provider, extension: "gif"); + } + } + [Theory] [WithTestPatternImages(nameof(ReSamplers), 100, 100, DefaultPixelType)] [WithFileCollection(nameof(ResizeFiles), nameof(ReSamplers), DefaultPixelType)] @@ -41,7 +53,7 @@ namespace ImageSharp.Tests.Processing.Transforms using (Image image = provider.GetImage()) { image.Resize(image.Width / 2, image.Height / 2, sampler, true) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -56,7 +68,7 @@ namespace ImageSharp.Tests.Processing.Transforms var destRectangle = new Rectangle(image.Width / 4, image.Height / 4, image.Width / 2, image.Height / 2); image.Resize(image.Width, image.Height, sampler, sourceRectangle, destRectangle, false) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -68,7 +80,7 @@ namespace ImageSharp.Tests.Processing.Transforms using (Image image = provider.GetImage()) { image.Resize(image.Width / 3, 0, sampler, false) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -80,7 +92,7 @@ namespace ImageSharp.Tests.Processing.Transforms using (Image image = provider.GetImage()) { image.Resize(0, image.Height / 3, sampler, false) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -98,7 +110,7 @@ namespace ImageSharp.Tests.Processing.Transforms }; image.Resize(options) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -116,7 +128,7 @@ namespace ImageSharp.Tests.Processing.Transforms }; image.Resize(options) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -135,7 +147,7 @@ namespace ImageSharp.Tests.Processing.Transforms }; image.Resize(options) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -154,7 +166,7 @@ namespace ImageSharp.Tests.Processing.Transforms }; image.Resize(options) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -173,7 +185,7 @@ namespace ImageSharp.Tests.Processing.Transforms }; image.Resize(options) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -192,7 +204,7 @@ namespace ImageSharp.Tests.Processing.Transforms }; image.Resize(options) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } @@ -211,7 +223,7 @@ namespace ImageSharp.Tests.Processing.Transforms }; image.Resize(options) - .DebugSave(provider, name); + .CompareToReferenceOutput(provider, name); } } diff --git a/tests/ImageSharp.Tests/TestUtilities/Integration/ReferencePngEncoder.cs b/tests/ImageSharp.Tests/TestUtilities/Integration/ReferencePngEncoder.cs deleted file mode 100644 index 3629f03e5..000000000 --- a/tests/ImageSharp.Tests/TestUtilities/Integration/ReferencePngEncoder.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using System.Text; - -namespace ImageSharp.Tests.TestUtilities.Integration -{ - using System.IO; - - using ImageSharp.Formats; - using ImageSharp.PixelFormats; - - public class ReferencePngEncoder : IImageEncoder - { - public static ReferencePngEncoder Instance { get; } = new ReferencePngEncoder(); - - public void Encode(Image image, Stream stream) - where TPixel : struct, IPixel - { - using (System.Drawing.Bitmap sdBitmap = IntegrationTestUtils.ToSystemDrawingBitmap(image)) - { - sdBitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png); - } - } - } -} diff --git a/tests/ImageSharp.Tests/TestUtilities/Integration/ReferenceDecoder.cs b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceDecoder.cs similarity index 81% rename from tests/ImageSharp.Tests/TestUtilities/Integration/ReferenceDecoder.cs rename to tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceDecoder.cs index 0ed3fda29..afb588b9f 100644 --- a/tests/ImageSharp.Tests/TestUtilities/Integration/ReferenceDecoder.cs +++ b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceDecoder.cs @@ -1,4 +1,4 @@ -namespace ImageSharp.Tests.TestUtilities.Integration +namespace ImageSharp.Tests.TestUtilities.ReferenceCodecs { using System; using System.Drawing; @@ -18,7 +18,7 @@ namespace ImageSharp.Tests.TestUtilities.Integration { if (sourceBitmap.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb) { - return IntegrationTestUtils.FromSystemDrawingBitmap(sourceBitmap); + return SystemDrawingBridge.FromSystemDrawingBitmap(sourceBitmap); } using (var convertedBitmap = new System.Drawing.Bitmap( @@ -30,7 +30,7 @@ namespace ImageSharp.Tests.TestUtilities.Integration { g.DrawImage(sourceBitmap, new PointF(0, 0)); } - return IntegrationTestUtils.FromSystemDrawingBitmap(convertedBitmap); + return SystemDrawingBridge.FromSystemDrawingBitmap(convertedBitmap); } } } diff --git a/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceEncoder.cs b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceEncoder.cs new file mode 100644 index 000000000..9018d66f7 --- /dev/null +++ b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceEncoder.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using System.Text; + +namespace ImageSharp.Tests.TestUtilities.ReferenceCodecs +{ + using System.Drawing.Imaging; + using System.IO; + + using ImageSharp.Formats; + using ImageSharp.PixelFormats; + + public class ReferenceEncoder : IImageEncoder + { + private readonly System.Drawing.Imaging.ImageFormat imageFormat; + + public ReferenceEncoder(ImageFormat imageFormat) + { + this.imageFormat = imageFormat; + } + + public static ReferenceEncoder Png { get; } = new ReferenceEncoder(System.Drawing.Imaging.ImageFormat.Png); + + public void Encode(Image image, Stream stream) + where TPixel : struct, IPixel + { + using (System.Drawing.Bitmap sdBitmap = SystemDrawingBridge.ToSystemDrawingBitmap(image)) + { + sdBitmap.Save(stream, this.imageFormat); + } + } + } +} diff --git a/tests/ImageSharp.Tests/TestUtilities/Integration/IntegrationTestUtils.cs b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs similarity index 97% rename from tests/ImageSharp.Tests/TestUtilities/Integration/IntegrationTestUtils.cs rename to tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs index 1bf90ac7d..46e672101 100644 --- a/tests/ImageSharp.Tests/TestUtilities/Integration/IntegrationTestUtils.cs +++ b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs @@ -1,4 +1,4 @@ -namespace ImageSharp.Tests.TestUtilities.Integration +namespace ImageSharp.Tests.TestUtilities.ReferenceCodecs { using System; using System.Drawing.Imaging; @@ -6,7 +6,7 @@ using ImageSharp.Memory; using ImageSharp.PixelFormats; - public static class IntegrationTestUtils + public static class SystemDrawingBridge { // TODO: It would be nice to have this method in PixelOperations private static void ToArgb32(Span source, Span dest) diff --git a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs index 54a24544f..7a40caad1 100644 --- a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs +++ b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs @@ -12,7 +12,7 @@ namespace ImageSharp.Tests using System.Reflection; using ImageSharp.PixelFormats; - using ImageSharp.Tests.TestUtilities.Integration; + using ImageSharp.Tests.TestUtilities.ReferenceCodecs; public static class TestImageExtensions { @@ -24,10 +24,13 @@ namespace ImageSharp.Tests /// The image provider /// The settings /// The extension - public static Image DebugSave(this Image image, ITestImageProvider provider, object settings = null/*, string extension = "png"*/) + public static Image DebugSave( + this Image image, + ITestImageProvider provider, + object settings = null, + string extension = "png") where TPixel : struct, IPixel { - string extension = "png"; if (TestEnvironment.RunsOnCI) { return image; @@ -65,7 +68,6 @@ namespace ImageSharp.Tests { ImageComparer.VerifySimilarity(referenceImage, image, imageTheshold, segmentThreshold, scalingFactor); } - return image; } diff --git a/tests/ImageSharp.Tests/TestUtilities/Tests/IntegrationTestUtilsTests.cs b/tests/ImageSharp.Tests/TestUtilities/Tests/IntegrationTestUtilsTests.cs index 94c9d0ef6..bf4631f3d 100644 --- a/tests/ImageSharp.Tests/TestUtilities/Tests/IntegrationTestUtilsTests.cs +++ b/tests/ImageSharp.Tests/TestUtilities/Tests/IntegrationTestUtilsTests.cs @@ -1,7 +1,7 @@ namespace ImageSharp.Tests { using ImageSharp.PixelFormats; - using ImageSharp.Tests.TestUtilities.Integration; + using ImageSharp.Tests.TestUtilities.ReferenceCodecs; using Xunit; using Xunit.Abstractions; @@ -22,7 +22,7 @@ namespace ImageSharp.Tests { using (Image image = provider.GetImage()) { - using (System.Drawing.Bitmap sdBitmap = IntegrationTestUtils.ToSystemDrawingBitmap(image)) + using (System.Drawing.Bitmap sdBitmap = SystemDrawingBridge.ToSystemDrawingBitmap(image)) { string fileName = provider.Utility.GetTestOutputFileName("png"); sdBitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.Png); @@ -39,7 +39,7 @@ namespace ImageSharp.Tests using (var sdBitmap = new System.Drawing.Bitmap(path)) { - using (Image image = IntegrationTestUtils.FromSystemDrawingBitmap(sdBitmap)) + using (Image image = SystemDrawingBridge.FromSystemDrawingBitmap(sdBitmap)) { image.DebugSave(dummyProvider); } @@ -65,7 +65,7 @@ namespace ImageSharp.Tests { using (Image image = provider.GetImage()) { - provider.Utility.SaveTestOutputFile(image, "png", ReferencePngEncoder.Instance); + provider.Utility.SaveTestOutputFile(image, "png", ReferenceEncoder.Png); } } }