Browse Source

Add LaplacianKernelFactory tests

af/merge-core
James Jackson-South 8 years ago
parent
commit
a63bb0b63e
  1. 68
      tests/ImageSharp.Tests/Processing/Convolution/Processors/LaplacianKernelFactoryTests.cs

68
tests/ImageSharp.Tests/Processing/Convolution/Processors/LaplacianKernelFactoryTests.cs

@ -0,0 +1,68 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Convolution.Processors;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Processing.Convolution.Processors
{
public class LaplacianKernelFactoryTests
{
private static readonly ApproximateFloatComparer ApproximateComparer = new ApproximateFloatComparer(0.0001F);
private static readonly DenseMatrix<float> Expected3x3Matrix = new DenseMatrix<float>(
new float[,]
{
{ -1, -1, -1 },
{ -1, 8, -1 },
{ -1, -1, -1 }
});
private static readonly DenseMatrix<float> Expected5x5Matrix = new DenseMatrix<float>(
new float[,]
{
{ -1, -1, -1,-1, -1 },
{ -1, -1, -1,-1, -1 },
{ -1, -1, 24,-1, -1 },
{ -1, -1, -1,-1, -1 },
{ -1, -1, -1,-1, -1 }
});
[Fact]
public void LaplacianKernelFactoryOutOfRangeThrows()
{
Assert.Throws<ArgumentOutOfRangeException>(() =>
{
LaplacianKernelFactory.CreateKernel(2);
});
}
[Fact]
public void LaplacianKernelFactoryCreatesCorrect3x3Matrix()
{
DenseMatrix<float> actual = LaplacianKernelFactory.CreateKernel(3);
for (int y = 0; y < actual.Rows; y++)
{
for (int x = 0; x < actual.Columns; x++)
{
Assert.Equal(Expected3x3Matrix[y, x], actual[y, x], ApproximateComparer);
}
}
}
[Fact]
public void LaplacianKernelFactoryCreatesCorrect5x5Matrix()
{
DenseMatrix<float> actual = LaplacianKernelFactory.CreateKernel(5);
for (int y = 0; y < actual.Rows; y++)
{
for (int x = 0; x < actual.Columns; x++)
{
Assert.Equal(Expected5x5Matrix[y, x], actual[y, x], ApproximateComparer);
}
}
}
}
}
Loading…
Cancel
Save