public void SlicingTest_1D()
        {
            var data = new ArraySlice <int>(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

            Assert.AreEqual(new Shape(10), data.Shape);
            // return identical view
            var view = new ArraySlice <int>(data, ":");

            Assert.AreEqual(new Shape(10), view.Shape);
            Assert.AreEqual(data, view);
            view = new ArraySlice <int>(data, "-77:77");
            Assert.AreEqual(new Shape(10), view.Shape);
            Assert.AreEqual(data, view);
            // return reduced view
            view = new ArraySlice <int>(data, "7:");
            Assert.AreEqual(new Shape(3), view.Shape);
            Assert.AreEqual(new int[] { 7, 8, 9 }, view);
            view = new ArraySlice <int>(data, ":5");
            Assert.AreEqual(new Shape(5), view.Shape);
            Assert.AreEqual(new int[] { 0, 1, 2, 3, 4 }, view);
            view = new ArraySlice <int>(data, "2:3");
            Assert.AreEqual(new Shape(1), view.Shape);
            Assert.AreEqual(new int[] { 2 }, view);
            // return stepped view
            view = new ArraySlice <int>(data, "::2");
            Assert.AreEqual(new Shape(5), view.Shape);
            Assert.AreEqual(new int[] { 0, 2, 4, 6, 8 }, view);
            view = new ArraySlice <int>(data, "::3");
            Assert.AreEqual(new Shape(4), view.Shape);
            Assert.AreEqual(new int[] { 0, 3, 6, 9 }, view);
            view = new ArraySlice <int>(data, "-77:77:77");
            Assert.AreEqual(new Shape(1), view.Shape);
            Assert.AreEqual(new[] { 0 }, view);
            // negative step!
            view = new ArraySlice <int>(data, "::-1");
            Assert.AreEqual(new Shape(10), view.Shape);
            Assert.AreEqual(data.Reverse().ToArray(), view);
            view = new ArraySlice <int>(data, "::-2");
            Assert.AreEqual(new Shape(5), view.Shape);
            Assert.AreEqual(new int[] { 9, 7, 5, 3, 1 }, view);
            view = new ArraySlice <int>(data, "::-3");
            Assert.AreEqual(new Shape(4), view.Shape);
            Assert.AreEqual(new int[] { 9, 6, 3, 0 }, view);
            view = new ArraySlice <int>(data, "-77:77:-77");
            Assert.AreEqual(new Shape(1), view.Shape);
            Assert.AreEqual(new[] { 9 }, view);
        }