public void insertion_sort_with_items_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();
long[] ai = random.ToInt64();
double[] b = random.ToDouble();
long[] bi = random.ToInt64();
double[] c = random.ToDouble();
long[] ci = random.ToInt64();
double[] d = random.ToDouble();
long[] di = random.ToInt64();
double[] e = random.ToDouble();
long[] ei = random.ToInt64();
Array.Sort(expected);
Sort.Insertion(a, ai);
Sort.Insertion(b, bi, asc: false);
b = b.Reversed();
bi = bi.Reversed();
Sort.Insertion(c, ci, asc: true);
Func<double, double, int> greater = (x, y) => -x.CompareTo(y);
Sort.Insertion(d, di, comparer: greater, asc: false);
Sort.Insertion(e, ei, comparer: greater, asc: true);
e = e.Reversed();
ei = ei.Reversed();
Assert.IsTrue(a.IsSorted());
Assert.IsTrue(a.IsSorted(ComparerDirection.Ascending));
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));
Assert.IsTrue(expected.IsEqual(ai));
Assert.IsTrue(expected.IsEqual(bi));
Assert.IsTrue(expected.IsEqual(ci));
Assert.IsTrue(expected.IsEqual(di));
Assert.IsTrue(expected.IsEqual(ei));
}
}
}