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); }
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); } }
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); }
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); }
public void Init() { page = new PoolPage(null, 0, 8192, elemSize); }