public override void Write(byte[] buffer, int offset, int count) { if (buffer == null) { throw new ArgumentNullException("buffer"); } if (offset < 0) { throw new ArgumentOutOfRangeException("offset", "offset cannot be negative"); } if (count < 0) { throw new ArgumentOutOfRangeException("count", "count cannot be negative"); } if (buffer.Length - offset < count) { throw new ArgumentException("count and offset define positions greater than buffer length"); } EnsureWriteable(); int i = _position + count; // Check for overflow if (i < 0) { throw new IOException("Cannot write to stream. Buffer would overflow"); } _buffer.Append(buffer, offset, count); _position = i; }
public void ToArray() { //Arrange var numberOfValuesPerPopulatingArrays = new int[] { 1000, 20, 1234, 100000 }; var arrays = new List <decimal[]>(); for (var i = 0; i < numberOfValuesPerPopulatingArrays.Length; i++) { var number = numberOfValuesPerPopulatingArrays[i]; Random randNum = new Random(number + DateTime.Now.Millisecond); arrays.Add(Enumerable .Repeat(0, number) .Select(j => (decimal)randNum.Next(0, 10000000)) .ToArray()); } var expectedResult = arrays.SelectMany(arr => arr).ToArray(); //Action var builder = new StructArrayBuilder <decimal>(); for (var i = 0; i < arrays.Count; i++) { var arr = arrays[i]; builder.Append(arr); } var result = builder.ToArray(); //Assert Assert.NotNull(result); Assert.Equal(expectedResult.Length, result.Length); Assert.Equal(expectedResult, result); Console.WriteLine("Ran StructArrayBuilder_Tests.ToArray"); }
public TestState <decimal> Arrange_PrepArrayAndAppend( bool useSkipLists = true, int numValues = 10000, int chunkSize = 2000, int percentOfChunksToAction = 33) { //Arrange if (numValues < 5 * chunkSize) { chunkSize = numValues / 5; } var numberOfChunks = (int)(numValues / chunkSize); var numberOfValuesPerPopulatingArrays = Enumerable.Repeat(0, numberOfChunks).Select(n => chunkSize).ToArray(); var arrays = new List <decimal[]>(); for (var i = 0; i < numberOfValuesPerPopulatingArrays.Length; i++) { var number = numberOfValuesPerPopulatingArrays[i]; Random randNum = new Random(number + DateTime.Now.Millisecond); arrays.Add(Enumerable .Repeat(0, number) .Select(j => (decimal)randNum.Next(0, 10000000)) .ToArray()); } var expectedResult = arrays.SelectMany(arr => arr).ToArray(); //Action var builder = new StructArrayBuilder <decimal>(useSkipLists); for (var i = 0; i < arrays.Count; i++) { var arr = arrays[i]; builder.Append(arr); } return(new TestState <decimal>() { Builder = builder, ExpectedResult = expectedResult, NumberofChunksToAction = (int)(percentOfChunksToAction * numberOfChunks / 100) }); }