Example #1
0
        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);
        }