public void Move() { var source = new ObservableCollection <int> { 1, 1, 1, 2, 2, 2, 3, 3, 3, }; using (var view = source.AsMappingView(CreateStrictMock, x => x.Object.Dispose())) { using (var actual = view.SubscribeAll()) { source.Move(0, 4); CollectionAssert.AreEqual(source, view.Select(x => x.Object.Value)); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateMoveEventArgs(view[4], 4, 0), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); foreach (var mock in view) { mock.Setup(x => x.Dispose()); } } } }
public void Move(int from, int to) { var source = new ObservableCollection <int> { 1, 2, 3, }; using (var view = source.AsMappingView(x => x * x)) { using (var actual = view.SubscribeAll()) { CollectionAssert.AreEqual(source.Select(x => x * x), view); source.Move(from, to); CollectionAssert.AreEqual(source.Select(x => x * x), view); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateMoveEventArgs(view[to], to, from) }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); } } }
public void Move() { 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(Vm.Create)) { using (var actual = view.SubscribeAll()) { source.Move(0, 4); CollectionAssert.AreEqual(source, view.Select(x => x.Model)); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateMoveEventArgs(view[4], 4, 0) }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); } } }
/// <summary> /// Move item at oldIndex to newIndex. /// </summary> protected virtual void MoveItem(int oldIndex, int newIndex) { var sourceOldIndex = this.SourceIndex(oldIndex); var sourceNewIndex = this.SourceIndex(newIndex); var item = this[oldIndex]; base.RemoveItem(oldIndex); base.InsertItem(newIndex, item); var change = Diff.CreateMoveEventArgs(item, newIndex, oldIndex); this.UpdatedSourceWith = change; this.Notify(change); if (sourceOldIndex >= 0 && sourceNewIndex >= 0) { if (this.Source is ObservableCollection <T> s1) { s1.Move(sourceOldIndex, sourceNewIndex); } else if (this.Source is IObservableCollection <T> s2) { s2.Move(sourceOldIndex, sourceNewIndex); } else { throw new NotSupportedException($"Expected source to be ObservableCollection<T> or IObservableCollection<T>, was {this.Source.GetType().PrettyName()}"); } } this.UpdatedSourceWith = null; }
public static void SetSourceMove() { using var view = new ReadOnlySerialView <int>(new[] { 1, 2, 3 }); using var actual = view.SubscribeAll(); var newSource = new[] { 1, 3, 2 }; view.SetSource(newSource); CollectionAssert.AreEqual(newSource, view); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateMoveEventArgs(2, 2, 1), CachedEventArgs.GetOrCreatePropertyChangedEventArgs("Source"), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); newSource = new[] { 3, 1, 2 }; view.SetSource(newSource); CollectionAssert.AreEqual(newSource, view); expected.AddRange( new EventArgs[] { CachedEventArgs.IndexerPropertyChanged, Diff.CreateMoveEventArgs(1, 1, 0), CachedEventArgs.GetOrCreatePropertyChangedEventArgs("Source"), }); CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); }
/// <inheritdoc/> public void Move(int oldIndex, int newIndex) { var item = this[oldIndex]; this.RemoveItem(oldIndex); this.InsertItem(newIndex, item); this.OnPropertyChanged(CachedEventArgs.IndexerPropertyChanged); this.OnCollectionChanged(Diff.CreateMoveEventArgs(item, newIndex, oldIndex)); }
public static void Move() { 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(CreateStrictMock, x => x.Object.Dispose()); using (var actual = view.SubscribeAll()) { source.Move(0, 4); CollectionAssert.AreEqual(source, view.Select(x => x.Object.Model)); var expected = new List <EventArgs> { CachedEventArgs.IndexerPropertyChanged, Diff.CreateMoveEventArgs(view[4], 4, 0), }; CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default); } foreach (var mock in view) { mock.Setup(x => x.Dispose()); } }