public void UnmanagedArray_Resize() { int size = 256; var testArray = new UnmanagedArray <int>(size, true); var baselineArray = Enumerable.Range(0, size).ToArray(); testArray.Copy(baselineArray); Assert.IsTrue(this.AreIdentical(testArray, baselineArray)); Assert.AreEqual(baselineArray.Sum(), testArray.Sum()); testArray.Resize(size + 10, true); Assert.AreEqual(baselineArray.Sum(), testArray.Sum()); Assert.IsTrue(this.AreIdentical(testArray.Take(size), baselineArray)); }
override protected void ChangeSliceCount() { int oldCount = 0; if (FValues != null) { oldCount = FValues.Length; } double[] tmp = new double[oldCount]; //save old values for (int i = 0; i < oldCount; i++) { tmp[i] = FValues[i]; } FValues.Resize(FSliceCount * FDimension); //set old values to new array for (int i = 0; i < Math.Min(FSliceCount * FDimension, oldCount); i++) { FValues[i] = tmp[i]; } if (oldCount > 0) { for (int i = oldCount; i < FSliceCount * FDimension; i++) { FValues[i] = tmp[oldCount - 1]; } } else { for (int i = oldCount; i < FSliceCount * FDimension; i++) { FValues[i] = FDefault; } } }