Exemplo n.º 1
0
        public async Task WriteLargeDataTextAscii(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.GetAsciiString(input);
                    Assert.Equal(data.Substring(offset, input.Length), s);
                    offset += input.Length;
                    pipe.Advance(input.End);
                }
                Assert.Equal(data.Length, offset);
            }
        }
Exemplo n.º 2
0
        public async Task WriteLargeDataTextAscii(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.WriteAsciiString(data);
                var foo = output.Memory.IsEmpty; // trying to see if .Memory breaks
                await output.FlushAsync();

                channel.CompleteWriter();

                int offset = 0;
                while (true)
                {
                    var result = await channel.ReadAsync();

                    var input = result.Buffer;
                    if (input.Length == 0)
                    {
                        break;
                    }

                    string s = ReadableBufferExtensions.GetAsciiString(input);
                    Assert.Equal(data.Substring(offset, input.Length), s);
                    offset += input.Length;
                    channel.Advance(input.End);
                }
                Assert.Equal(data.Length, offset);
            }
        }
Exemplo n.º 3
0
        public async Task WriteLargeDataTextAscii(int length)
        {
            string data = new string('#', length);

            FillRandomStringData(data, length);
            var pipe = new Pipe();

            var output = pipe.Writer;

            output.Append(data, SymbolTable.InvariantUtf8);
            var foo = output.GetMemory().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.GetAsciiString(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.Reader.AdvanceTo(input.End);
            }

            Assert.Equal(data.Length, offset);
        }