public void BackpatchSize_should_backpatch_the_size( [Values(0, 1, 5)] int startPosition) { var bytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var length = bytes.Length - startPosition; var expectedBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Array.Copy(BitConverter.GetBytes(length), 0, expectedBytes, startPosition, 4); using (var memoryStream = new MemoryStream()) using (var stream = new BsonStreamAdapter(memoryStream)) { stream.WriteBytes(bytes, 0, bytes.Length); var position = stream.Position; stream.BackpatchSize(startPosition); memoryStream.ToArray().Should().Equal(expectedBytes); stream.Position.Should().Be(position); } }