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