public void ArrayExtns() { var a0 = new[] { 1, 2, 3, 4 }; var A0 = a0.Dup(); Assert.Equal(typeof(int[]), A0.GetType()); Assert.True(A0.SequenceEqual(a0)); Assert.Equal(2, A0.IndexOf(3)); Assert.Equal(-1, A0.IndexOf(5)); for (var err = 0; err != 2; ++err) { // 1-Dimensional array value equality var a1 = new[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 }; var A1 = new[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 + err }; Assert.Equal(Array_.Equal(a1, A1), err == 0); // 2-Dimensional array value equality var v2 = 0.0; var a2 = new double[3, 4]; var A2 = new double[3, 4]; for (int i = 0; i != a2.GetLength(0); ++i) { for (int j = 0; j != a2.GetLength(1); ++j) { a2[i, j] = v2; A2[i, j] = v2 + err; v2 += 1.0; } } Assert.Equal(Array_.Equal(a2, A2), err == 0); // N-Dimensional array value equality var v3 = 0.0; var a3 = new double[2, 3, 4]; var A3 = new double[2, 3, 4]; for (int i = 0; i != a3.GetLength(0); ++i) { for (int j = 0; j != a3.GetLength(1); ++j) { for (int k = 0; k != a3.GetLength(2); ++k) { a3[i, j, k] = v3; A3[i, j, k] = v3 + err; v3 += 1.0; } } } Assert.Equal(Array_.Equal(a3, A3), err == 0); } }