Browse Source

Add tests for the AdaptiveThreshold processor

pull/1574/head
Brian Popow 6 years ago
parent
commit
4d3d0fb2f5
  1. 77
      tests/ImageSharp.Tests/Processing/Binarization/AdaptiveThresholdTests.cs
  2. 3
      tests/ImageSharp.Tests/TestImages.cs
  3. 2
      tests/Images/External
  4. 3
      tests/Images/Input/Png/Bradley01.png
  5. 3
      tests/Images/Input/Png/Bradley02.png

77
tests/ImageSharp.Tests/Processing/Binarization/AdaptiveThresholdTests.cs

@ -0,0 +1,77 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Formats.Tga;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Binarization;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Processing.Binarization
{
public class AdaptiveThresholdTests : BaseImageOperationsExtensionTest
{
[Fact]
public void AdaptiveThreshold_UsesDefaults_Works()
{
var expectedThresholdLimit = .85f;
Color expectedUpper = Color.White;
Color expectedLower = Color.Black;
this.operations.AdaptiveThreshold();
AdaptiveThresholdProcessor p = this.Verify<AdaptiveThresholdProcessor>();
Assert.Equal(expectedThresholdLimit, p.ThresholdLimit);
Assert.Equal(expectedUpper, p.Upper);
Assert.Equal(expectedLower, p.Lower);
}
[Fact]
public void AdaptiveThreshold_SettingThresholdLimit_Works()
{
var expectedThresholdLimit = .65f;
this.operations.AdaptiveThreshold(expectedThresholdLimit);
AdaptiveThresholdProcessor p = this.Verify<AdaptiveThresholdProcessor>();
Assert.Equal(expectedThresholdLimit, p.ThresholdLimit);
Assert.Equal(Color.White, p.Upper);
Assert.Equal(Color.Black, p.Lower);
}
[Fact]
public void AdaptiveThreshold_SettingUpperLowerThresholds_Works()
{
Color expectedUpper = Color.HotPink;
Color expectedLower = Color.Yellow;
this.operations.AdaptiveThreshold(expectedUpper, expectedLower);
AdaptiveThresholdProcessor p = this.Verify<AdaptiveThresholdProcessor>();
Assert.Equal(expectedUpper, p.Upper);
Assert.Equal(expectedLower, p.Lower);
}
[Fact]
public void AdaptiveThreshold_SettingUpperLowerWithThresholdLimit_Works()
{
var expectedThresholdLimit = .77f;
Color expectedUpper = Color.HotPink;
Color expectedLower = Color.Yellow;
this.operations.AdaptiveThreshold(expectedUpper, expectedLower, expectedThresholdLimit);
AdaptiveThresholdProcessor p = this.Verify<AdaptiveThresholdProcessor>();
Assert.Equal(expectedThresholdLimit, p.ThresholdLimit);
Assert.Equal(expectedUpper, p.Upper);
Assert.Equal(expectedLower, p.Lower);
}
[Theory]
[WithFile(TestImages.Png.Bradley01, PixelTypes.Rgba32)]
[WithFile(TestImages.Png.Bradley02, PixelTypes.Rgba32)]
public void AdaptiveThreshold_Works<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : unmanaged, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage())
{
image.Mutate(img => img.AdaptiveThreshold());
image.DebugSave(provider);
image.CompareToReferenceOutput(ImageComparer.Exact, provider);
}
}
}
}

3
tests/ImageSharp.Tests/TestImages.cs

@ -83,6 +83,9 @@ namespace SixLabors.ImageSharp.Tests
public const string Ducky = "Png/ducky.png";
public const string Rainbow = "Png/rainbow.png";
public const string Bradley01 = "Png/Bradley01.png";
public const string Bradley02 = "Png/Bradley02.png";
// Issue 1014: https://github.com/SixLabors/ImageSharp/issues/1014
public const string Issue1014_1 = "Png/issues/Issue_1014_1.png";
public const string Issue1014_2 = "Png/issues/Issue_1014_2.png";

2
tests/Images/External

@ -1 +1 @@
Subproject commit fe694a3938bea3565071a96cb1c90c4cbc586ff9
Subproject commit c04c8b73a99c1b198597ae640394d91ddd8e033b

3
tests/Images/Input/Png/Bradley01.png

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d7eddc690c9d50fcaca3b0045d225b08c2fb172ceff5eead1d476c4df0354d02
size 25266

3
tests/Images/Input/Png/Bradley02.png

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a73ebf6e35d5336bdf194d5098bcbe0ad240bbd09cd357816aacb1e0e7e6a614
size 26467
Loading…
Cancel
Save