public void AddAfter_ItemInListWithPromotions_UpdatesParents() { CreateThreeLevelTree(1); _coinFlipper.DefaultFlip = true; IndexingSkipList <object> .Node newNode = _target.AddAfter(_leaves[1], 2, _values[0]); Assert.AreEqual(_values[0], newNode.Value); Assert.AreEqual(2, newNode.ItemsInNode); Assert.AreEqual(3, newNode.Above.ItemsInNode); Assert.AreEqual(1, _leaves[1].Above.ItemsInNode); AssertLinked(_leaves[1], newNode); AssertLinked(_leaves[1].Above, newNode.Above); AssertLinked(_headers[0], newNode.Above.Above); AssertLinked(_headers[0].Above, newNode.Above.Above.Above); }
private IndexingSkipList <IList <TResult> > .Node RecordItem(IndexingSkipList <IList <TResult> > .Node nodeBefore, TSource item, IList <TResult> collection) { int count = GetCount(collection); var newNode = _collectionIndex.AddAfter(nodeBefore, count, collection); RecordNodeForItemInLookupTables(item, collection, newNode); if (collection != null && !_weakEventHandlers.ContainsKey(collection)) { WeakEventHandler weakEventHandler = WeakNotifyCollectionChangedEventHandler.Register( (INotifyCollectionChanged)collection, this, (me, sender, args) => me.OnSubCollectionChanged(sender, args)); _weakEventHandlers.Add(collection, weakEventHandler); } return(newNode); }