private void Add(INodeInfo nodeInfo) { //insert nodeInfo to FCategoryList bool added = false; foreach (CategoryEntry ce in FCategoryList) { if (ce.Name == nodeInfo.Category) { ce.Add(nodeInfo); added = true; break; } } //category not yet present. create a new one if (!added) { string description; if (FCategoryDict.ContainsKey(nodeInfo.Category)) { description = FCategoryDict[nodeInfo.Category]; } else { description = ""; } var ce = new CategoryEntry(nodeInfo.Category, description); ce.Add(nodeInfo); FCategoryList.Add(ce); } // NeedsUpdate = true; }
public void TestObjectLifetime() { int createCount = 0; int destroyCount = 0; var source = new SortedEditableList <MockObject, int>(mo => mo.Order); var target = new EditableCollection <MockObject>(); Func <MockObject, MockObject> createMo = mo => { createCount++; return(new MockObject(mo.Order)); }; Action <MockObject> destroyMo = mo => { destroyCount++; }; target.SyncWith(source, createMo, destroyMo); source.Add(new MockObject(0)); Assert.AreEqual(1, createCount, "Create count"); Assert.AreEqual(0, destroyCount, "Destroy count"); var mock = new MockObject(-1); source.Add(mock); source.Add(new MockObject(-2)); source.Add(new MockObject(10)); Assert.AreEqual(4, createCount, "Create count"); Assert.AreEqual(0, destroyCount, "Destroy count"); source.Remove(mock); Assert.AreEqual(4, createCount, "Create count"); Assert.AreEqual(1, destroyCount, "Destroy count"); Assert.AreEqual(source.Count, target.Count); source.Clear(); Assert.AreEqual(source.Count, target.Count); Assert.AreEqual(createCount, destroyCount, "Create count doesn't match destroy count after source.Clear()"); }