Example #1
0
        public void poolpage_alloc_canAlloc()
        {
            long handle2 = 1;
            int  code;

            //释放一个还没有分配的handle,返回-1
            code = page.Return(handle2);
            Assert.AreEqual(code, -1);

            for (int i = 1; i <= page.Total && page.CanAlloc; i++)
            {
                long handle = page.Alloc(elemSize);
                if (handle == -1)
                {
                    Console.WriteLine("还有可以分配的segment,但是却报告错误了");
                    Console.WriteLine("循环次数:" + i);
                    Console.WriteLine("page.Total:" + page.Total);
                    Console.WriteLine("page.Available:" + page.Available);
                    Console.WriteLine("------------------------------------");
                    Assert.Fail();
                }
            }


            code = 0;
            code = page.Return(handle2);
            Assert.AreEqual(code, 0);

            //将释放的handle再进行释放,将返回-1
            code = 0;
            code = page.Return(handle2);
            Assert.AreEqual(code, -1);

            //释放一个超过范围的值,将返回-1
            code = 0;
            code = page.Return(513);

            Assert.AreEqual(code, -1);
        }