public void MaxMinTest()
{
double[,] matrix = new double[,]
{
{ 0, 1, 3, 1},
{ 9, 1, 3, 1},
{ 2, 4, 4, 11},
};
// Max
int dimension = 1;
int[] imax = null;
int[] imaxExpected = new int[] { 2, 0, 3 };
double[] expected = new double[] { 3, 9, 11 };
double[] actual;
actual = Matrix.Max(matrix, dimension, out imax);
Assert.IsTrue(Matrix.IsEqual(imaxExpected, imax));
Assert.IsTrue(Matrix.IsEqual(expected, actual));
dimension = 0;
imaxExpected = new int[] { 1, 2, 2, 2 };
expected = new double[] { 9, 4, 4, 11 };
actual = Matrix.Max(matrix, dimension, out imax);
Assert.IsTrue(Matrix.IsEqual(imaxExpected, imax));
Assert.IsTrue(Matrix.IsEqual(expected, actual));
// Min
dimension = 1;
int[] imin = null;
int[] iminExpected = new int[] { 0, 1, 0 };
expected = new double[] { 0, 1, 2 };
actual = Matrix.Min(matrix, dimension, out imin);
Assert.IsTrue(Matrix.IsEqual(iminExpected, imin));
Assert.IsTrue(Matrix.IsEqual(expected, actual));
dimension = 0;
iminExpected = new int[] { 0, 0, 0, 0 };
expected = new double[] { 0, 1, 3, 1 };
actual = Matrix.Min(matrix, dimension, out imin);
Assert.IsTrue(Matrix.IsEqual(iminExpected, imin));
Assert.IsTrue(Matrix.IsEqual(expected, actual));
}