public void AddRange() { var scheduledCollection = new ScheduledCollection <int>(); using (var actualChanges = scheduledCollection.SubscribeAll()) { var expectedChanges = new List <EventArgs> { CachedEventArgs.CountPropertyChanged, CachedEventArgs.IndexerPropertyChanged, CachedEventArgs.NotifyCollectionReset }; scheduledCollection.AddRange(new[] { 1, 2 }); CollectionAssert.AreEqual(new[] { 1, 2 }, scheduledCollection); CollectionAssert.AreEqual(expectedChanges, actualChanges, EventArgsComparer.Default); scheduledCollection.AddRange(new[] { 3, 4 }); CollectionAssert.AreEqual(new[] { 1, 2, 3, 4 }, scheduledCollection); expectedChanges.AddRange( new EventArgs[] { CachedEventArgs.CountPropertyChanged, CachedEventArgs.IndexerPropertyChanged, CachedEventArgs.NotifyCollectionReset }); CollectionAssert.AreEqual(expectedChanges, actualChanges, EventArgsComparer.Default); } }
public async Task ThreadTest() { // ReSharper disable once HeapView.ClosureAllocation // ReSharper disable once CollectionNeverQueried.Local var ints = new ScheduledCollection <int>(); await Task.WhenAll(Enumerable.Range(0, 8) .Select(x => Task.Run(() => { if (x % 2 == 0) { for (var i = 0; i < 1000; i++) { ints.Remove(i); } } else { for (var i = 0; i < 1000; i++) { ints.Add(i); } } }))); }
public void AddRangeSingle() { var reference = new ObservableCollection <int>(); using (var expectedChanges = reference.SubscribeAll()) { var scheduledCollection = new ScheduledCollection <int>(); using (var actualChanges = scheduledCollection.SubscribeAll()) { reference.Add(1); scheduledCollection.AddRange(new[] { 1 }); CollectionAssert.AreEqual(reference, scheduledCollection); CollectionAssert.AreEqual(expectedChanges, actualChanges, EventArgsComparer.Default); reference.Add(2); scheduledCollection.AddRange(new[] { 2 }); CollectionAssert.AreEqual(reference, scheduledCollection); CollectionAssert.AreEqual(expectedChanges, actualChanges, EventArgsComparer.Default); } } }
public void Remove() { var reference = new ObservableCollection <int> { 1, 2, 3 }; using (var expectedChanges = reference.SubscribeAll()) { var scheduledCollection = new ScheduledCollection <int>(reference); using (var actualChanges = scheduledCollection.SubscribeAll()) { reference.Remove(1); scheduledCollection.Remove(1); CollectionAssert.AreEqual(reference, scheduledCollection); CollectionAssert.AreEqual(expectedChanges, actualChanges, EventArgsComparer.Default); reference.Remove(2); scheduledCollection.Remove(2); CollectionAssert.AreEqual(reference, scheduledCollection); CollectionAssert.AreEqual(expectedChanges, actualChanges, EventArgsComparer.Default); } } }