public void chunklist_move() { var chunk1 = new PoolChunk(); var chunk2 = new PoolChunk(); var chunklist1 = new PoolChunkList(0, 25); var chunklist2 = new PoolChunkList(25, 50); PoolChunkList.Link(chunklist1, chunklist2); chunklist1.AddLast(chunk1); for (int i = 0; chunk1.CanAlloc; i++) { var buf = new FixedLengthByteBuf(); PoolPage page; int s = 16 * (i + 1); if (s >= 8192) { s = 8192; } chunklist1.TryAllocPage(buf, s, s, out page); if (page == null) { Assert.Fail(); } if (chunk1.UsedPercent < 0.25) { Assert.AreNotEqual(chunklist1.Head, null); Assert.AreEqual(chunklist2.Head, null); } else { Assert.AreEqual(chunklist1.Head, null); Assert.AreNotEqual(chunklist2.Head, null); break; } } }
public void chunklist_next() { var chunklist = new PoolChunkList(0, 100); var chunk1 = new PoolChunk(); var chunk2 = new PoolChunk(); chunklist.AddLast(chunk1); chunklist.AddLast(chunk2); int s = 0; for (int i = 0; chunk1.CanAlloc; i++) { s = 16 * (i + 1); if (s >= 8192) { s = 8192; } PoolPage page; var buf = new FixedLengthByteBuf(); if (!chunklist.TryAllocPage(buf, s, s, out page)) { Assert.Fail(); } Assert.AreEqual(page.Chunk, chunk1); } PoolPage page1; var buf1 = new FixedLengthByteBuf(); if (!chunklist.TryAllocPage(buf1, s, s, out page1)) { Assert.Fail(); } Assert.AreEqual(page1.Chunk, chunk2); }