public void Test20KDocument() { // manufacture an approximately 20K document using 200 strings each 100 characters long // it's enough to cause the document to straddle a chunk boundary var document = new BsonDocument(); var value = new string('x', 100); for (int i = 0; i < 200; i++) { var name = i.ToString(); document.Add(name, value); } // round trip tests var bson = document.ToBson(); var rehydrated = BsonSerializer.Deserialize<BsonDocument>(bson); Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson())); // test failure mode when 20 bytes are truncated from the buffer using (var buffer = new BsonBuffer()) { buffer.LoadFrom(new MemoryStream(bson)); buffer.Length -= 20; using (var bsonReader = BsonReader.Create(buffer)) { Assert.Throws<EndOfStreamException>(() => BsonSerializer.Deserialize<BsonDocument>(bsonReader)); } } }
public static BsonReader Create( Stream stream, BsonBinaryReaderSettings settings ) { BsonBuffer buffer = new BsonBuffer(); buffer.LoadFrom(stream); return new BsonBinaryReader(buffer, settings); }