[TestCase(Constants.KB + 11, 256)] // content doesn't line up with buffers (extremely unlikely any array pool implementation will add exactly 11 bytes more than requested across 4 buffers) public async Task ReadStream(int dataSize, int bufferPartitionSize) { PredictableStream originalStream = new PredictableStream(); PooledMemoryStream arrayPoolStream = await PooledMemoryStream.BufferStreamPartitionInternal(originalStream, dataSize, dataSize, 0, _pool, bufferPartitionSize, true, default); originalStream.Position = 0; byte[] originalStreamData = new byte[dataSize]; byte[] poolStreamData = new byte[dataSize]; originalStream.Read(originalStreamData, 0, dataSize); arrayPoolStream.Read(poolStreamData, 0, dataSize); CollectionAssert.AreEqual(originalStreamData, poolStreamData); }
[TestCase(Constants.KB + 11, 256)] // content doesn't line up with buffers (extremely unlikely any array pool implementation will add exactly 11 bytes more than requested across 4 buffers) public void ReadStream(int dataSize, int bufferPartitionSize) { var originalStream = new PredictableStream(); var arrayPoolStream = PooledMemoryStream.BufferStreamPartitionInternal(originalStream, dataSize, dataSize, 0, _pool, bufferPartitionSize, false, default).EnsureCompleted(); originalStream.Position = 0; var originalStreamData = new byte[dataSize]; var poolStreamData = new byte[dataSize]; originalStream.Read(originalStreamData, 0, dataSize); arrayPoolStream.Read(poolStreamData, 0, dataSize); CollectionAssert.AreEqual(originalStreamData, poolStreamData); }
public void PredictableStreamIsPredictable() { const int dataSize = 257; var buffer = new byte[dataSize]; var predictableStream = new PredictableStream(); predictableStream.Read(buffer, 0, dataSize); Assert.AreEqual(dataSize, predictableStream.Position); var expected = Enumerable.Range(0, dataSize).Select(val => (byte)(val % byte.MaxValue)).ToArray(); for (int i = 0; i < dataSize; i++) { Assert.AreEqual(buffer[i], expected[i]); } }