public void GetChunk_should_throw_when_subject_is_disposed()
        {
            var baseSource = Substitute.For <IBsonChunkSource>();
            var subject    = new InputBufferChunkSource(baseSource);

            subject.Dispose();

            Action action = () => subject.GetChunk(1);

            action.ShouldThrow <ObjectDisposedException>().And.ObjectName.Should().Be("InputBufferChunkSource");
        }
        public void GetChunk_should_throw_when_requestedSize_is_less_than_or_equal_to_zero(
            [Values(-1, 0)]
            int requestedSize)
        {
            var baseSource = Substitute.For <IBsonChunkSource>();
            var subject    = new InputBufferChunkSource(baseSource);

            Action action = () => subject.GetChunk(requestedSize);

            action.ShouldThrow <ArgumentOutOfRangeException>().And.ParamName.Should().Be("requestedSize");
        }
        public void GetChunk_should_round_requestedSize_to_power_of_2_without_wasting_too_much_space(int requestedSize, int roundedSize)
        {
            var baseSource = Substitute.For <IBsonChunkSource>();
            var subject    = new InputBufferChunkSource(baseSource, maxUnpooledChunkSize: 0, minChunkSize: 4, maxChunkSize: 16);

            baseSource.GetChunk(Arg.Any <int>()).Returns(Substitute.For <IBsonChunk>());

            subject.GetChunk(requestedSize);

            baseSource.Received(1).GetChunk(roundedSize);
        }
Esempio n. 4
0
        public void GetChunk_should_round_requestedSize_to_power_of_2_without_wasting_too_much_space(int requestedSize, int roundedSize)
        {
            var mockBaseSource = new Mock <IBsonChunkSource>();
            var subject        = new InputBufferChunkSource(mockBaseSource.Object, maxUnpooledChunkSize: 0, minChunkSize: 4, maxChunkSize: 16);

            mockBaseSource.Setup(s => s.GetChunk(It.IsAny <int>())).Returns(() => new Mock <IBsonChunk>().Object);

            subject.GetChunk(requestedSize);

            mockBaseSource.Verify(s => s.GetChunk(roundedSize), Times.Once);
        }
        public void GetChunk_should_return_unpooled_chunk_when_requestedSize_is_less_than_or_equal_to_maxUnpooledChunkSize(
            [Values(1, 2, 4 * 1024 - 1, 4 * 1024)]
            int requestedSize)
        {
            var baseSource = Substitute.For <IBsonChunkSource>();
            var subject    = new InputBufferChunkSource(baseSource);

            var result = subject.GetChunk(requestedSize);

            result.Should().BeOfType <ByteArrayChunk>();
            result.Bytes.Count.Should().Be(requestedSize);
            baseSource.DidNotReceive().GetChunk(Arg.Any <int>());
        }
Esempio n. 6
0
        public void GetChunk_should_return_unpooled_chunk_when_requestedSize_is_less_than_or_equal_to_maxUnpooledChunkSize(
            [Values(1, 2, 4 * 1024 - 1, 4 * 1024)]
            int requestedSize)
        {
            var mockBaseSource = new Mock <IBsonChunkSource>();
            var subject        = new InputBufferChunkSource(mockBaseSource.Object);

            var result = subject.GetChunk(requestedSize);

            result.Should().BeOfType <ByteArrayChunk>();
            result.Bytes.Count.Should().Be(requestedSize);
            mockBaseSource.Verify(s => s.GetChunk(It.IsAny <int>()), Times.Never);
        }