Пример #1
0
        public void NestedBufferTest()
        {
            using (var temp = TempDirectory.Create())
            {
                var colChanges = 0;
                var colUpdates = 0;
                var col        = new ItemCollection <DatabaseObject>(temp.TempPath);
                col.ItemUpdated           += (e, args) => colUpdates++;
                col.ItemCollectionChanged += (e, args) => colChanges++;
                var item = new DatabaseObject();

                col.BeginBufferUpdate();
                col.BeginBufferUpdate();
                col.BeginBufferUpdate();
                col.Add(item);
                col.Update(item);
                col.EndBufferUpdate();
                Assert.AreEqual(0, colChanges);
                Assert.AreEqual(0, colChanges);
                col.EndBufferUpdate();
                Assert.AreEqual(0, colChanges);
                Assert.AreEqual(0, colChanges);
                col.EndBufferUpdate();
                Assert.AreEqual(1, colUpdates);
                Assert.AreEqual(1, colChanges);

                col.BeginBufferUpdate();
                col.Update(item);
                col.EndBufferUpdate();
                Assert.AreEqual(2, colUpdates);
            }
        }
Пример #2
0
        public void BufferConsolidationTest()
        {
            using (var temp = TempDirectory.Create())
            {
                ItemCollectionChangedEventArgs <DatabaseObject> colChanges = null;
                ItemUpdatedEventArgs <DatabaseObject>           colUpdates = null;
                var col = new ItemCollection <DatabaseObject>(temp.TempPath);
                col.ItemUpdated           += (e, args) => colUpdates = args;
                col.ItemCollectionChanged += (e, args) => colChanges = args;

                var item = new DatabaseObject()
                {
                    Name = "Original"
                };
                col.Add(item);

                col.BeginBufferUpdate();
                item.Name = "Change1";
                col.Update(item);
                item.Name = "Change2";
                col.Update(item);
                col.EndBufferUpdate();
                Assert.AreEqual(1, colUpdates.UpdatedItems.Count);
                Assert.AreEqual("Original", colUpdates.UpdatedItems[0].OldData.Name);
                Assert.AreEqual("Change2", colUpdates.UpdatedItems[0].NewData.Name);
            }
        }
        public void EventsArgsBufferedTest()
        {
            using (var temp = TempDirectory.Create())
            {
                ItemCollectionChangedEventArgs <DatabaseObject> itemColArgs    = null;
                ItemUpdatedEventArgs <DatabaseObject>           itemUpdateArgs = null;
                var col = new ItemCollection <DatabaseObject>(temp.TempPath);
                col.ItemUpdated           += (e, args) => itemUpdateArgs = args;
                col.ItemCollectionChanged += (e, args) => itemColArgs = args;
                var item = new DatabaseObject();

                col.BeginBufferUpdate();
                col.Add(item);
                col.Update(item);
                col.Update(item);
                col.Remove(item);
                Assert.IsNull(itemColArgs);
                Assert.IsNull(itemUpdateArgs);

                col.EndBufferUpdate();
                Assert.AreEqual(1, itemColArgs.AddedItems.Count);
                Assert.AreEqual(1, itemColArgs.RemovedItems.Count);
                Assert.AreEqual(2, itemUpdateArgs.UpdatedItems.Count);
            }
        }
Пример #4
0
        public void EventsInvokeCountBufferedTest()
        {
            using (var temp = TempDirectory.Create())
                using (var col = new ItemCollection <DatabaseObject>(Path.Combine(temp.TempPath, "db"), null))
                {
                    var itemUpdates = 0;
                    var colUpdates  = 0;
                    col.ItemUpdated           += (e, args) => itemUpdates++;
                    col.ItemCollectionChanged += (e, args) => colUpdates++;

                    var item = new DatabaseObject();
                    col.BeginBufferUpdate();
                    col.Add(item);
                    col.Update(item);
                    col.Remove(item);
                    Assert.AreEqual(0, itemUpdates);
                    Assert.AreEqual(0, colUpdates);
                    col.EndBufferUpdate();
                    Assert.AreEqual(1, itemUpdates);
                    Assert.AreEqual(1, colUpdates);
                }
        }