public void RepresentativeLuminousityTest()
{
const int imgSize = 100;
// Create a Square
Point[] square = new Point[4];
square[0] = new Point(25, 25);
square[1] = new Point(75, 25);
square[2] = new Point(75, 75);
square[3] = new Point(25, 75);
var backgroundColor = new Bgra(0, 0, 0, 0);
var foregroundColor = new Bgra(255, 255, 255, 255);
// Create an Original Image
var original = new Image<Bgra, Byte>(imgSize, imgSize, backgroundColor);
original.FillConvexPoly(square, foregroundColor);
// Create an Expected output array
var expected = new double[imgSize];
for (int ii = 0; ii < imgSize; ii++)
{
if (ii >= 25 && ii <= 75)
{
expected[ii] = Luminousity.Luma(foregroundColor);
}
else
{
expected[ii] = Utility.Defaults.Ignore;
}
}
// Perform from the top, left right and bottom
var actualLeft = Luminousity.RepresentativeLuminousity(original, 1, 5, Direction.FromLeft);
var actualRight = Luminousity.RepresentativeLuminousity(original, 1, 5, Direction.FromRight);
var actualTop = Luminousity.RepresentativeLuminousity(original, 1, 5, Direction.FromTop);
var actualBottom = Luminousity.RepresentativeLuminousity(original, 1, 5, Direction.FromBottom);
// Check that lengths match
Assert.IsTrue(actualBottom.Length == expected.Length);
Assert.IsTrue(actualLeft.Length == expected.Length);
Assert.IsTrue(actualRight.Length == expected.Length);
Assert.IsTrue(actualTop.Length == expected.Length);
// Check that the values match
for (int ii = 0; ii < expected.Length; ii++)
{
Assert.IsTrue(Math.Abs(actualBottom[ii] - expected[ii]) < 0.001);
Assert.IsTrue(Math.Abs(actualLeft[ii] - expected[ii]) < 0.001);
Assert.IsTrue(Math.Abs(actualRight[ii] - expected[ii]) < 0.001);
Assert.IsTrue(Math.Abs(actualTop[ii] - expected[ii]) < 0.001);
}
Console.WriteLine("Luminousity Scanning Tests Succesful!");
}