Browse Source

Speed up greyscale tests by using test pattern.

af/merge-core
Scott Williams 9 years ago
parent
commit
41c1654c8e
  1. 34
      tests/ImageSharp.Tests/Processors/Filters/GrayscaleTest.cs
  2. 20
      tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs

34
tests/ImageSharp.Tests/Processors/Filters/GrayscaleTest.cs

@ -9,30 +9,32 @@ namespace ImageSharp.Tests
using Xunit;
using ImageSharp.Processing;
using ImageSharp.Tests;
using System.Numerics;
public class GrayscaleTest : FileTestBase
{
public static readonly TheoryData<GrayscaleMode> GrayscaleValues
= new TheoryData<GrayscaleMode>
{
GrayscaleMode.Bt709 ,
GrayscaleMode.Bt601 ,
};
/// <summary>
/// Use test patterns over loaded images to save decode time.
/// </summary>
[Theory]
[MemberData(nameof(GrayscaleValues))]
public void ImageShouldApplyGrayscaleFilter(GrayscaleMode value)
[WithTestPatternImages(50, 50, PixelTypes.StandardImageClass, GrayscaleMode.Bt709)]
[WithTestPatternImages(50, 50, PixelTypes.StandardImageClass, GrayscaleMode.Bt601)]
public void ImageShouldApplyGrayscaleFilterAll<TColor>(TestImageProvider<TColor> provider, GrayscaleMode value)
where TColor : struct, IPixel<TColor>
{
string path = this.CreateOutputDirectory("Grayscale");
foreach (TestFile file in Files)
using (Image<TColor> image = provider.GetImage())
{
string filename = file.GetFileName(value);
using (Image image = file.CreateImage())
using (FileStream output = File.OpenWrite($"{path}/{filename}"))
image.Grayscale(value);
byte[] data = new byte[3];
foreach (TColor p in image.Pixels)
{
image.Grayscale(value).Save(output);
p.ToXyzBytes(data, 0);
Assert.Equal(data[0], data[1]);
Assert.Equal(data[1], data[2]);
}
image.DebugSave(provider);
}
}
}

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

@ -0,0 +1,20 @@

namespace ImageSharp.Tests
{
using System;
using System.Collections.Generic;
using System.Text;
public static class TestImageExtensions
{
public static void DebugSave<TColor>(this Image<TColor> img, TestImageProvider<TColor> provider, string extension = "png")
where TColor : struct, IPixel<TColor>
{
if(!bool.TryParse(Environment.GetEnvironmentVariable("CI"), out bool isCI) || !isCI)
{
// we are running locally then we want to save it out
provider.Utility.SaveTestOutputFile(img, extension);
}
}
}
}
Loading…
Cancel
Save