public void OverlyLargeRequestsRejected()
        {
            options.MaxBufferSize = 2000;
            subject = new CachingBufferManager(options);

            Assert.Throws <BufferAcquisitionException>(() => subject.GetBuffer(3000));
        }
        public void OverlyLargeRequestsRejected()
        {
            options.MaxBufferSize = 2000;
            subject = new CachingBufferManager(options);

            subject.GetBuffer(3000);
        }
        public void BufferIsNotReusedWithoutDispose()
        {
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(2049);
            IBuffer buffer2 = subject.GetBuffer(2050);
            Assert.AreNotSame(buffer1, buffer2);
        }
        public void BufferIsReusedAfterDispose()
        {
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(2049);
            buffer1.Dispose();
            IBuffer buffer2 = subject.GetBuffer(2050);
            Assert.AreSame(buffer1, buffer2);
        }
        public void BufferOfLargerSizeReturnedWhereAppropriate()
        {
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(2049))
            {
                Assert.AreEqual(4096, buffer.Bytes.Length);
            }
        }
        public void BufferIsNotReusedWithoutDispose()
        {
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(2049);
            IBuffer buffer2 = subject.GetBuffer(2050);

            Assert.AreNotSame(buffer1, buffer2);
        }
        public void BufferOfLargerSizeReturnedWhereAppropriate()
        {
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(2049))
            {
                Assert.AreEqual(4096, buffer.Bytes.Length);
            }
        }
        public void MinBufferSizeHonoured()
        {
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(1))
            {
                Assert.IsTrue(buffer.Bytes.Length == options.MinBufferSize);
            }
        }
        public void MaxBufferSizeHonoured()
        {
            options.MaxBufferSize = 2000;
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(1025))
            {
                Assert.IsTrue(buffer.Bytes.Length == 2000);
            }
        }
        public void BufferIsReusedAfterDispose()
        {
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(2049);

            buffer1.Dispose();
            IBuffer buffer2 = subject.GetBuffer(2050);

            Assert.AreSame(buffer1, buffer2);
        }
        public void UseBiggerActionForcingNew()
        {
            options.MaxBuffersPerSizeBand     = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.UseBigger;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            IBuffer buffer3 = subject.GetBuffer(3000);

            Assert.AreEqual(8192, buffer3.Bytes.Length);
        }
Beispiel #12
0
        public void SmallScalingFactorAndMinBufferSizeWork()
        {
            // This could result in an infinite loop with a naive implementation!
            options.MinBufferSize = 1;
            options.ScalingFactor = 1.25;

            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(7))
            {
                Assert.IsTrue(buffer.Bytes.Length >= 7);
            }
        }
        public void SmallScalingFactorAndMinBufferSizeWork()
        {
            // This could result in an infinite loop with a naive implementation!
            options.MinBufferSize = 1;
            options.ScalingFactor = 1.25;

            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(7))
            {
                Assert.IsTrue(buffer.Bytes.Length >= 7);
            }
        }
        public void DoNotClearAfterUseHonoured()
        {
            options.ClearAfterUse = false;
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(10))
            {
                buffer.Bytes[0] = 1;
            }
            using (IBuffer buffer = subject.GetBuffer(10))
            {
                Assert.AreEqual(1, buffer.Bytes[0]);
            }
        }
        public void UseBiggerActionNoBiggerAvailable()
        {
            options.MaxBuffersPerSizeBand     = 2;
            options.MaxBufferSize             = 4096;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.UseBigger;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            // Fails over to returning an uncached version
            IBuffer buffer3 = subject.GetBuffer(3000);

            Assert.AreEqual(3000, buffer3.Bytes.Length);
        }
        public void ReturnUncachedAction()
        {
            options.MaxBuffersPerSizeBand     = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.ReturnUncached;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);
            IBuffer buffer3 = subject.GetBuffer(3000);

            Assert.AreNotSame(buffer1, buffer2);
            Assert.AreNotSame(buffer2, buffer3);
            Assert.AreNotSame(buffer1, buffer3);

            // Uncached buffer will be exactly the right size
            Assert.AreEqual(3000, buffer3.Bytes.Length);
        }
