diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs index 7460ebf238..4b4d958f0c 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs @@ -169,6 +169,38 @@ namespace Microsoft.Extensions.WebSockets.Internal.Tests Assert.Equal(expectedRawFrame, data); } + [Fact] + public async Task WriteMultipleFrames() + { + var data = await RunSendTest( + producer: async (socket) => + { + await socket.SendAsync(CreateFrame( + endOfMessage: true, + opcode: WebSocketOpcode.Binary, + payload: new byte[0])).OrTimeout(); + await socket.SendAsync(CreateFrame( + endOfMessage: true, + opcode: WebSocketOpcode.Binary, + payload: new byte[] { 0x01 })).OrTimeout(); + await socket.SendAsync(CreateFrame( + endOfMessage: true, + opcode: WebSocketOpcode.Text, + payload: new byte[0])).OrTimeout(); + await socket.SendAsync(CreateFrame( + endOfMessage: true, + opcode: WebSocketOpcode.Text, + payload: Encoding.UTF8.GetBytes("Hello"))).OrTimeout(); + }, options: DefaultTestOptions); + Assert.Equal(new byte[] + { + 0x82, 0x00, // Frame 1 + 0x82, 0x01, 0x01, // Frame 2 + 0x81, 0x00, // Frame 3 + 0x81, 0x05, (byte)'H', (byte)'e', (byte)'l', (byte)'l', (byte)'o' // Frame 4 + }, data); + } + private static async Task RunSendTest(Func producer, WebSocketOptions options) { using (var factory = new PipeFactory())