private void Assert(BsonTrie <int> trie, string name) { var subject = new TrieNameDecoder <int>(trie); using (var memoryStream = new MemoryStream()) using (var bsonStream = new BsonStreamAdapter(memoryStream)) { bsonStream.WriteCString(name); bsonStream.WriteInt32(20); bsonStream.Position = 0; var result = subject.Decode(bsonStream, Utf8Encodings.Strict); result.Should().Be(name); } }
// private methods private void Assert(string name, TrieNameDecoder <int> subject, bool found, int value) { using (var memoryStream = new MemoryStream()) using (var bsonStream = new BsonStreamAdapter(memoryStream)) { bsonStream.WriteCString(name); bsonStream.WriteInt32(20); bsonStream.Position = 0; var result = subject.Decode(bsonStream, Utf8Encodings.Strict); result.Should().Be(name); subject.Found.Should().Be(found); subject.Value.Should().Be(value); } }
private byte[] CreateType1SectionBytes(Type1CommandMessageSection <BsonDocument> section) { using (var memoryStream = new MemoryStream()) using (var stream = new BsonStreamAdapter(memoryStream)) using (var writer = new BsonBinaryWriter(stream)) { stream.WriteByte(1); var payloadStartPosition = stream.Position; stream.WriteInt32(0); // size stream.WriteCString(section.Identifier); var context = BsonSerializationContext.CreateRoot(writer); var batch = section.Documents; for (var i = 0; i < batch.Count; i++) { var document = batch.Items[batch.Offset + i]; BsonDocumentSerializer.Instance.Serialize(context, document); } stream.BackpatchSize(payloadStartPosition); return(memoryStream.ToArray()); } }