public Folder(string name) { Name = name; Folders = new SortedEditableList <Folder, string>(folder => folder.Name); Documents = new SortedEditableList <IDocument, string>(document => document.Name); Folders.Added += Folders_Added; Folders.Removed += Folders_Removed; Folders.OrderChanged += Folders_OrderChanged; Documents.Added += Documents_Added; Documents.Removed += Documents_Removed; Documents.OrderChanged += Documents_OrderChanged; }
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()"); }