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); }
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); }