diff --git a/tests/ImageSharp.Tests/FileTestBase.cs b/tests/ImageSharp.Tests/FileTestBase.cs
index 4316efdd8..654cdf64e 100644
--- a/tests/ImageSharp.Tests/FileTestBase.cs
+++ b/tests/ImageSharp.Tests/FileTestBase.cs
@@ -35,7 +35,7 @@ namespace ImageSharp.Tests
///
/// The standard pixel formats enumerations
///
- public const PixelTypes StandardPixelTypes = PixelTypes.StandardImageClass | PixelTypes.Rgba32 | PixelTypes.Argb32;
+ public const PixelTypes StandardPixelTypes = PixelTypes.StandardImageClass | PixelTypes.Rgba32;
public static class Extensions
{
diff --git a/tests/ImageSharp.Tests/Processing/ColorMatrix/BlackWhiteTest.cs b/tests/ImageSharp.Tests/Processing/ColorMatrix/BlackWhiteTest.cs
new file mode 100644
index 000000000..cc9c42d51
--- /dev/null
+++ b/tests/ImageSharp.Tests/Processing/ColorMatrix/BlackWhiteTest.cs
@@ -0,0 +1,46 @@
+//
+// Copyright (c) James Jackson-South and contributors.
+// Licensed under the Apache License, Version 2.0.
+//
+
+namespace ImageSharp.Tests.Processing.ColorMatrix
+{
+ using ImageSharp.PixelFormats;
+
+ using Xunit;
+
+ public class BlackWhiteTest : FileTestBase
+ {
+ [Fact]
+ [WithFileCollection(nameof(AllBmpFiles), StandardPixelTypes)]
+ public void ImageShouldApplyBlackWhiteFilter(TestImageProvider provider)
+ where TPixel : struct, IPixel
+ {
+ using (Image image = provider.GetImage())
+ {
+ image.BlackWhite()
+ .DebugSave(provider, null, Extensions.Bmp);
+ }
+ }
+
+ [Fact]
+ [WithFileCollection(nameof(AllBmpFiles), StandardPixelTypes)]
+ public void ImageShouldApplyBlackWhiteFilterInBox(TestImageProvider provider)
+ where TPixel : struct, IPixel
+ {
+ using (Image source = provider.GetImage())
+ using (var image = new Image(source))
+ {
+ var bounds = new Rectangle(10, 10, image.Width / 2, image.Height / 2);
+
+ image.BlackWhite(bounds)
+ .DebugSave(provider, null, Extensions.Bmp);
+
+ // Draw identical shapes over the bounded and compare to ensure changes are constrained.
+ image.Fill(NamedColors.HotPink, bounds);
+ source.Fill(NamedColors.HotPink, bounds);
+ ImageComparer.CheckSimilarity(image, source);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/ImageSharp.Tests/Processing/ColorMatrix/ColorBlindnessTest.cs b/tests/ImageSharp.Tests/Processing/ColorMatrix/ColorBlindnessTest.cs
new file mode 100644
index 000000000..4a8273281
--- /dev/null
+++ b/tests/ImageSharp.Tests/Processing/ColorMatrix/ColorBlindnessTest.cs
@@ -0,0 +1,60 @@
+//
+// Copyright (c) James Jackson-South and contributors.
+// Licensed under the Apache License, Version 2.0.
+//
+
+namespace ImageSharp.Tests.Processing.ColorMatrix
+{
+ using ImageSharp.PixelFormats;
+ using ImageSharp.Processing;
+
+ using Xunit;
+
+ public class ColorBlindnessTest : FileTestBase
+ {
+ public static readonly TheoryData ColorBlindnessFilters
+ = new TheoryData
+ {
+ ColorBlindness.Achromatomaly,
+ ColorBlindness.Achromatopsia,
+ ColorBlindness.Deuteranomaly,
+ ColorBlindness.Deuteranopia,
+ ColorBlindness.Protanomaly,
+ ColorBlindness.Protanopia,
+ ColorBlindness.Tritanomaly,
+ ColorBlindness.Tritanopia
+ };
+
+ [Theory]
+ [WithFileCollection(nameof(AllBmpFiles), nameof(ColorBlindnessFilters), StandardPixelTypes)]
+ public void ImageShouldApplyColorBlindnessFilter(TestImageProvider provider, ColorBlindness colorBlindness)
+ where TPixel : struct, IPixel
+ {
+ using (Image image = provider.GetImage())
+ {
+ image.ColorBlindness(colorBlindness)
+ .DebugSave(provider, null, Extensions.Bmp);
+ }
+ }
+
+ [Theory]
+ [WithFileCollection(nameof(AllBmpFiles), nameof(ColorBlindnessFilters), StandardPixelTypes)]
+ public void ImageShouldApplyColorBlindnessFilterInBox(TestImageProvider provider, ColorBlindness colorBlindness)
+ where TPixel : struct, IPixel
+ {
+ using (Image source = provider.GetImage())
+ using (var image = new Image(source))
+ {
+ var bounds = new Rectangle(10, 10, image.Width / 2, image.Height / 2);
+
+ image.ColorBlindness(colorBlindness, bounds)
+ .DebugSave(provider, null, Extensions.Bmp);
+
+ // Draw identical shapes over the bounded and compare to ensure changes are constrained.
+ image.Fill(NamedColors.HotPink, bounds);
+ source.Fill(NamedColors.HotPink, bounds);
+ ImageComparer.CheckSimilarity(image, source);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/ImageSharp.Tests/Processors/Filters/GrayscaleTest.cs b/tests/ImageSharp.Tests/Processing/ColorMatrix/GrayscaleTest.cs
similarity index 63%
rename from tests/ImageSharp.Tests/Processors/Filters/GrayscaleTest.cs
rename to tests/ImageSharp.Tests/Processing/ColorMatrix/GrayscaleTest.cs
index 2e82191ec..be0983df8 100644
--- a/tests/ImageSharp.Tests/Processors/Filters/GrayscaleTest.cs
+++ b/tests/ImageSharp.Tests/Processing/ColorMatrix/GrayscaleTest.cs
@@ -3,21 +3,27 @@
// Licensed under the Apache License, Version 2.0.
//
-namespace ImageSharp.Tests
+namespace ImageSharp.Tests.Processing.ColorMatrix
{
- using Xunit;
+ using ImageSharp.PixelFormats;
using ImageSharp.Processing;
- using ImageSharp.PixelFormats;
+ using Xunit;
public class GrayscaleTest : FileTestBase
{
+ public static readonly TheoryData GrayscaleModeTypes
+ = new TheoryData
+ {
+ GrayscaleMode.Bt601,
+ GrayscaleMode.Bt709
+ };
+
///
/// Use test patterns over loaded images to save decode time.
///
[Theory]
- [WithTestPatternImages(50, 50, PixelTypes.StandardImageClass, GrayscaleMode.Bt709)]
- [WithTestPatternImages(50, 50, PixelTypes.StandardImageClass, GrayscaleMode.Bt601)]
+ [WithTestPatternImages(nameof(GrayscaleModeTypes), 50, 50, StandardPixelTypes)]
public void ImageShouldApplyGrayscaleFilterAll(TestImageProvider provider, GrayscaleMode value)
where TPixel : struct, IPixel
{
@@ -37,21 +43,20 @@ namespace ImageSharp.Tests
}
[Theory]
- [WithTestPatternImages(50, 50, PixelTypes.StandardImageClass, GrayscaleMode.Bt709)]
- [WithTestPatternImages(50, 50, PixelTypes.StandardImageClass, GrayscaleMode.Bt601)]
+ [WithTestPatternImages(nameof(GrayscaleModeTypes), 50, 50, StandardPixelTypes)]
public void ImageShouldApplyGrayscaleFilterInBox(TestImageProvider provider, GrayscaleMode value)
where TPixel : struct, IPixel
{
using (Image source = provider.GetImage())
- using (Image image = new Image(source))
+ using (var image = new Image(source))
{
- Rectangle rect = new Rectangle(image.Width / 4, image.Height / 4, image.Width / 2, image.Height / 2);
- image.Grayscale(rect, value)
+ var bounds = new Rectangle(image.Width / 4, image.Height / 4, image.Width / 2, image.Height / 2);
+ image.Grayscale(bounds, value)
.DebugSave(provider, value.ToString());
- // Let's draw identical shapes over the greyed areas and ensure that it didn't change the outer area
- image.Fill(NamedColors.HotPink, rect);
- source.Fill(NamedColors.HotPink, rect);
+ // Draw identical shapes over the bounded and compare to ensure changes are constrained.
+ image.Fill(NamedColors.HotPink, bounds);
+ source.Fill(NamedColors.HotPink, bounds);
ImageComparer.CheckSimilarity(image, source);
}
}
diff --git a/tests/ImageSharp.Tests/Processors/Filters/BlackWhiteTest.cs b/tests/ImageSharp.Tests/Processors/Filters/BlackWhiteTest.cs
deleted file mode 100644
index d10698a99..000000000
--- a/tests/ImageSharp.Tests/Processors/Filters/BlackWhiteTest.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// Copyright (c) James Jackson-South and contributors.
-// Licensed under the Apache License, Version 2.0.
-//
-
-namespace ImageSharp.Tests
-{
- using System.IO;
-
- using ImageSharp.PixelFormats;
-
- using Xunit;
-
- public class BlackWhiteTest : FileTestBase
- {
- [Fact]
- public void ImageShouldApplyBlackWhiteFilter()
- {
- string path = this.CreateOutputDirectory("BlackWhite");
-
- foreach (TestFile file in Files)
- {
- using (Image image = file.CreateImage())
- using (FileStream output = File.OpenWrite($"{path}/{file.FileName}"))
- {
- image.BlackWhite().Save(output);
- }
- }
- }
-
- [Fact]
- public void ImageShouldApplyBlackWhiteFilterInBox()
- {
- string path = this.CreateOutputDirectory("BlackWhite");
-
- foreach (TestFile file in Files)
- {
- string filename = file.GetFileName("-InBox");
- using (Image image = file.CreateImage())
- using (FileStream output = File.OpenWrite($"{path}/{filename}"))
- {
- image.BlackWhite(new Rectangle(10, 10, image.Width / 2, image.Height / 2)).Save(output);
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/tests/ImageSharp.Tests/Processors/Filters/ColorBlindnessTest.cs b/tests/ImageSharp.Tests/Processors/Filters/ColorBlindnessTest.cs
deleted file mode 100644
index a04726871..000000000
--- a/tests/ImageSharp.Tests/Processors/Filters/ColorBlindnessTest.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// Copyright (c) James Jackson-South and contributors.
-// Licensed under the Apache License, Version 2.0.
-//
-
-namespace ImageSharp.Tests
-{
- using ImageSharp.Processing;
- using System.IO;
-
- using ImageSharp.PixelFormats;
-
- using Xunit;
-
- public class ColorBlindnessTest : FileTestBase
- {
- public static readonly TheoryData ColorBlindnessFilters
- = new TheoryData
- {
- ColorBlindness.Achromatomaly,
- ColorBlindness.Achromatopsia,
- ColorBlindness.Deuteranomaly,
- ColorBlindness.Deuteranopia,
- ColorBlindness.Protanomaly,
- ColorBlindness.Protanopia,
- ColorBlindness.Tritanomaly,
- ColorBlindness.Tritanopia
- };
-
- [Theory]
- [MemberData(nameof(ColorBlindnessFilters))]
- public void ImageShouldApplyColorBlindnessFilter(ColorBlindness colorBlindness)
- {
- string path = this.CreateOutputDirectory("ColorBlindness");
-
- foreach (TestFile file in Files)
- {
- string filename = file.GetFileName(colorBlindness);
- using (Image image = file.CreateImage())
- using (FileStream output = File.OpenWrite($"{path}/{filename}"))
- {
- image.ColorBlindness(colorBlindness).Save(output);
- }
- }
- }
-
- [Theory]
- [MemberData(nameof(ColorBlindnessFilters))]
- public void ImageShouldApplyBrightnessFilterInBox(ColorBlindness colorBlindness)
- {
- string path = this.CreateOutputDirectory("ColorBlindness");
-
- foreach (TestFile file in Files)
- {
- string filename = file.GetFileName(colorBlindness + "-InBox");
- using (Image image = file.CreateImage())
- using (FileStream output = File.OpenWrite($"{path}/{filename}"))
- {
- image.ColorBlindness(colorBlindness, new Rectangle(10, 10, image.Width / 2, image.Height / 2)).Save(output);
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/tests/ImageSharp.Tests/TestUtilities/Attributes/WithTestPatternImageAttribute.cs b/tests/ImageSharp.Tests/TestUtilities/Attributes/WithTestPatternImageAttribute.cs
index 77c60a943..f6ab65f71 100644
--- a/tests/ImageSharp.Tests/TestUtilities/Attributes/WithTestPatternImageAttribute.cs
+++ b/tests/ImageSharp.Tests/TestUtilities/Attributes/WithTestPatternImageAttribute.cs
@@ -29,6 +29,7 @@ namespace ImageSharp.Tests
///
/// Triggers passing an that produces a test pattern image of size width * height
///
+ /// The member data to apply to theories
/// The required width
/// The required height
/// The requested parameter
@@ -40,7 +41,14 @@ namespace ImageSharp.Tests
this.Height = height;
}
+ ///
+ /// Gets the width
+ ///
public int Width { get; }
+
+ ///
+ /// Gets the height
+ ///
public int Height { get; }
protected override string GetFactoryMethodName(MethodInfo testMethod) => "TestPattern";
diff --git a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
index 1c5038014..f55cfbf16 100644
--- a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
+++ b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
@@ -1,4 +1,8 @@
-
+//
+// Copyright (c) James Jackson-South and contributors.
+// Licensed under the Apache License, Version 2.0.
+//
+
namespace ImageSharp.Tests
{
using System;
@@ -21,8 +25,15 @@ namespace ImageSharp.Tests
public static void DebugSave(this Image image, ITestImageProvider provider, object settings = null, string extension = "png")
where TPixel : struct, IPixel
{
+ if (bool.TryParse(Environment.GetEnvironmentVariable("CI"), out bool isCi) && isCi)
+ {
+ return;
+ }
+
+ // We are running locally then we want to save it out
string tag = null;
string s = settings as string;
+
if (s != null)
{
tag = s;
@@ -40,11 +51,8 @@ namespace ImageSharp.Tests
tag = string.Join("_", properties.ToDictionary(x => x.Name, x => x.GetValue(settings)).Select(x => $"{x.Key}-{x.Value}"));
}
}
- if (!bool.TryParse(Environment.GetEnvironmentVariable("CI"), out bool isCi) || !isCi)
- {
- // We are running locally then we want to save it out
- provider.Utility.SaveTestOutputFile(image, extension, tag: tag);
- }
+
+ provider.Utility.SaveTestOutputFile(image, extension, tag: tag);
}
}
}