public void insertion_sort_success()
{
for (int n = 1; n < 100; n += 10)
{
for (int i = 0; i < 100; i++)
{
int[] random = UniformDiscreteDistribution.Random(n);
double[] expected = random.ToDouble();
double[] a = random.ToDouble();
double[] b = random.ToDouble();
double[] c = random.ToDouble();
double[] d = random.ToDouble();
double[] e = random.ToDouble();
Array.Sort(expected);
Sort.Insertion(a);
Sort.Insertion(b, asc: false);
b = b.Reversed();
Sort.Insertion(c, asc: true);
Func<double, double, int> greater = (x, y) => -x.CompareTo(y);
Sort.Insertion(d, comparer: greater, asc: false);
Sort.Insertion(e, comparer: greater, asc: true);
e = e.Reversed();
Assert.IsTrue(expected.IsEqual(a));
Assert.IsTrue(expected.IsEqual(b));
Assert.IsTrue(expected.IsEqual(c));
Assert.IsTrue(expected.IsEqual(d));
Assert.IsTrue(expected.IsEqual(e));
}
}
}