Browse Source

test utility refactors

af/merge-core
Anton Firszov 9 years ago
parent
commit
ae86002eb6
  1. 34
      tests/ImageSharp.Tests/Processing/Transforms/ResizeTests.cs
  2. 24
      tests/ImageSharp.Tests/TestUtilities/Integration/ReferencePngEncoder.cs
  3. 6
      tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceDecoder.cs
  4. 32
      tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/ReferenceEncoder.cs
  5. 4
      tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs
  6. 10
      tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
  7. 8
      tests/ImageSharp.Tests/TestUtilities/Tests/IntegrationTestUtilsTests.cs

34
tests/ImageSharp.Tests/Processing/Transforms/ResizeTests.cs

@ -32,6 +32,18 @@ namespace ImageSharp.Tests.Processing.Transforms
{ "Welch", new WelchResampler() } { "Welch", new WelchResampler() }
}; };
[Theory]
[WithFile(TestImages.Gif.Giphy, DefaultPixelType)]
public void ResizeShouldApplyToAllFrames<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage())
{
image.Resize(image.Width / 2, image.Height / 2, true)
.CompareToReferenceOutput(provider, extension: "gif");
}
}
[Theory] [Theory]
[WithTestPatternImages(nameof(ReSamplers), 100, 100, DefaultPixelType)] [WithTestPatternImages(nameof(ReSamplers), 100, 100, DefaultPixelType)]
[WithFileCollection(nameof(ResizeFiles), nameof(ReSamplers), DefaultPixelType)] [WithFileCollection(nameof(ResizeFiles), nameof(ReSamplers), DefaultPixelType)]
@ -41,7 +53,7 @@ namespace ImageSharp.Tests.Processing.Transforms
using (Image<TPixel> image = provider.GetImage()) using (Image<TPixel> image = provider.GetImage())
{ {
image.Resize(image.Width / 2, image.Height / 2, sampler, true) 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); 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) 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<TPixel> image = provider.GetImage()) using (Image<TPixel> image = provider.GetImage())
{ {
image.Resize(image.Width / 3, 0, sampler, false) 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<TPixel> image = provider.GetImage()) using (Image<TPixel> image = provider.GetImage())
{ {
image.Resize(0, image.Height / 3, sampler, false) 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) image.Resize(options)
.DebugSave(provider, name); .CompareToReferenceOutput(provider, name);
} }
} }
@ -116,7 +128,7 @@ namespace ImageSharp.Tests.Processing.Transforms
}; };
image.Resize(options) image.Resize(options)
.DebugSave(provider, name); .CompareToReferenceOutput(provider, name);
} }
} }
@ -135,7 +147,7 @@ namespace ImageSharp.Tests.Processing.Transforms
}; };
image.Resize(options) image.Resize(options)
.DebugSave(provider, name); .CompareToReferenceOutput(provider, name);
} }
} }
@ -154,7 +166,7 @@ namespace ImageSharp.Tests.Processing.Transforms
}; };
image.Resize(options) image.Resize(options)
.DebugSave(provider, name); .CompareToReferenceOutput(provider, name);
} }
} }
@ -173,7 +185,7 @@ namespace ImageSharp.Tests.Processing.Transforms
}; };
image.Resize(options) image.Resize(options)
.DebugSave(provider, name); .CompareToReferenceOutput(provider, name);
} }
} }
@ -192,7 +204,7 @@ namespace ImageSharp.Tests.Processing.Transforms
}; };
image.Resize(options) image.Resize(options)
.DebugSave(provider, name); .CompareToReferenceOutput(provider, name);
} }
} }
@ -211,7 +223,7 @@ namespace ImageSharp.Tests.Processing.Transforms
}; };
image.Resize(options) image.Resize(options)
.DebugSave(provider, name); .CompareToReferenceOutput(provider, name);
} }
} }

24
tests/ImageSharp.Tests/TestUtilities/Integration/ReferencePngEncoder.cs

@ -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<TPixel>(Image<TPixel> image, Stream stream)
where TPixel : struct, IPixel<TPixel>
{
using (System.Drawing.Bitmap sdBitmap = IntegrationTestUtils.ToSystemDrawingBitmap(image))
{
sdBitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
}
}
}
}

