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());
             }
 }