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() }
};
[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]
[WithTestPatternImages(nameof(ReSamplers), 100, 100, DefaultPixelType)]
[WithFileCollection(nameof(ResizeFiles), nameof(ReSamplers), DefaultPixelType)]
@ -41,7 +53,7 @@ namespace ImageSharp.Tests.Processing.Transforms
using (Image<TPixel> 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<TPixel> 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<TPixel> 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);
}
}

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.Drawing;
@ -18,7 +18,7 @@ namespace ImageSharp.Tests.TestUtilities.Integration
{
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(
@ -30,7 +30,7 @@ namespace ImageSharp.Tests.TestUtilities.Integration
{
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.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<T>
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 ImageSharp.PixelFormats;
using ImageSharp.Tests.TestUtilities.Integration;
using ImageSharp.Tests.TestUtilities.ReferenceCodecs;
public static class TestImageExtensions
{
@ -24,10 +24,13 @@ namespace ImageSharp.Tests
/// <param name="provider">The image provider</param>
/// <param name="settings">The settings</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>
{
string extension = "png";
if (TestEnvironment.RunsOnCI)
{
return image;
@ -65,7 +68,6 @@ namespace ImageSharp.Tests
{
ImageComparer.VerifySimilarity(referenceImage, image, imageTheshold, segmentThreshold, scalingFactor);
}
return image;
}

8
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<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");
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<TPixel> image = IntegrationTestUtils.FromSystemDrawingBitmap<TPixel>(sdBitmap))
using (Image<TPixel> image = SystemDrawingBridge.FromSystemDrawingBitmap<TPixel>(sdBitmap))
{
image.DebugSave(dummyProvider);
}
@ -65,7 +65,7 @@ namespace ImageSharp.Tests
{
using (Image<TPixel> image = provider.GetImage())
{
provider.Utility.SaveTestOutputFile(image, "png", ReferencePngEncoder.Instance);
provider.Utility.SaveTestOutputFile(image, "png", ReferenceEncoder.Png);
}
}
}

Loading…
Cancel
Save