public void WriteBytes_should_optimize_count_of_one()
        {
            using (var baseStream = Substitute.For <Stream>())
                using (var stream = new BsonStreamAdapter(baseStream))
                {
                    var buffer = new byte[] { 1 };

                    stream.WriteBytes(buffer, 0, 1);

                    baseStream.Received(1).WriteByte(1);
                }
        }
Example #2
0
        public void WriteBytes_should_optimize_count_of_one()
        {
            var mockBaseStream = new Mock <Stream>();

            using (var baseStream = mockBaseStream.Object)
                using (var stream = new BsonStreamAdapter(baseStream))
                {
                    var buffer = new byte[] { 1 };

                    stream.WriteBytes(buffer, 0, 1);

                    mockBaseStream.Verify(s => s.WriteByte(1), Times.Once);
                }
        }
        public void WriteBytes_should_have_expected_effect(
            int length,
            int offset,
            int count)
        {
            using (var memoryStream = new MemoryStream())
                using (var stream = new BsonStreamAdapter(memoryStream))
                {
                    var buffer = Enumerable.Range(0, length).Select(n => (byte)n).ToArray();

                    stream.WriteBytes(buffer, offset, count);

                    memoryStream.ToArray().Should().Equal(buffer.Skip(offset).Take(count));
                }
        }
        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);
                }
        }