Example #1
0
        public void poolchunk_allocAllPage_random()
        {
            Random rd = new Random();

            int val;
            int useables = 0;

            for (int i = 0; chunk.CanAlloc; i++)
            {
                val = rd.Next(elemSize, pageSize);
                int size = CalcAllocSize(val);

                Assert.AreNotEqual(chunk.Availables, 0);

                PoolPage page = chunk.AllocPage(size, val);

                useables += pageSize;

                Assert.AreNotEqual(chunk.Usedables, 0);
                Assert.AreEqual(chunk.Availables, capacity - useables);
                Assert.AreEqual(chunk.Usedables, useables);
            }

            val = rd.Next(16, 8192);
            int size2 = CalcAllocSize(val);

            PoolPage page1 = chunk.AllocPage(size2, val);

            Assert.AreEqual(page1, null);
            Assert.AreEqual(chunk.Availables, 0);
            Assert.AreEqual(chunk.Usedables, capacity);
        }
Example #2
0
        public void poolchunk_return()
        {
            PoolPage page = chunk.AllocPage(elemSize, size);

            Assert.AreNotEqual(page, null);

            long handle = page.Alloc(elemSize);

            Assert.AreNotEqual(handle, -1);
            Assert.AreEqual(chunk.Usedables, pageSize);

            chunk.Return(page.Handle);

            Assert.AreEqual(chunk.Usedables, 0);
            Assert.IsFalse(page.Allocated);
            Assert.AreEqual(page.ElemSize, 0);

            try
            {
                chunk.Return(page.Handle + 1);
                Assert.Fail();
            }
            catch (IndexOutOfRangeException ex)
            {
                Assert.IsTrue(true);
            }
        }
Example #3
0
        public void poolchunk_allocPage()
        {
            PoolPage page = chunk.AllocPage(elemSize, size);

            Assert.AreNotEqual(page, null);
            Assert.AreEqual(page.Capacity, pageSize);
            Assert.AreEqual(page.ElemSize, elemSize);
            Assert.AreEqual(chunk.Availables, capacity - pageSize);
            Assert.AreEqual(chunk.Usedables, pageSize);
            Assert.AreEqual(chunk.CanAlloc, true);
        }
Example #4
0
        public void poolchunk_allocAllPage()
        {
            int i        = 0;
            int useables = 0;

            for (; chunk.CanAlloc; i++)
            {
                Assert.AreNotEqual(chunk.Availables, 0);

                PoolPage page0 = chunk.AllocPage(elemSize, 6);
                useables += pageSize;

                Assert.AreNotEqual(chunk.Usedables, 0);
                Assert.AreEqual(chunk.Availables, capacity - useables);
                Assert.AreEqual(chunk.Usedables, useables);
            }

            PoolPage page1 = chunk.AllocPage(elemSize, 6);

            Assert.AreEqual(page1, null);
            Assert.AreEqual(chunk.Availables, 0);
            Assert.AreEqual(chunk.Usedables, capacity);
        }
Example #5
0
 public void Init()
 {
     page = new PoolPage(null, 0, 8192, elemSize);
 }