public void TestStreamingDecoderFailures() { foreach (var entry in _negativeEncodedTestCases) { var decoder = new EventStreamDecoder(); decoder.MessageReceived += DecoderDidNotFail; try { decoder.ProcessData(entry.Value, 0, entry.Value.Length); Assert.Fail("The decoder should have failed on write of invalid data."); } catch (Exception) { try { decoder.ProcessData(entry.Value, 0, entry.Value.Length); Assert.Fail("Calling decode on a decoder that has failed, should throw and exception"); } catch (EventStreamDecoderIllegalStateException ex) { } } } }
public void TestStreamingDecoder() { using (var memoryStream = new MemoryStream()) { foreach (var entry in _positiveEncodedTestCases) { memoryStream.Write(entry.Value, 0, entry.Value.Length); } memoryStream.Position = 0; var decoder = new EventStreamDecoder(); decoder.MessageReceived += Decoder_MessageReceived; var buffer = new byte[128]; var read = 0; while ((read = memoryStream.Read(buffer, 0, buffer.Length)) > 0) { decoder.ProcessData(buffer, 0, read); } } Assert.AreEqual(_positiveEncodedTestCases.Count, _decoderMessages.Count); var index = 0; foreach (var messageBuffer in _positiveEncodedTestCases.Values) { CollectionAssert.AreEqual(messageBuffer, _decoderMessages[index++].ToByteArray()); } }