public void TestReverse()
{
var original = new[] {1.0, 1.4, 1.6, 2.0};
var expected = original.Reverse();
var actual = Utility.Reverse(original);
Assert.IsTrue(original.Zip(actual, (first, second) => Math.Abs(first - second) > 0.001).All(eq => eq));
Assert.IsTrue(expected.Zip(actual, (first, second) => Math.Abs(first - second) < 0.001).All(eq => eq));
var original2 = new[] {1, 2, 3, 4};
var expected2 = original2.Reverse();
var actual2 = Utility.Reverse(original2);
Assert.IsTrue(original2.Zip(actual2, (first, second) => first != second).All(eq => eq));
Assert.IsTrue(expected2.Zip(actual2, (first, second) => first == second).All(eq => eq));
}