public void TopBottomTest2()
{
for (int i = 0; i < 10; i++)
{
double[] values = Matrix.Random(20, -1.0, 1.0);
for (int k = 1; k < 11; k++)
{
double[] actualTop = values.Submatrix(values.Top(k));
double[] actualBottom = values.Submatrix(values.Bottom(k));
Array.Sort(values);
double[] expectedTop = values.Get(values.Length - k, values.Length);
double[] expectedBottom = values.Get(0, k);
Assert.AreEqual(k, actualTop.Length);
Assert.AreEqual(k, actualBottom.Length);
Assert.AreEqual(expectedTop.Length, actualTop.Length);
Assert.AreEqual(expectedBottom.Length, actualBottom.Length);
foreach (var v in actualTop)
Assert.IsTrue(expectedTop.Contains(v));
foreach (var v in actualBottom)
Assert.IsTrue(expectedBottom.Contains(v));
}
}
}