// protected methods protected override void SerializeRequest(BsonBinaryWriter bsonWriter, WriteRequest request) { var deleteRequest = (DeleteRequest)request; bsonWriter.PushMaxDocumentSize(MaxDocumentSize); bsonWriter.WriteStartDocument(); bsonWriter.WriteName("q"); BsonSerializer.Serialize(bsonWriter, deleteRequest.Query ?? new QueryDocument()); bsonWriter.WriteInt32("limit", deleteRequest.Limit); bsonWriter.WriteEndDocument(); bsonWriter.PopMaxDocumentSize(); }
public void BsonBinaryWriter_should_support_writing_multiple_documents( [Range(0, 3)] int numberOfDocuments) { var document = new BsonDocument("x", 1); var bson = document.ToBson(); var expectedResult = Enumerable.Repeat(bson, numberOfDocuments).Aggregate(Enumerable.Empty<byte>(), (a, b) => a.Concat(b)).ToArray(); using (var stream = new MemoryStream()) using (var binaryWriter = new BsonBinaryWriter(stream)) { for (var n = 0; n < numberOfDocuments; n++) { binaryWriter.WriteStartDocument(); binaryWriter.WriteName("x"); binaryWriter.WriteInt32(1); binaryWriter.WriteEndDocument(); } var result = stream.ToArray(); result.Should().Equal(expectedResult); } }
public void TestSpecBsonAwesomeWithBsonWriter() { // this test is from http://bsonspec.org/#/specification var stream = new MemoryStream(); using (var bsonWriter = new BsonBinaryWriter(stream)) { bsonWriter.WriteStartDocument(); bsonWriter.WriteStartArray("BSON"); bsonWriter.WriteString("awesome"); bsonWriter.WriteDouble(5.05); bsonWriter.WriteInt32(1986); bsonWriter.WriteEndArray(); bsonWriter.WriteEndDocument(); } byte[] bytes = stream.ToArray(); AssertAreEqual(@"1\x00\x00\x00\x04BSON\x00&\x00\x00\x00\x020\x00\x08\x00\x00\x00awesome\x00\x011\x00333333\x14@\x102\x00\xc2\x07\x00\x00\x00\x00", bytes); }