示例#1
0
        public void Test()
        {
            const int blockCount    = 10;
            const int elemPerItem   = 5;
            var       itemsPerBlock = ExpandableArray <int> .ComputeItemsPerBlock(sizeof(int));

            var x = new ExpandableArray <int>(elemPerItem, sizeof(int));

            Assert.AreEqual(itemsPerBlock, x.ElementsPerBlock / elemPerItem);
            Assert.AreEqual(0, x.GetLocalIndex(0));
            Assert.AreEqual(1, x.GetLocalIndex(1));
            Assert.AreEqual(x.ElementsPerBlock - 1, x.GetLocalIndex(x.ElementsPerBlock - 1));
            Assert.AreEqual(0, x.GetLocalIndex(x.ElementsPerBlock));
            Assert.AreEqual(0, x.GetLocalIndex(itemsPerBlock * elemPerItem));
            Assert.AreEqual(0, x.GetLocalIndex(itemsPerBlock * blockCount * elemPerItem));
            Assert.AreEqual(2, x.GetLocalIndex(itemsPerBlock * blockCount * elemPerItem + 2));
            Assert.AreEqual(x.ElementsPerBlock - 1, x.GetLocalIndex(itemsPerBlock * blockCount * elemPerItem + x.ElementsPerBlock - 1));

            x.EnsureCapacity(itemsPerBlock * blockCount * elemPerItem + 1);
            var realBlockCount = x.EnumerateBlocks().Count();

            Assert.IsTrue(realBlockCount == 1 + blockCount + x.BlockCountIncrement);
        }