public void BeginEndBulkOperationTest() { CollectionChangedEventArgs args = null; var collection = new BulkObservableCollection <int>(); collection.CollectionChanged += (sender, e) => args = e; collection.BeginBatch(); collection.Add(1); Assert.IsNull(args); collection.Add(2); Assert.IsNull(args); collection.EndBatch(); Assert.IsNotNull(args); args = null; collection.BeginBatch(); collection.AddRange(new[] { 1, 2, 3 }); Assert.IsNull(args); collection.Add(4); Assert.IsNull(args); collection.Remove(4); Assert.IsNull(args); collection.Insert(0, 5); Assert.IsNull(args); collection.Move(0, 1); Assert.IsNull(args); collection.RemoveAt(0); Assert.IsNull(args); collection.Clear(); Assert.IsNull(args); collection.EndBatch(); Assert.IsNotNull(args); }
public void OperationCollapseTest() { var argsList = new List <CollectionChangedEventArgs>(); var collection = new BulkObservableCollection <int>(); collection.CollectionChanged += (sender, e) => argsList.Add(e); collection.BeginBatch(); collection.Add(1); // \ collection.Add(2); // > collapse into 1 add collection.Add(3); // / collection.Remove(1); // \ collection.Remove(2); // > collapse into 1 remove collection.Remove(3); // / collection.AddRange(new[] { 1, 2, 3 }); // \ collection.Add(4); // > collapse into 1 add collection.AddRange(new[] { 5, 6, 7 }); // / collection.Remove(7); // \ collection.Remove(6); // > collapse into 1 clear collection.Clear(); // / collection.Add(1); // \ collection.Add(2); // > collapse into 1 add collection.Add(3); // / collection[0] = 1337; // no collapse collection.Remove(1337); // no collapse collection.Move(0, 1); // no collapse collection.Clear(); // no collapse Assert.AreEqual(0, argsList.Count); collection.EndBatch(); Assert.AreEqual(9, argsList.Count); Assert.AreEqual(NotifyCollectionChangedAction.Add, argsList[0].Action); CollectionAssert.AreEqual(new[] { 1, 2, 3 }, argsList[0].NewItems); Assert.AreEqual(NotifyCollectionChangedAction.Remove, argsList[1].Action); CollectionAssert.AreEqual(new[] { 1, 2, 3 }, argsList[1].OldItems); Assert.AreEqual(NotifyCollectionChangedAction.Add, argsList[2].Action); CollectionAssert.AreEqual(new[] { 1, 2, 3, 4, 5, 6, 7 }, argsList[2].NewItems); Assert.AreEqual(NotifyCollectionChangedAction.Reset, argsList[3].Action); Assert.AreEqual(NotifyCollectionChangedAction.Add, argsList[4].Action); CollectionAssert.AreEqual(new[] { 1, 2, 3 }, argsList[4].NewItems); Assert.AreEqual(NotifyCollectionChangedAction.Replace, argsList[5].Action); Assert.AreEqual(NotifyCollectionChangedAction.Remove, argsList[6].Action); Assert.AreEqual(NotifyCollectionChangedAction.Move, argsList[7].Action); Assert.AreEqual(NotifyCollectionChangedAction.Reset, argsList[8].Action); }