public void Replace() { var source = new ObservableCollection <int> { 1, 1, 1, 2, 2, 2, 3, 3, 3, }; using (var view = source.AsMappingView(x => x * x)) { using (var actual = view.SubscribeAll()) { CollectionAssert.AreEqual(source.Select(x => x * x), view); source[0] = 5; CollectionAssert.AreEqual(source.Select(x => x * x), view); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(view[0], 1, 0) }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); } } }
public static void Replace() { var model1 = Collections.ReadOnlyViews.MappingViewTests.Model.Create(1); var model2 = Collections.ReadOnlyViews.MappingViewTests.Model.Create(2); var model3 = Collections.ReadOnlyViews.MappingViewTests.Model.Create(3); var source = new ObservableCollection <Collections.ReadOnlyViews.MappingViewTests.Model <int> >( new[] { model1, model1, model1, model2, model2, model2, model3, model3, model3, }); using var view = source.AsMappingView(Collections.ReadOnlyViews.MappingViewTests.Vm.Create); using var actual = view.SubscribeAll(); var old = view[0]; var @new = view[5]; source[0] = source[5]; CollectionAssert.AreEqual(source, view.Select(x => x.Model)); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(@new, old, 0), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); }
public static void ReplaceVisibleBuffered() { var source = new ObservableCollection <int> { 1, 2, 3 }; var scheduler = new TestScheduler(); using var view = source.AsReadOnlyFilteredView(x => x % 2 == 0, TimeSpan.FromMilliseconds(100), scheduler); scheduler.Start(); scheduler.Start(); using var actual = view.SubscribeAll(); CollectionAssert.AreEqual(new[] { 2 }, view); CollectionAssert.IsEmpty(actual); source[1] = 4; scheduler.Start(); CollectionAssert.AreEqual(new[] { 4 }, view); var expected = new EventArgs[] { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(4, 2, 0), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); }
public static void SetSourceReplace() { using var view = new ReadOnlySerialView <int>(new[] { 1, 2, 3 }); using var actual = view.SubscribeAll(); var newSource = new[] { 1, 2, 4 }; view.SetSource(newSource); CollectionAssert.AreEqual(newSource, view); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(4, 3, 2), CachedEventArgs.GetOrCreatePropertyChangedEventArgs("Source"), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); newSource = new[] { 5, 2, 4 }; view.SetSource(newSource); CollectionAssert.AreEqual(newSource, view); expected.AddRange( new EventArgs[] { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(5, 1, 0), CachedEventArgs.GetOrCreatePropertyChangedEventArgs("Source"), }); CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); }
/// <inheritdoc/> protected override void SetItem(int index, T item) { var oldItem = this[index]; var sourceIndex = this.SourceIndex(index); base.SetItem(index, item); var change = Diff.CreateReplaceEventArgs(item, oldItem, index); this.UpdatedSourceWith = change; this.Notify(change); if (sourceIndex >= 0) { this.Source[sourceIndex] = item; } this.UpdatedSourceWith = null; }
public void Replace() { var model1 = Model.Create(1); var model2 = Model.Create(2); var model3 = Model.Create(3); var source = new ObservableCollection <Model <int> >( new[] { model1, model1, model1, model2, model2, model2, model3, model3, model3, }); using (var view = source.AsMappingView(CreateStrictMock, x => x.Object.Dispose())) { using (var actual = view.SubscribeAll()) { var old = view[0]; var @new = view[5]; source[0] = source[5]; CollectionAssert.AreEqual(source, view.Select(x => x.Object.Model)); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(@new, old, 0) }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); foreach (var mock in view) { mock.Setup(x => x.Dispose()); } } } }
public async Task Replace1() { var source = new ObservableCollection <int> { 1, 2, 3, 2 }; using var view = source.AsFilteredView(x => x % 2 == 0); using var actual = view.SubscribeAll(); view[1] = 4; await Application.Current.Dispatcher.SimulateYield(); CollectionAssert.AreEqual(new[] { 2, 4 }, view); CollectionAssert.AreEqual(new[] { 1, 2, 3, 4 }, source); var expected = new EventArgs[] { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(4, 2, 1), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); }
public void Replace() { var source = new ObservableCollection <int> { 1, 1, 1, 2, 2, 2, 3, 3, 3, }; using (var view = source.AsMappingView(CreateStrictMock, WithIndex, x => x.Object.Dispose())) { using (var actual = view.SubscribeAll()) { var old = view[0]; old.Setup(x => x.Dispose()); source[0] = source[5]; old.Verify(x => x.Dispose(), Times.Once); CollectionAssert.AreEqual(source, view.Select(x => x.Object.Value)); CollectionAssert.AreEqual(source.Select((_, i) => i), view.Select(x => x.Object.Index)); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateReplaceEventArgs(view[0], old, 0), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); } foreach (var mock in view) { mock.Setup(x => x.Dispose()); } } }