public void TestInsert() { var spread = new Spread <int>(0); spread.AssignFrom(sampleData); var list = spread.ToList(); int oldSliceCount = spread.SliceCount; spread.Insert(0, 12); list.Insert(0, 12); Assert.AreEqual(oldSliceCount + 1, spread.SliceCount, "SliceCount after insert at index 0 doesn't match."); for (int i = 0; i < spread.SliceCount; i++) { Assert.AreEqual(list[i], spread[i], "Insert at index 0 failed."); } oldSliceCount = spread.SliceCount; spread.Insert(oldSliceCount, 13); list.Insert(oldSliceCount, 13); Assert.AreEqual(oldSliceCount + 1, spread.SliceCount, "SliceCount after insert at end of spread doesn't match."); for (int i = 0; i < spread.SliceCount; i++) { Assert.AreEqual(list[i], spread[i], "Insert at end of spread failed."); } }
public virtual void Alter(int i, int incr, int binSize, ref Spread <Spread <T> > buffer) { if (FSet[i] && buffer.SliceCount > 0) { buffer[FId[i]] = (Spread <T>)FIn.GetRange(incr, binSize); } if (FRemove[i] && buffer.SliceCount > 0) { buffer.RemoveAt(FId[i]); } if (FInsert[i]) { int id = VMath.Zmod(FId[i], buffer.SliceCount + 1); if (buffer.SliceCount > 0 || id < buffer.SliceCount) { buffer.Insert(id, (Spread <T>)FIn.GetRange(incr, binSize)); } else { buffer.Add((Spread <T>)FIn.GetRange(incr, binSize)); } } }