Beispiel #17
0
        public void CopyWithIBuffer()
        {
            CachingBufferManager.Options options = new CachingBufferManager.Options();
            options.MinBufferSize = 7;
            CachingBufferManager manager = new CachingBufferManager(options);

            StreamStub input = new StreamStub();
            input.AddReadData(new byte[] { 1, 2, 3, 4, 5 });
            input.AddReadData(new byte[] { 6, 7, 8, 9, 10 });
            MemoryStream output = new MemoryStream();
            using (IBuffer buffer = manager.GetBuffer(10))
            {
                StreamUtil.Copy(input, output, buffer);
            }
            Assert.AreEqual(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, output.ToArray());
            Assert.AreEqual(14, input.LastReadSize);
        }
        public void UseBiggerActionReusingExisting()
        {
            options.MaxBuffersPerSizeBand     = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.UseBigger;
            subject = new CachingBufferManager(options);

            // This buffer will be used later on
            IBuffer bigger = subject.GetBuffer(4098);

            bigger.Dispose();

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            IBuffer buffer3 = subject.GetBuffer(3000);

            Assert.AreSame(bigger, buffer3);
        }
        public void ThrowExceptionAction()
        {
            options.MaxBuffersPerSizeBand     = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.ThrowException;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            try
            {
                subject.GetBuffer(3000);
            }
            catch (BufferAcquisitionException)
            {
                // Expected
            }
        }
Beispiel #20
0
        public void ReadFullyWithIBuffer()
        {
            CachingBufferManager.Options options = new CachingBufferManager.Options();
            options.MinBufferSize = 7;
            CachingBufferManager manager = new CachingBufferManager(options);

            StreamStub input = new StreamStub();

            input.AddReadData(new byte[] { 1, 2, 3, 4, 5 });
            input.AddReadData(new byte[] { 6, 7, 8, 9, 10 });
            byte[] actual;
            using (IBuffer buffer = manager.GetBuffer(10))
            {
                actual = StreamUtil.ReadFully(input, buffer);
            }
            Assert.AreEqual(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, actual);
            Assert.AreEqual(14, input.LastReadSize);
        }
Beispiel #21
0
        public void CopyWithIBuffer()
        {
            CachingBufferManager.Options options = new CachingBufferManager.Options();
            options.MinBufferSize = 7;
            CachingBufferManager manager = new CachingBufferManager(options);

            StreamStub input = new StreamStub();

            input.AddReadData(new byte[] { 1, 2, 3, 4, 5 });
            input.AddReadData(new byte[] { 6, 7, 8, 9, 10 });
            MemoryStream output = new MemoryStream();

            using (IBuffer buffer = manager.GetBuffer(10))
            {
                StreamUtil.Copy(input, output, buffer);
            }
            Assert.AreEqual(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, output.ToArray());
            Assert.AreEqual(14, input.LastReadSize);
        }
 public void SetUp()
 {
     options = new CachingBufferManager.Options();
     subject = null;
 }
 public void ParameterLessConstructorUsesDefaultOptions()
 {
     subject = new CachingBufferManager();
     // Just test a single (easy to test!) property
     Assert.AreEqual(options.MinBufferSize, subject.GetBuffer(0).Bytes.Length);
 }
        public void NonPositiveSizeRequestThrowsException()
        {
            subject = new CachingBufferManager(options);

            Assert.Throws <ArgumentOutOfRangeException>(() => subject.GetBuffer(-1));
        }
Beispiel #25
0
 public void NonPositiveSizeRequestThrowsException()
 {
     subject = new CachingBufferManager(options);
     subject.GetBuffer(-1);
 }
Beispiel #26
0
        public void DoNotClearAfterUseHonoured()
        {
            options.ClearAfterUse = false;
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(10))
            {
                buffer.Bytes[0] = 1;
            }
            using (IBuffer buffer = subject.GetBuffer(10))
            {
                Assert.AreEqual(1, buffer.Bytes[0]);
            }
        }
