public void CanceledWhileReading_TaskCanceledExceptionThrown() { string inFrame = StompCommands.Error + "\r\nH1:V1\nH2:V2\n\r\nABC\0"; for (int i = 0; i < inFrame.Length; i++) { using (MemoryStream inStream = new NoEndChunkedMemoryStream()) { inStream.Write(inFrame.Substring(0, i)); inStream.Seek(0, SeekOrigin.Begin); IStompFrameReader reader = new Stomp12FrameReader(inStream); try { CancellationToken cToken = new CancellationTokenSource(10).Token; Frame outFrame = reader.ReadFrameAsync(cToken).Result; Assert.Fail("AggregateException(TaskCanceledException) expected."); } catch (AggregateException e) { Assert.IsTrue(e.InnerException is TaskCanceledException); } } } }
public void FrameInChunks_SuccessfullyRead() { string inFrame = StompCommands.Message + "\r\nH0:V0\r\ncontent-length:20\r\n\r\n12345678901234567890\0"; using (MemoryStream inStream = new NoEndChunkedMemoryStream(chunkSize: 4)) { inStream.Write(inFrame); inStream.Seek(0, SeekOrigin.Begin); IStompFrameReader reader = new Stomp12FrameReader(inStream); Frame outFrame = reader.ReadFrameAsync().Result; Assert.AreEqual(StompCommands.Message, outFrame.Command); Assert.AreEqual(2, outFrame.Headers.Count()); Assert.AreEqual("V0", outFrame.GetAllHeaderValues("H0").First()); Assert.AreEqual("20", outFrame.GetAllHeaderValues("content-length").First()); Assert.AreEqual("12345678901234567890", outFrame.GetBodyAsString()); } }