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)); }
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); }