public async Task TransferZeroBytesDoesNotReleaseReadAsync() { var testInput = new TestInput(); var context = new ConnectionContext(); context.SocketInput = new SocketInput(new MemoryPool()); var exchanger = new MessageBodyExchanger(testInput.FrameContext); var buffer1 = new byte[1024]; var buffer2 = new byte[1024]; var task1 = exchanger.ReadAsync(new ArraySegment <byte>(buffer1)); var task2 = exchanger.ReadAsync(new ArraySegment <byte>(buffer2)); Assert.False(task1.IsCompleted); Assert.False(task2.IsCompleted); testInput.Add("Hello"); exchanger.Transfer(3, false); var count1 = await task1; Assert.True(task1.IsCompleted); Assert.False(task2.IsCompleted); AssertASCII("Hel", new ArraySegment <byte>(buffer1, 0, count1)); exchanger.Transfer(0, false); Assert.True(task1.IsCompleted); Assert.False(task2.IsCompleted); }
public async Task TransferFinFirstDoesReturnsCompletedReadAsyncs() { var testInput = new TestInput(); var context = new ConnectionContext(); context.SocketInput = new SocketInput(new MemoryPool()); var exchanger = new MessageBodyExchanger(testInput.FrameContext); testInput.Add("Hello"); exchanger.Transfer(5, true); var buffer1 = new byte[1024]; var buffer2 = new byte[1024]; var task1 = exchanger.ReadAsync(new ArraySegment <byte>(buffer1)); var task2 = exchanger.ReadAsync(new ArraySegment <byte>(buffer2)); Assert.True(task1.IsCompleted); Assert.True(task2.IsCompleted); var count1 = await task1; var count2 = await task2; AssertASCII("Hello", new ArraySegment <byte>(buffer1, 0, count1)); Assert.Equal(0, count2); }