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); } }
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); } }
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); } }