public void BackpatchSize_should_throw_when_size_is_larger_than_2GB() { using (var stream = new NullBsonStream()) using (var binaryWriter = new BsonBinaryWriter(stream)) { var bytes = new byte[int.MaxValue / 2]; // 1GB var binaryData = new BsonBinaryData(bytes); binaryWriter.WriteStartDocument(); binaryWriter.WriteName("array"); binaryWriter.WriteStartArray(); binaryWriter.WriteBinaryData(binaryData); binaryWriter.WriteBinaryData(binaryData); Action action = () => binaryWriter.WriteEndArray(); // indirectly calls private BackpatchSize method action.ShouldThrow<FormatException>(); } }
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); }