public static VList <LNode> WithSpliced(this VList <LNode> list, int index, LNode node, Symbol listName = null) { if (node.Calls(listName ?? CodeSymbols.Splice)) { return(list.InsertRange(index, node.Args)); } else { return(list.Insert(index, node)); } }
public void TestEmptyListOperations() { VList<int> a = new VList<int>(); VList<int> b = new VList<int>(); a.AddRange(b); a.InsertRange(0, b); a.RemoveRange(0, 0); Assert.That(!a.Remove(0)); Assert.That(a.IsEmpty); a.Add(1); b.AddRange(a); ExpectList(b, 1); b.RemoveAt(0); Assert.That(b.IsEmpty); b.InsertRange(0, a); ExpectList(b, 1); b.RemoveRange(0, 1); Assert.That(b.IsEmpty); b.Insert(0, a[0]); ExpectList(b, 1); b.Remove(a.Last); Assert.That(b.IsEmpty); AssertThrows<InvalidOperationException>(delegate() { a.NextIn(b); }); }