6
tests/ImageSharp.Tests/TestUtilities/Integration/ReferenceDecoder.cs → 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;
using System.Drawing; using System.Drawing;
@ -18,7 +18,7 @@ namespace ImageSharp.Tests.TestUtilities.Integration
{ {
if (sourceBitmap.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb) if (sourceBitmap.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb)
{ {
return IntegrationTestUtils.FromSystemDrawingBitmap<TPixel>(sourceBitmap); return SystemDrawingBridge.FromSystemDrawingBitmap<TPixel>(sourceBitmap);
} }
using (var convertedBitmap = new System.Drawing.Bitmap( using (var convertedBitmap = new System.Drawing.Bitmap(
@ -30,7 +30,7 @@ namespace ImageSharp.Tests.TestUtilities.Integration
{ {
g.DrawImage(sourceBitmap, new PointF(0, 0)); g.DrawImage(sourceBitmap, new PointF(0, 0));
} }
return IntegrationTestUtils.FromSystemDrawingBitmap<TPixel>(convertedBitmap); return SystemDrawingBridge.FromSystemDrawingBitmap<TPixel>(convertedBitmap);
} }
} }
} }

32
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<TPixel>(Image<TPixel> image, Stream stream)
where TPixel : struct, IPixel<TPixel>
{
using (System.Drawing.Bitmap sdBitmap = SystemDrawingBridge.ToSystemDrawingBitmap(image))
{
sdBitmap.Save(stream, this.imageFormat);
}
}
}
}

4
tests/ImageSharp.Tests/TestUtilities/Integration/IntegrationTestUtils.cs → 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;
using System.Drawing.Imaging; using System.Drawing.Imaging;
@ -6,7 +6,7 @@
using ImageSharp.Memory; using ImageSharp.Memory;
using ImageSharp.PixelFormats; using ImageSharp.PixelFormats;
public static class IntegrationTestUtils public static class SystemDrawingBridge
{ {
// TODO: It would be nice to have this method in PixelOperations<T> // TODO: It would be nice to have this method in PixelOperations<T>
private static void ToArgb32<TPixel>(Span<TPixel> source, Span<Argb32> dest) private static void ToArgb32<TPixel>(Span<TPixel> source, Span<Argb32> dest)

10
tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs

@ -12,7 +12,7 @@ namespace ImageSharp.Tests
using System.Reflection; using System.Reflection;
using ImageSharp.PixelFormats; using ImageSharp.PixelFormats;
using ImageSharp.Tests.TestUtilities.Integration; using ImageSharp.Tests.TestUtilities.ReferenceCodecs;
public static class TestImageExtensions public static class TestImageExtensions
{ {
@ -24,10 +24,13 @@ namespace ImageSharp.Tests
/// <param name="provider">The image provider</param> /// <param name="provider">The image provider</param>
/// <param name="settings">The settings</param> /// <param name="settings">The settings</param>
/// <param name="extension">The extension</param> /// <param name="extension">The extension</param>
public static Image<TPixel> DebugSave<TPixel>(this Image<TPixel> image, ITestImageProvider provider, object settings = null/*, string extension = "png"*/) public static Image<TPixel> DebugSave<TPixel>(
this Image<TPixel> image,
ITestImageProvider provider,
object settings = null,
string extension = "png")
where TPixel : struct, IPixel<TPixel> where TPixel : struct, IPixel<TPixel>
{ {
string extension = "png";
if (TestEnvironment.RunsOnCI) if (TestEnvironment.RunsOnCI)
{ {
return image; return image;
@ -65,7 +68,6 @@ namespace ImageSharp.Tests
{ {
ImageComparer.VerifySimilarity(referenceImage, image, imageTheshold, segmentThreshold, scalingFactor); ImageComparer.VerifySimilarity(referenceImage, image, imageTheshold, segmentThreshold, scalingFactor);
} }
return image; return image;
} }

8
tests/ImageSharp.Tests/TestUtilities/Tests/IntegrationTestUtilsTests.cs

@ -1,7 +1,7 @@
namespace ImageSharp.Tests namespace ImageSharp.Tests
{ {
using ImageSharp.PixelFormats; using ImageSharp.PixelFormats;
using ImageSharp.Tests.TestUtilities.Integration; using ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
@ -22,7 +22,7 @@ namespace ImageSharp.Tests
{ {
using (Image<TPixel> image = provider.GetImage()) using (Image<TPixel> 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"); string fileName = provider.Utility.GetTestOutputFileName("png");
sdBitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.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 (var sdBitmap = new System.Drawing.Bitmap(path))
{ {
using (Image<TPixel> image = IntegrationTestUtils.FromSystemDrawingBitmap<TPixel>(sdBitmap)) using (Image<TPixel> image = SystemDrawingBridge.FromSystemDrawingBitmap<TPixel>(sdBitmap))
{ {
image.DebugSave(dummyProvider); image.DebugSave(dummyProvider);
} }
@ -65,7 +65,7 @@ namespace ImageSharp.Tests
{ {
using (Image<TPixel> image = provider.GetImage()) using (Image<TPixel> image = provider.GetImage())
{ {
provider.Utility.SaveTestOutputFile(image, "png", ReferencePngEncoder.Instance); provider.Utility.SaveTestOutputFile(image, "png", ReferenceEncoder.Png);
} }
} }
} }

Loading…
Cancel
Save