public void SmootheningTest()
{
int[] testarray = Enumerable.Range(1, 1000).ToArray();
const int nsize = 100;
int[] firstExpected = new int[nsize];
int[] secondExpected = new int[testarray.Length-nsize];
for(int ii = 1; ii <= nsize ;ii++)
{
double summation = ((ii)*(ii + 1)/2.0);
firstExpected[ii-1] = (int) (summation/(double)ii);
}
for (int ii= nsize+1 ; ii< testarray.Length ;ii++)
{
double summation = ((ii)*(ii + 1)/2.0) - ((ii-nsize)*(ii-nsize+1)/2.0);
secondExpected[ii-nsize-1] = (int) (summation/(double) nsize);
}
var expected = (firstExpected.Concat(secondExpected)).Take(500);
var actual = EdgeDetector.Smoothen(testarray, nsize).Take(500);
Assert.IsTrue(expected.Zip(actual, (first, second) => first == second).All(x => x));
}