public void IndexerGetAndSet( [Values(new[] { 1025 }, new[] { 33, 39 }, new[] { 17, 28, 16 }, new[] { 17, 9, 18, 11 }, new[] { 9, 7, 6, 5, 17 }, new[] { 3, 8, 7, 5, 11, 3 })] int[] counts) { var arr = ArrayHelper.New().NewArray <object>(counts).FillWith("A").As <Array>(); // DynamicArray elements are set using indexer set DynamicArray <object> dynArray = ArrayHelper.ToDynamic <object>(arr); // DynamicArray elements are get usting indexer get DynamicArrayAssert.AreElementsEqual(dynArray, arr); }
public static void Resize2D() { // Should have B_COLS < A_COLS const int A_ROWS = 4; const int A_COLS = 3; const int B_ROWS = 5; const int B_COLS = 2; // Arrays O, A and B object[,] arrA = ArrayHelper.New().NewArray <object>(A_ROWS, A_COLS).FillWith("A").As <object[, ]>(); object[,] arrB = ArrayHelper.New().NewArray <object>(B_ROWS, B_COLS).FillWith("B").As <object[, ]>(); // NOTE capacities are set to the minimum to force buffer resize DynamicArray <object> dynArray = new DynamicArray <object>(2, 1, 1); // Insert B at 0,0 dynArray.Insert(arrB, 0, 0, 0); ArrayHelper.Print(dynArray); DynamicArrayAssert.AreElementsEqual(dynArray, arrB); // Insert A right before B in dim 1 dynArray.Insert(arrA, 0, 0, 0); ArrayHelper.Print(dynArray); DynamicArrayAssert.Included(dynArray, arrA, 0, 0); DynamicArrayAssert.Included(dynArray, arrB, A_ROWS, 0); DynamicArrayAssert.CountsEqual(dynArray, A_ROWS + B_ROWS, A_COLS); // Remove B_ROWS lines and add NCols columns const int NCols = 5; dynArray.Resize(A_ROWS, A_COLS + NCols); ArrayHelper.Print(dynArray); DynamicArrayAssert.Included(dynArray, arrA, 0, 0); DynamicArrayAssert.AreElementsDefault(dynArray, new int[] { A_ROWS, NCols }, 0, A_COLS); DynamicArrayAssert.CountsEqual(dynArray, A_ROWS, A_COLS + NCols); // Add NRows rows const int NRows = 10; dynArray.ResizeDim(0, A_ROWS + NRows); ArrayHelper.Print(dynArray); DynamicArrayAssert.CountsEqual(dynArray, A_ROWS + NRows, A_COLS + NCols); DynamicArrayAssert.Included(dynArray, arrA, 0, 0); DynamicArrayAssert.AreElementsDefault(dynArray, new int[] { NRows, A_COLS + NCols }, A_ROWS, 0); DynamicArrayAssert.AreElementsDefault(dynArray, new int[] { A_ROWS + NRows, NCols }, 0, A_COLS); // Shrink to (NFewRows, NFewCols) const int NFewCols = 2; const int NFewRows = 3; dynArray.Resize(NFewRows, NFewCols); ArrayHelper.Print(dynArray); DynamicArrayAssert.Included(dynArray, arrA, Zero2DIdx, Zero2DIdx, new int[] { NFewRows, NFewCols }); // Enlarge to (NManyRows, NManyCols) const int NManyRows = 10; const int NManyCols = 7; dynArray.Resize(NManyRows, NManyCols); ArrayHelper.Print(dynArray); DynamicArrayAssert.Included(dynArray, arrA, Zero2DIdx, Zero2DIdx, new int[] { NFewRows, NFewCols }); DynamicArrayAssert.AreElementsDefault(dynArray, new[] { NManyRows, NManyCols - NFewCols }, 0, NFewCols); DynamicArrayAssert.AreElementsDefault(dynArray, new[] { NManyRows - NFewRows, NFewCols }, NFewRows, 0); }