public void can_clear_even_if_no_messages_habe_been_received() { var args = new SocketBufferFake(); var body = "Hello world"; var type = body.GetType().AssemblyQualifiedName; var serializer = new StringSerializer(); object actual = null; BitConverter2.GetBytes(MicroMessageEncoder.FixedHeaderLength + type.Length, args.Buffer, 0); args.Buffer[2] = MicroMessageDecoder.Version; BitConverter2.GetBytes(body.Length, args.Buffer, 3); args.Buffer[7] = (byte)(sbyte)type.Length; Encoding.ASCII.GetBytes(type, 0, type.Length, args.Buffer, HeaderLengthSize + MicroMessageEncoder.FixedHeaderLength); Encoding.ASCII.GetBytes(body, 0, body.Length, args.Buffer, HeaderLengthSize + type.Length + MicroMessageEncoder.FixedHeaderLength); var sut = new MicroMessageDecoder(serializer); sut.MessageReceived = o => actual = o; sut.Clear(); args.BytesTransferred = body.Length + type.Length + MicroMessageEncoder.FixedHeaderLength + HeaderLengthSize; sut.ProcessReadBytes(args); actual.Should().NotBeNull(); actual.Should().Be("Hello world"); }