public void InsertTest( [Values(2, 987, 100, 17, 3, 2, 1)] int length, [Values(1, 2, 2, 3, 3, 2, 16)] int rank, [Values(0, 0, 1, 2, 2, 1, 5)] int dim) { var idata = new InsertionData(length, rank, dim); var zeroIdx = IndexesHelper.Zero(idata.Rank); // Build O and A hypercubes lengths var alengths = IndexesHelper.Add(zeroIdx, idata.Length); var olengths = IndexesHelper.Multiply(alengths, 2); // Build O and A hypercubes var oarray = ArrayHelper.New().NewArray <object>(olengths).FillWith("O").As <Array>(); var aarray = ArrayHelper.New().NewArray <object>(alengths).FillWith("A").As <Array>(); // NOTE capacities are set to the minimum to force buffer resize var capacities = IndexesHelper.Add(IndexesHelper.Zero(idata.Rank), 1); var dynarray = new DynamicArray <string>(idata.Rank, capacities); dynarray.Insert(oarray, 0, zeroIdx); DynamicArrayAssert.Included(dynarray, oarray, IndexesHelper.Zero(idata.Rank)); DynamicArrayAssert.CountsEqual(dynarray, olengths); var pos = IndexesHelper.Add(alengths, -1); var expected = IndexesHelper.Clone(olengths); expected[idata.Dim] += alengths[idata.Dim]; dynarray.Insert(aarray, idata.Dim, pos); DynamicArrayAssert.CountsEqual(dynarray, expected); DynamicArrayAssert.Included(dynarray, aarray, pos); DynamicArrayAssert.Included( dynarray, oarray, IndexesHelper.Add(pos, alengths), idata.Rank > 1 ? IndexesHelper.Add(pos, alengths) : pos, olengths); }