public void ChangeSizeOfLastDimension() { //we don't use interface because want to check stride var array = new MultiDimensionalArray(); array.Resize(2, 1); array[0, 0] = 1; // 0 + 0 array[1, 0] = 2; // 2 + 0 // 1 1 <= stride Assert.AreEqual(new[] { 1, 1 }, array.Stride); log.InfoFormat("Before resize: {0}", array.ToString()); array.Resize(new[] { 2, 2 }); log.InfoFormat("After resize: {0}", array.ToString()); Assert.AreEqual(2, array.Rank); Assert.AreEqual(4, array.Count); Assert.AreEqual(1, array[0, 0]); Assert.AreEqual(2, array[1, 0]); Assert.IsNull(array[0, 1]); Assert.IsNull(array[1, 1]); }
public void InsertAtRemoveAt() { IMultiDimensionalArray array = new MultiDimensionalArray(); array.Resize(2, 2); array[0, 0] = 5; array[1, 1] = 2; array.InsertAt(0, 2); log.Info(array.ToString()); array.RemoveAt(0, 2); log.Info(array.ToString()); array.InsertAt(0, 2); log.Info(array.ToString()); array.RemoveAt(0, 2); log.Info(array.ToString()); }
public void Create1D() { IMultiDimensionalArray array = new MultiDimensionalArray(); array.Add(1); array.Add(2); array.Add(3); array.Remove(2); log.Info(array.ToString()); Assert.AreEqual(1, array.Rank); Assert.AreEqual(2, array.Count); }
public void ChangeSizeOfFirstDimension() { IMultiDimensionalArray array = new MultiDimensionalArray(); array.Resize(1, 2); array[0, 0] = 1; // 0 + 0 array[0, 1] = 2; // 0 + 1 // 2 1 <= stride log.InfoFormat("Before resize: {0}", array.ToString()); array.Resize(new[] { 2, 2 }); log.InfoFormat("After resize: {0}", array.ToString()); Assert.AreEqual(2, array.Rank); Assert.AreEqual(4, array.Count); Assert.AreEqual(1, array[0, 0]); Assert.AreEqual(2, array[0, 1]); Assert.IsNull(array[1, 0]); Assert.IsNull(array[1, 1]); }
public void Create3D() { IMultiDimensionalArray array = new MultiDimensionalArray(2, 2, 2); array[0, 0, 0] = 1; // 0 + 0 + 0 array[0, 0, 1] = 2; // 0 + 0 + 1 array[0, 1, 0] = 3; // 0 + 4 + 0 array[0, 1, 1] = 4; // 0 + 4 + 1 array[1, 0, 0] = 5; // 4 + 0 + 0 array[1, 0, 1] = 6; // 4 + 0 + 0 array[1, 1, 0] = 7; // 4 + 2 + 0 array[1, 1, 1] = 8; // 4 + 2 + 2 // 4 2 1 <= strides log.InfoFormat("3D array: {0}", array.ToString()); Assert.AreEqual(3, array.Rank); Assert.AreEqual(8, array.Count); }
public void InsertAtGivesAggregatedCollectionChangingEvent() { var array = new MultiDimensionalArray<double>(new[] {2, 2}); var callCount = 0; array.CollectionChanging += (s, e) => { callCount++; Assert.AreEqual(NotifyCollectionChangeAction.Add, e.Action); Assert.AreEqual(new[] {0, 0}, e.MultiDimensionalIndex); Assert.AreEqual(new[] {3, 2}, e.Shape); //inserted a 3x2 block Assert.AreEqual(new[] { 1, 2, 3, 4, 5, 6 }, e.Items); }; //insert 2 slices on the first dimension array.InsertAt(0, 0, 3, new object[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0}); Assert.AreEqual(1, callCount); Assert.AreEqual("{{1, 2}, {3, 4}, {5, 6}, {0, 0}, {0, 0}}", array.ToString()); }