Example #1
0
        public void ReadingZeroBytesReturnsZeroWithoutThrowingException(int nbBytesAvailable, int limit, int readBufferLength)
        {
            var memoryStream       = new MemoryStream(new byte[nbBytesAvailable]);
            var limiterInputStream = new LimiterInputStream(memoryStream, limit);

            var       buffer          = new byte[readBufferLength];
            const int zeroBytesToRead = 0;

            Assert.Equal(zeroBytesToRead, limiterInputStream.Read(buffer, zeroBytesToRead, zeroBytesToRead));
        }
Example #2
0
        public void DoesNotThrow_WhenTheNumberOfBytesReadIsLessThanTheSpecifiedLimitAndThereAreEnoughBytesAvailable(int nbBytesAvailable, int limit, int readBufferLength)
        {
            Assert.True(nbBytesAvailable >= readBufferLength, "Invalid test case, not enough bytes available for reading.");
            Assert.True(limit >= readBufferLength, "Invalid test case, limit should be greater than or equal to the number of bytes to read.");

            var memoryStream       = new MemoryStream(new byte[nbBytesAvailable]);
            var limiterInputStream = new LimiterInputStream(memoryStream, limit);

            var buffer = new byte[readBufferLength];

            limiterInputStream.Read(buffer);
        }
Example #3
0
        public void ThrowsStreamEndException_WhenEndOfStreamIsReachedBeforeHavingTheRequestedNumberOfBytes(int nbBytesAvailable, int limit, int readBufferLength)
        {
            Assert.True(nbBytesAvailable < readBufferLength, "Invalid test case, there should be less bytes available than the number of bytes to read.");
            Assert.True(limit >= readBufferLength, "Invalid test case, limit should be greater than or equal to the number of bytes to read.");

            var memoryStream       = new MemoryStream(new byte[nbBytesAvailable]);
            var limiterInputStream = new LimiterInputStream(memoryStream, limit);

            var buffer = new byte[readBufferLength];

            Assert.Throws <StreamEndException>(() =>
            {
                limiterInputStream.Read(buffer);
                limiterInputStream.Read(buffer);
            });
        }
Example #4
0
        public void ReadThrowsWhenTheNumberOfBytesReadIsGreaterThanMax(int nbBytesAvailable, int limit, int readBufferLength)
        {
            Assert.True(nbBytesAvailable >= readBufferLength, "Invalid test case, the number of bytes available should be greater than or equal to the number of bytes to read.");
            Assert.True(limit < readBufferLength, "Invalid test case, limit should be less than the number of bytes to read.");

            var ex = Assert.Throws <StreamLimitException>(() =>
            {
                var memoryStream       = new MemoryStream(new byte[nbBytesAvailable]);
                var limiterInputStream = new LimiterInputStream(memoryStream, limit);

                var buffer = new byte[readBufferLength];
                limiterInputStream.Read(buffer);
            });

            Assert.Equal($"Maximum number of readable byte(s) reached (limit={limit}).", ex.Message);
        }
Example #5
0
        public void NbRemainingBytes_IsUpdatedOnRead()
        {
            var memoryStream       = new MemoryStream(new byte[200]);
            var limiterInputStream = new LimiterInputStream(memoryStream, 100);

            Assert.Equal(100, limiterInputStream.NbRemainingBytes);

            limiterInputStream.Read(new byte[50]);

            Assert.Equal(50, limiterInputStream.NbRemainingBytes);

            limiterInputStream.Read(new byte[49]);

            Assert.Equal(1, limiterInputStream.NbRemainingBytes);

            limiterInputStream.Read(new byte[1]);

            Assert.Equal(0, limiterInputStream.NbRemainingBytes);
        }