Ejemplo n.º 1
0
        public void EnsureAvailableSpaceUpToLimitTest()
        {
            MultiArrayBuffer buffer = new MultiArrayBuffer(0);

            Assert.Equal(0, buffer.ActiveMemory.Length);
            Assert.Equal(0, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(0, 0);
            Assert.Equal(0, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(0, 1);
            Assert.Equal(0, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(1, 0);
            Assert.Equal(0, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(1, 1);
            Assert.Equal(BlockSize, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(1, 2);
            Assert.Equal(BlockSize, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize, 0);
            Assert.Equal(BlockSize, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize + 1, 0);
            Assert.Equal(BlockSize, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize, BlockSize);
            Assert.Equal(BlockSize, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize + 1, BlockSize);
            Assert.Equal(BlockSize, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize + 1, BlockSize + 1);
            Assert.Equal(BlockSize * 2, buffer.AvailableMemory.Length);

            buffer.Commit(2);
            buffer.Discard(1);
            Assert.Equal(1, buffer.ActiveMemory.Length);
            Assert.Equal(BlockSize * 2 - 2, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize * 2 - 2, BlockSize * 2 - 3);
            Assert.Equal(BlockSize * 2 - 2, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize * 2 - 2, BlockSize * 2 - 2);
            Assert.Equal(BlockSize * 2 - 2, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize * 2 - 2, BlockSize * 2 - 1);
            Assert.Equal(BlockSize * 2 - 2, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize * 2 - 1, BlockSize * 2 - 1);
            Assert.Equal(BlockSize * 2 - 2, buffer.AvailableMemory.Length);

            buffer.EnsureAvailableSpaceUpToLimit(BlockSize * 2 - 1, BlockSize * 2);
            Assert.Equal(BlockSize * 3 - 2, buffer.AvailableMemory.Length);
        }