public void WriteMessage_should_write_a_query_failure_message()
 {
     using (var stream = new MemoryStream())
     {
         var subject = new ReplyMessageBinaryEncoder<BsonDocument>(stream, __messageEncoderSettings, __serializer);
         subject.WriteMessage(__queryFailureMessage);
         var bytes = stream.ToArray();
         bytes.Should().Equal(__queryFailureMessageBytes);
     }
 }
        public void WriteMessage_should_encode_flags_correctly(int flags, bool cursorNotFound, bool queryFailure, bool awaitCapable)
        {
            var documents = queryFailure ? null : __documents;
            var queryFailureDocument = queryFailure ? new BsonDocument("ok", 0) : null;
            var message = new ReplyMessage<BsonDocument>(awaitCapable, __cursorId, cursorNotFound, documents, __numberReturned, queryFailure, queryFailureDocument, __requestId, __responseTo, __serializer, __startingFrom);

            using (var stream = new MemoryStream())
            {
                var subject = new ReplyMessageBinaryEncoder<BsonDocument>(stream, __messageEncoderSettings, __serializer);
                subject.WriteMessage(message);
                var bytes = stream.ToArray();
                bytes[__flagsOffset].Should().Be((byte)flags);
            }
        }
 public void WriteMessage_should_throw_if_message_is_null()
 {
     using (var stream = new MemoryStream())
     {
         var subject = new ReplyMessageBinaryEncoder<BsonDocument>(stream, __messageEncoderSettings, __serializer);
         Action action = () => subject.WriteMessage(null);
         action.ShouldThrow<ArgumentNullException>();
     }
 }
 public void ReadMessage_should_read_a_query_failure_message()
 {
     using (var stream = new MemoryStream(__queryFailureMessageBytes))
     {
         var subject = new ReplyMessageBinaryEncoder<BsonDocument>(stream, __messageEncoderSettings, __serializer);
         var message = subject.ReadMessage();
         message.AwaitCapable.Should().Be(false);
         message.CursorId.Should().Be(__cursorId);
         message.CursorNotFound.Should().Be(false);
         message.Documents.Should().BeNull();
         message.NumberReturned.Should().Be(0);
         message.QueryFailure.Should().Be(true);
         message.QueryFailureDocument.Should().Be(__queryFailureDocument);
         message.Serializer.Should().BeSameAs(__serializer);
         message.StartingFrom.Should().Be(0);
         message.RequestId.Should().Be(__requestId);
         message.ResponseTo.Should().Be(__responseTo);
     }
 }
        public void ReadMessage_should_decode_flags_correctly(int flags, bool cursorNotFound, bool queryFailure, bool awaitCapable)
        {
            var bytes = (byte[])__testMessageBytes.Clone();
            bytes[__flagsOffset] = (byte)flags;

            using (var stream = new MemoryStream(bytes))
            {
                var subject = new ReplyMessageBinaryEncoder<BsonDocument>(stream, __messageEncoderSettings, __serializer);
                var message = subject.ReadMessage();
                message.CursorNotFound.Should().Be(cursorNotFound);
                message.QueryFailure.Should().Be(queryFailure);
                message.AwaitCapable.Should().Be(awaitCapable);
            }
        }
 public void WriteMessage_should_write_a_message()
 {
     using (var stream = new MemoryStream())
     using (var binaryWriter = new BsonBinaryWriter(stream))
     {
         var subject = new ReplyMessageBinaryEncoder<BsonDocument>(null, binaryWriter, __serializer);
         subject.WriteMessage(__testMessage);
         var bytes = stream.ToArray();
         bytes.Should().Equal(__testMessageBytes);
     }
 }
 public void WriteMessage_should_throw_if_binaryWriter_was_not_provided()
 {
     using (var stream = new MemoryStream())
     using (var binaryReader = new BsonBinaryReader(stream))
     {
         var subject = new ReplyMessageBinaryEncoder<BsonDocument>(binaryReader, null, __serializer);
         Action action = () => subject.WriteMessage(__testMessage);
         action.ShouldThrow<InvalidOperationException>();
     }
 }
 public void ReadMessage_should_read_a_message()
 {
     using (var stream = new MemoryStream(__testMessageBytes))
     using (var binaryReader = new BsonBinaryReader(stream))
     {
         var subject = new ReplyMessageBinaryEncoder<BsonDocument>(binaryReader, null, __serializer);
         var message = subject.ReadMessage();
         message.AwaitCapable.Should().Be(__awaitCapable);
         message.CursorId.Should().Be(__cursorId);
         message.CursorNotFound.Should().Be(__cursorNotFound);
         message.Documents.Should().Equal(__documents);
         message.NumberReturned.Should().Be(__numberReturned);
         message.QueryFailure.Should().Be(false);
         message.QueryFailureDocument.Should().Be(null);
         message.Serializer.Should().BeSameAs(__serializer);
         message.StartingFrom.Should().Be(__startingFrom);
         message.RequestId.Should().Be(__requestId);
         message.ResponseTo.Should().Be(__responseTo);
     }
 }