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); }
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); }
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 } }
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); }
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)); }
public void NonPositiveSizeRequestThrowsException() { subject = new CachingBufferManager(options); subject.GetBuffer(-1); }
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 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 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); }
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); }
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 } }
public void SetUp() { options = new CachingBufferManager.Options(); subject = null; }
public void OverlyLargeRequestsRejected() { options.MaxBufferSize = 2000; subject = new CachingBufferManager(options); subject.GetBuffer(3000); }
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); }
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 MinBufferSizeHonoured() { subject = new CachingBufferManager(options); using (IBuffer buffer = subject.GetBuffer(1)) { Assert.IsTrue(buffer.Bytes.Length == options.MinBufferSize); } }
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); }