public async Task WriteLargeDataTextUtf8(int length) { string data = new string('#', length); FillRandomStringData(data, length); using (var memoryPool = new MemoryPool()) { var pipe = new Pipe(memoryPool); var output = pipe.Writer.Alloc(); output.Append(data, TextEncoder.Utf8); var foo = output.Buffer.IsEmpty; // trying to see if .Memory breaks await output.FlushAsync(); pipe.Writer.Complete(); int offset = 0; while (true) { var result = await pipe.Reader.ReadAsync(); var input = result.Buffer; if (input.Length == 0) { break; } string s = ReadableBufferExtensions.GetUtf8String(input); Assert.Equal(data.Substring(offset, input.Length), s); offset += input.Length; pipe.Advance(input.End); } Assert.Equal(data.Length, offset); } }
public async Task WriteLargeDataTextUtf8(int length) { string data = new string('#', length); FillRandomStringData(data, length); using (var memoryPool = new MemoryPool()) { var channel = new Channel(memoryPool); var output = channel.Alloc(); output.WriteUtf8String(data); var foo = output.Memory.IsEmpty; // trying to see if .Memory breaks await output.FlushAsync(); channel.CompleteWriter(); int offset = 0; while (true) { var input = await channel.ReadAsync(); if (input.Length == 0) { break; } string s = ReadableBufferExtensions.GetUtf8String(input); Assert.Equal(data.Substring(offset, input.Length), s); offset += input.Length; channel.Advance(input.End); } Assert.Equal(data.Length, offset); } }
public async Task WriteLargeDataTextUtf8(int length) { string data = new string('#', length); FillRandomStringData(data, length); using (var memoryPool = new MemoryPool()) { var pipe = new Pipe(new PipeOptions(memoryPool)); var output = pipe.Writer.Alloc(); output.AsOutput().Append(data, SymbolTable.InvariantUtf8); var foo = output.Buffer.IsEmpty; // trying to see if .Memory breaks await output.FlushAsync(); pipe.Writer.Complete(); long offset = 0; while (true) { var result = await pipe.Reader.ReadAsync(); var input = result.Buffer; if (input.Length == 0) { break; } string s = ReadableBufferExtensions.GetUtf8String(input); // We are able to cast because test arguments are in range of int Assert.Equal(data.Substring((int)offset, (int)input.Length), s); offset += input.Length; pipe.Advance(input.End); } Assert.Equal(data.Length, offset); } }