Ejemplo n.º 1
0
            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;
            }
Ejemplo n.º 2
0
        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()");
        }