Beispiel #27
0
        public void UseBiggerActionNoBiggerAvailable()
        {
            options.MaxBuffersPerSizeBand = 2;
            options.MaxBufferSize = 4096;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.UseBigger;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            // Fails over to returning an uncached version
            IBuffer buffer3 = subject.GetBuffer(3000);
            Assert.AreEqual(3000, buffer3.Bytes.Length);
        }
Beispiel #28
0
        public void UseBiggerActionReusingExisting()
        {
            options.MaxBuffersPerSizeBand = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.UseBigger;
            subject = new CachingBufferManager(options);

            // This buffer will be used later on
            IBuffer bigger = subject.GetBuffer(4098);
            bigger.Dispose();

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            IBuffer buffer3 = subject.GetBuffer(3000);

            Assert.AreSame(bigger, buffer3);
        }
Beispiel #29
0
        public void UseBiggerActionForcingNew()
        {
            options.MaxBuffersPerSizeBand = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.UseBigger;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            IBuffer buffer3 = subject.GetBuffer(3000);
            Assert.AreEqual(8192, buffer3.Bytes.Length);
        }
Beispiel #30
0
        public void ReturnUncachedAction()
        {
            options.MaxBuffersPerSizeBand = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.ReturnUncached;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);
            IBuffer buffer3 = subject.GetBuffer(3000);

            Assert.AreNotSame(buffer1, buffer2);
            Assert.AreNotSame(buffer2, buffer3);
            Assert.AreNotSame(buffer1, buffer3);

            // Uncached buffer will be exactly the right size
            Assert.AreEqual(3000, buffer3.Bytes.Length);
        }
Beispiel #31
0
        public void ThrowExceptionAction()
        {
            options.MaxBuffersPerSizeBand = 2;
            options.ActionOnBufferUnavailable = CachingBufferManager.Options.BufferUnavailableAction.ThrowException;
            subject = new CachingBufferManager(options);

            IBuffer buffer1 = subject.GetBuffer(3000);
            IBuffer buffer2 = subject.GetBuffer(3000);

            try
            {
                subject.GetBuffer(3000);
            }
            catch (BufferAcquisitionException)
            {
                // Expected
            }
        }
Beispiel #32
0
 public void SetUp()
 {
     options = new CachingBufferManager.Options();
     subject = null;
 }
Beispiel #33
0
        public void OverlyLargeRequestsRejected()
        {
            options.MaxBufferSize = 2000;
            subject = new CachingBufferManager(options);

            subject.GetBuffer(3000);
        }
Beispiel #34
0
        public void MaxBufferSizeHonoured()
        {
            options.MaxBufferSize = 2000;
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(1025))
            {
                Assert.IsTrue(buffer.Bytes.Length == 2000);
            }
        }
 public void NonPositiveSizeRequestThrowsException()
 {
     subject = new CachingBufferManager(options);
     subject.GetBuffer(-1);
 }
Beispiel #36
0
 public void ParameterLessConstructorUsesDefaultOptions()
 {
     subject = new CachingBufferManager();
     // Just test a single (easy to test!) property
     Assert.AreEqual(options.MinBufferSize, subject.GetBuffer(0).Bytes.Length);
 }
Beispiel #37
0
        public void MinBufferSizeHonoured()
        {
            subject = new CachingBufferManager(options);

            using (IBuffer buffer = subject.GetBuffer(1))
            {
                Assert.IsTrue(buffer.Bytes.Length == options.MinBufferSize);
            }
        }
Beispiel #38
0
        public void ReadFullyWithIBuffer()
        {
            CachingBufferManager.Options options = new CachingBufferManager.Options();
            options.MinBufferSize = 7;
            CachingBufferManager manager = new CachingBufferManager(options);

            StreamStub input = new StreamStub();
            input.AddReadData(new byte[] { 1, 2, 3, 4, 5 });
            input.AddReadData(new byte[] { 6, 7, 8, 9, 10 });
            byte[] actual;
            using (IBuffer buffer = manager.GetBuffer(10))
            {
                actual = StreamUtil.ReadFully(input, buffer);
            }
            Assert.AreEqual(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, actual);
            Assert.AreEqual(14, input.LastReadSize);
        }