public void Test_MgcReplaceRange() { devDhMagic.MgcObservableCollection <int> collection = new devDhMagic.MgcObservableCollection <int>(); var toAdd = new[] { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3 }; var toRemove = new[] { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 0, 0 }; collection.MgcAddRange(toRemove); collection.CollectionChanged += (s, e) => { Assert.AreEqual(e.Action, NotifyCollectionChangedAction.Reset, "ReplaceRange didn't use Remove like requested."); Assert.IsNull(e.OldItems, "OldItems should be null."); Assert.IsNull(e.NewItems, "NewItems should be null."); Assert.AreEqual(collection.Count, toAdd.Length, "Lengths are not the same"); for (var i = 0; i < toAdd.Length; i++) { if (collection[i] != (int)toAdd[i]) { Assert.Fail("Expected and actual items don't match."); } } }; collection.MgcReplaceRange(toAdd); }
public void Test_ReplaceRange_should_NOT_mutate_source() { var sourceData = new List <int>(new[] { 1, 2, 3 }); devDhMagic.MgcObservableCollection <int> collection = new devDhMagic.MgcObservableCollection <int>(new[] { 1, 2, 3, 4, 5, 6 }); collection.MgcReplaceRange(sourceData); Assert.IsTrue(sourceData.Count == 3, "source data was mutated"); }
public void Test_ReplaceRange_on_empty_collection_should_NOT_raise_collection_changes_when_empty() { devDhMagic.MgcObservableCollection <int> collection = new devDhMagic.MgcObservableCollection <int>(); var toAdd = new int[0]; collection.CollectionChanged += (s, e) => { Assert.Fail("Collection changes should NOT be raised."); }; collection.MgcReplaceRange(toAdd); }
public void Test_ReplaceRange_on_non_empty_collection_should_always_raise_collection_changes() { devDhMagic.MgcObservableCollection <int> collection = new devDhMagic.MgcObservableCollection <int>(new[] { 1 }); var toAdd = new int[0]; var eventRaised = false; collection.CollectionChanged += (s, e) => { eventRaised = true; }; collection.MgcReplaceRange(toAdd); Assert.IsTrue(eventRaised, "Collection Reset should be raised."); }