Пример #1
0
        public void Indexing_1D()
        {
            var data = new ArraySlice <int>(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
            // return identical view
            var view = new ArraySlice <int>(data, ":");

            Assert.AreEqual(0, view.GetValue(0));
            Assert.AreEqual(5, view.GetValue(5));
            Assert.AreEqual(9, view.GetValue(9));
            view = new ArraySlice <int>(data, "-77:77");
            Assert.AreEqual(0, view.GetValue(0));
            Assert.AreEqual(5, view.GetValue(5));
            Assert.AreEqual(9, view.GetValue(9));
            // return reduced view
            view = new ArraySlice <int>(data, "7:");
            Assert.AreEqual(7, view.GetValue(0));
            Assert.AreEqual(8, view.GetValue(1));
            Assert.AreEqual(9, view.GetValue(2));
            view = new ArraySlice <int>(data, ":5");
            Assert.AreEqual(0, view.GetValue(0));
            Assert.AreEqual(1, view.GetValue(1));
            Assert.AreEqual(2, view.GetValue(2));
            Assert.AreEqual(3, view.GetValue(3));
            Assert.AreEqual(4, view.GetValue(4));
            view = new ArraySlice <int>(data, "2:3");
            Assert.AreEqual(2, view.GetValue(0));
            // return stepped view
            view = new ArraySlice <int>(data, "::2");
            Assert.AreEqual(0, view.GetValue(0));
            Assert.AreEqual(2, view.GetValue(1));
            Assert.AreEqual(4, view.GetValue(2));
            Assert.AreEqual(6, view.GetValue(3));
            Assert.AreEqual(8, view.GetValue(4));
            view = new ArraySlice <int>(data, "::3");
            Assert.AreEqual(0, view.GetValue(0));
            Assert.AreEqual(3, view.GetValue(1));
            Assert.AreEqual(6, view.GetValue(2));
            Assert.AreEqual(9, view.GetValue(3));
            view = new ArraySlice <int>(data, "-77:77:77");
            Assert.AreEqual(0, view.GetValue(0));
            // negative step!
            view = new ArraySlice <int>(data, "::-1");
            Assert.AreEqual(9, view.GetValue(0));
            Assert.AreEqual(4, view.GetValue(5));
            Assert.AreEqual(0, view.GetValue(9));
            view = new ArraySlice <int>(data, "::-2");
            Assert.AreEqual(9, view.GetValue(0));
            Assert.AreEqual(7, view.GetValue(1));
            Assert.AreEqual(5, view.GetValue(2));
            Assert.AreEqual(3, view.GetValue(3));
            Assert.AreEqual(1, view.GetValue(4));
            view = new ArraySlice <int>(data, "::-3");
            Assert.AreEqual(9, view.GetValue(0));
            Assert.AreEqual(6, view.GetValue(1));
            Assert.AreEqual(3, view.GetValue(2));
            Assert.AreEqual(0, view.GetValue(3));
            view = new ArraySlice <int>(data, "-77:77:-77");
            Assert.AreEqual(9, view.GetValue(0));
        }
Пример #2
0
        public void BasicTests()
        {
            var a = new ArraySlice <int>(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

            // enumerable?
            Assert.AreEqual(new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, a);
            Assert.AreNotEqual(new[] { 0, 1, 2, 3, 4444, 5, 6, 7, 8, 9 }, a);
            Assert.AreEqual(new ArraySlice <int>(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), a);
            // auto shape
            Assert.AreEqual(new Shape(10), a.Shape);
            // indexing
            Assert.AreEqual(0, a[0]);
            Assert.AreEqual(5, a[5]);
            Assert.AreEqual(9, a[9]);
            Assert.AreEqual(0, a.GetValue(0));
            Assert.AreEqual(5, a.GetValue(5));
            Assert.AreEqual(9, a.GetValue(9));
            // length (for 1-D arrayslices, first dimension for N-D)
            Assert.AreEqual(10, a.Length);
        }