示例#1
0
        public void TakeAndReturnBuffer()
        {
            var bufferManager = new SimpleBufferManager();

            Trace.TraceInformation(bufferManager.ToString());
            Assert.AreEqual(0, bufferManager.BucketCount);
            Assert.AreEqual(0, bufferManager.AllocatedBytes);
            Assert.AreEqual(0, bufferManager.AvailableBytes);

            byte[] buffer1024 = bufferManager.TakeBuffer(1024);
            Trace.TraceInformation(bufferManager.ToString());
            Assert.AreEqual(1024, buffer1024.Length);
            Assert.AreEqual(1024, bufferManager.AllocatedBytes);
            Assert.AreEqual(1, bufferManager.BucketCount);
            Assert.AreEqual(0, bufferManager.AvailableBytes);

            bufferManager.ReturnBuffer(buffer1024);
            Trace.TraceInformation(bufferManager.ToString());
            Assert.AreEqual(1024, bufferManager.AllocatedBytes);
            Assert.AreEqual(1024, bufferManager.AvailableBytes);
            Assert.AreEqual(1, bufferManager.BucketCount);

            byte[] buffer4096 = bufferManager.TakeBuffer(4096);
            Trace.TraceInformation(bufferManager.ToString());
            Assert.AreEqual(4096, buffer4096.Length);
            Assert.AreEqual(1024 + 4096, bufferManager.AllocatedBytes);
            Assert.AreEqual(1024, bufferManager.AvailableBytes);
            Assert.AreEqual(2, bufferManager.BucketCount);

            bufferManager.ReturnBuffer(buffer4096);
            Trace.TraceInformation(bufferManager.ToString());
            Assert.AreEqual(1024 + 4096, bufferManager.AllocatedBytes);
            Assert.AreEqual(1024 + 4096, bufferManager.AvailableBytes);
            Assert.AreEqual(2, bufferManager.BucketCount);
        }
示例#2
0
        public void LargeBuffer()
        {
            var bufferManager = new SimpleBufferManager();

            int bufferSize = SimpleBufferManager.MaxBufferSize + 1;

            byte[] buffer = bufferManager.TakeBuffer(bufferSize);
            Trace.TraceInformation(bufferManager.ToString());
            Assert.AreEqual(bufferSize, buffer.Length);
            Assert.AreEqual(0, bufferManager.AllocatedBytes);
            Assert.AreEqual(0, bufferManager.AvailableBytes);
            Assert.AreEqual(0, bufferManager.BucketCount);

            bufferManager.ReturnBuffer(buffer);
            Trace.TraceInformation(bufferManager.ToString());
            Assert.AreEqual(0, bufferManager.AllocatedBytes);
            Assert.AreEqual(0, bufferManager.AvailableBytes);
            Assert.AreEqual(0, bufferManager.BucketCount);
        }
示例#3
0
        public void RecycleBuffer()
        {
            var bufferManager = new SimpleBufferManager();
            int bufferSize    = bufferManager.GetDefaultBufferSize();

            for (int i = 0; i < 10; i++)
            {
                byte[] buffer = bufferManager.TakeBuffer(bufferSize);
                Trace.TraceInformation(bufferManager.ToString());
                Assert.AreEqual(bufferSize, buffer.Length);
                Assert.AreEqual(bufferSize, bufferManager.AllocatedBytes);
                Assert.AreEqual(0, bufferManager.AvailableBytes);
                Assert.AreEqual(1, bufferManager.BucketCount);

                bufferManager.ReturnBuffer(buffer);
                Trace.TraceInformation(bufferManager.ToString());
                Assert.AreEqual(bufferSize, bufferManager.AllocatedBytes);
                Assert.AreEqual(bufferSize, bufferManager.AvailableBytes);
                Assert.AreEqual(1, bufferManager.BucketCount);
            }
        }