コード例 #1
0
ファイル: Array.cs プロジェクト: psryland/rylogic_code
        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);
            }
        }