public async Task Add_to_projected_list() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list.ReactiveCollection .Select(x => x.ToString(CultureInfo.InvariantCulture)); var notificationsTask = projectedList.Changes .Take(4) .ToArray() .ToTask(); list.Add(1); list.Add(2); list.Add(3); var notifications = await notificationsTask; notifications[0].Index.Should().NotHaveValue(); notifications[1].Index.Should().Be(0); notifications[2].Index.Should().Be(1); notifications[3].Index.Should().Be(2); notifications[0].Action.Should().Be(NotifyCollectionChangedAction.Reset); notifications[1].Action.Should().Be(NotifyCollectionChangedAction.Add); notifications[2].Action.Should().Be(NotifyCollectionChangedAction.Add); notifications[3].Action.Should().Be(NotifyCollectionChangedAction.Add); notifications[0].NewItems.Should().BeEmpty(); notifications[1].NewItems.Should().Equal("1"); notifications[2].NewItems.Should().Equal("2"); notifications[3].NewItems.Should().Equal("3"); }
public void Contains() { var list = new ListReactiveCollectionSource <int> { 1 }; list.Contains(1).Should().BeTrue(); list.Contains(2).Should().BeFalse(); }
public async Task First_notification_is_reset() { var list = new ListReactiveCollectionSource<int>(); var notification = await list.ReactiveCollection.Changes.FirstAsync().ToTask(); notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.OldItems.Should().BeEmpty(); notification.NewItems.Should().BeEmpty(); notification.Current.Should().BeEmpty(); }
public async Task Contains() { var list = new ListReactiveCollectionSource <int> { 1 }; await Verify(( list.Contains(1), list.Contains(2))); }
public async Task First_notification_is_reset() { var list = new ListReactiveCollectionSource <int>(); var notification = await list.ReactiveCollection.Changes.FirstAsync().ToTask(); notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.OldItems.Should().BeEmpty(); notification.NewItems.Should().BeEmpty(); notification.Current.Should().BeEmpty(); }
public void IndexOf() { var list = new ListReactiveCollectionSource <int> { 1, 2, 3 }; list.IndexOf(3).Should().Be(2); list.IndexOf(2).Should().Be(1); list.IndexOf(1).Should().Be(0); }
public async Task IndexOf() { var list = new ListReactiveCollectionSource <int> { 1, 2, 3 }; await Verify(( list.IndexOf(3), list.IndexOf(2), list.IndexOf(1))); }
public async Task Add() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(1) .FirstAsync() .ToTask(); list.Add(1); await Verify(notificationTask); }
public async Task RemoveAll() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3 }); list.RemoveAll(x => x % 2 == 0); await Verify(notificationTask); }
public async Task SetItem() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3, 4, 5 }); list.SetItem(2, 6); await Verify(notificationTask); }
public async Task Sort_with_comparison() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 2, 1, 3, 5, 0 }); list.Sort((x, y) => y.CompareTo(x)); await Verify(notificationTask); }
public async Task CopyTo() { var list = new ListReactiveCollectionSource <int>(); var range = new[] { 1, 2, 3 }; list.AddRange(range); var target = new int[5]; list.CopyTo(target, 2); await Verify(target); }
public void CopyTo() { var list = new ListReactiveCollectionSource <int>(); var range = new[] { 1, 2, 3 }; list.AddRange(range); var target = new int[5]; list.CopyTo(target, 2); target.Should().Equal(0, 0, 1, 2, 3); }
public async Task InsertRange() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.Add(1); var range = new[] { 1, 2, 3 }; list.InsertRange(1, range); await Verify(notificationTask); }
public async Task RemoveAll() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3 }); list.RemoveAll(x => x % 2 == 0); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.Current.Should().Equal(1, 3); }
public async Task Sort_with_comparison() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 2, 1, 3, 5, 0 }); list.Sort((x, y) => y.CompareTo(x)); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.Current.Should().Equal(5, 3, 2, 1, 0); }
public async Task Sort() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 2, 1, 3, 5, 0 }); list.Sort(); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.Current.Should().Equal(0, 1, 2, 3, 5); }
public async Task Add() { var list = new ListReactiveCollectionSource<int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(1) .FirstAsync() .ToTask(); list.Add(1); var notification = await notificationTask; notification.Index.Should().Be(0); notification.Action.Should().Be(NotifyCollectionChangedAction.Add); notification.NewItems.Should().Equal(1); notification.OldItems.Should().BeEmpty(); notification.Current.Should().Equal(1); }
public async Task Add() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(1) .FirstAsync() .ToTask(); list.Add(1); var notification = await notificationTask; notification.Index.Should().Be(0); notification.Action.Should().Be(NotifyCollectionChangedAction.Add); notification.NewItems.Should().Equal(1); notification.OldItems.Should().BeEmpty(); notification.Current.Should().Equal(1); }
public async Task Replace() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3, 4, 1 }); list.Replace(1, 5); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Replace); notification.OldItems.Should().Equal(1); notification.NewItems.Should().Equal(5); notification.Current.Should().Equal(5, 2, 3, 4, 1); }
public async Task RemoveRange2() { var list = new ListReactiveCollectionSource <int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3, 4 }); list.RemoveRange(2, 2); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Remove); notification.OldItems.Should().ContainInOrder(3, 4); notification.NewItems.Should().BeEmpty(); notification.Current.Should().Equal(1, 2); }
public void GetEnumerator() { var list = new ListReactiveCollectionSource <int> { 1, 2, 3 }; using (var enumerator = list.GetEnumerator()) { enumerator.MoveNext().Should().BeTrue(); enumerator.Current.Should().Be(1); enumerator.MoveNext().Should().BeTrue(); enumerator.Current.Should().Be(2); enumerator.MoveNext().Should().BeTrue(); enumerator.Current.Should().Be(3); enumerator.MoveNext().Should().BeFalse(); } }
public async Task Select_after_Where_behaves_correctly() { var list = new ListReactiveCollectionSource<int>(); var changesTask = list.ReactiveCollection .Where(x => x % 2 == 0) .Select(x => x.ToString(CultureInfo.InvariantCulture)) .Changes .Take(6) .ToArray() .ToTask(); list.Add(1); list.Add(2); list.Remove(2); list.Remove(1); list.Add(4); list.Insert(0, 2); list[0] = 3; var changes = await changesTask; changes[0].Action.Should().Be(NotifyCollectionChangedAction.Reset); changes[1].Action.Should().Be(NotifyCollectionChangedAction.Add); changes[1].Current.Should().Equal("2"); changes[2].Action.Should().Be(NotifyCollectionChangedAction.Remove); changes[3].Action.Should().Be(NotifyCollectionChangedAction.Add); changes[3].Current.Should().Equal("4"); changes[4].Action.Should().Be(NotifyCollectionChangedAction.Add); changes[4].Current.Should().Equal("4", "2"); changes[4].Index.Should().Be(1); changes[5].Action.Should().Be(NotifyCollectionChangedAction.Remove); changes[5].Index.Should().Be(1); changes[5].Index.Should().Be(1); changes[5].Current.Should().Equal("4"); }
public async Task Sort() { var list = new ListReactiveCollectionSource<int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 2, 1, 3, 5, 0 }); list.Sort(); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.Current.Should().Equal(0, 1, 2, 3, 5); }
public void List_ToObservableCollection_Remove_multiple() { var list = new ListReactiveCollectionSource<int>(); var observableCollection = list.ReactiveCollection.ToObservableCollection(); using (Observable .FromEventPattern<NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(eh => ((INotifyCollectionChanged)observableCollection).CollectionChanged += eh, eh => ((INotifyCollectionChanged)observableCollection).CollectionChanged -= eh) .Subscribe()) { list.AddRange(new[] { 1, 2, 3, 4, 5, 6, 7 }); list.RemoveRange(2, 3); ((ICollection)observableCollection).Should().Equal(new[] { 1, 2, 6, 7 }); } }
public async Task SortedSet_ToObservableCollection_Clear() { var list = new ListReactiveCollectionSource<int>(); var observableCollection = (INotifyCollectionChanged)list.ReactiveCollection.ToObservableCollection(); var eventTask = Observable .FromEventPattern<NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(eh => observableCollection.CollectionChanged += eh, eh => observableCollection.CollectionChanged -= eh) .Skip(1) .Select(x => x.EventArgs) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3, 4, 5 }); list.RemoveAll(x => x > 2); var ev = await eventTask; ev.Action.Should().Be(NotifyCollectionChangedAction.Reset); ((ICollection)observableCollection).Should().Equal(new[] { 1, 2 }); }
public async Task RemoveRange2() { var list = new ListReactiveCollectionSource<int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3, 4 }); list.RemoveRange(2, 2); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Remove); notification.OldItems.Should().ContainInOrder(3, 4); notification.NewItems.Should().BeEmpty(); notification.Current.Should().Equal(1, 2); }
public void Where_after_Where_squashes_both_operators() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list.ReactiveCollection .Where(x => x % 2 == 0) .Where(x => x % 3 == 0); var transformed = projectedList as ListTransformationReactiveCollection<int, int>; transformed.Should().NotBeNull(); transformed.Source.Should().BeSameAs(list.ReactiveCollection); transformed.Selector.Should().BeNull(); transformed.Filter.Should().NotBeNull(); transformed.Filter(2).Should().BeFalse(); transformed.Filter(3).Should().BeFalse(); transformed.Filter(4).Should().BeFalse(); transformed.Filter(6).Should().BeTrue(); }
public async Task Add_to_filtered_list() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list .ReactiveCollection .Where(x => x % 2 == 0); var notificationTask = projectedList.Changes .Skip(1) .FirstAsync() .ToTask(); list.Add(1); list.Add(3); list.Add(2); var notification = await notificationTask; notification.Index.Should().Be(0); notification.Action.Should().Be(NotifyCollectionChangedAction.Add); notification.NewItems.Should().Equal(2); }
public async Task Replace_in_projected_list() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list.ReactiveCollection .Select(x => x.ToString(CultureInfo.InvariantCulture)); var notificationTask = projectedList.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3 }); list.Replace(2, 4); var notification = await notificationTask; notification.Index.Should().Be(1); notification.Action.Should().Be(NotifyCollectionChangedAction.Replace); notification.OldItems.Should().Equal("2"); notification.NewItems.Should().Equal("4"); notification.Current.Should().Equal("1", "4", "3"); }
public async Task RemoveAll() { var list = new ListReactiveCollectionSource<int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3 }); list.RemoveAll(x => x % 2 == 0); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.Current.Should().Equal(1, 3); }
public void SortSet_after_Where_squashes_both_operators() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list.ReactiveCollection .Where(x => x % 2 == 0) .SortSet(); var transformed = projectedList as SortedSetTransformationReactiveCollection<int, int>; transformed.Should().NotBeNull(); transformed.Source.Should().BeSameAs(list.ReactiveCollection); transformed.Selector.Should().BeNull(); transformed.Filter.Should().NotBeNull(); }
public async Task Where_after_Where_behaves_correctly() { var list = new ListReactiveCollectionSource<int>(); var changesTask = list.ReactiveCollection .Where(x => x % 2 == 0) .Where(x => x % 3 == 0) .Changes .Take(3) .ToArray() .ToTask(); list.Add(1); list.Add(2); list.Add(3); list.Add(6); list.Remove(1); list.Remove(2); list.Remove(3); list.Remove(6); var changes = await changesTask; changes[0].Action.Should().Be(NotifyCollectionChangedAction.Reset); changes[1].Action.Should().Be(NotifyCollectionChangedAction.Add); changes[1].Current.Should().Equal(6); changes[2].Action.Should().Be(NotifyCollectionChangedAction.Remove); changes[2].Current.Should().BeEmpty(); }
public async Task Concat_Clear() { var source1 = new ListReactiveCollectionSource<int>(); var source2 = new ListReactiveCollectionSource<int>(); var concat = source1.ReactiveCollection.Concat(source2.ReactiveCollection); var notificationsTask = concat.Changes .Skip(2) .Take(3) .ToArray() .ToTask(); source1.Add(1); source2.Add(2); source1.Clear(); source2.Clear(); var notifications = await notificationsTask; notifications.Should().HaveCount(3); notifications[0].Current.Should().Equal(1, 2); notifications[1].Action.Should().Be(NotifyCollectionChangedAction.Remove); notifications[1].Index.Should().Be(0); notifications[1].OldItems.Should().Equal(1); notifications[1].Current.Should().Equal(2); notifications[2].Action.Should().Be(NotifyCollectionChangedAction.Remove); notifications[2].Index.Should().Be(0); notifications[2].OldItems.Should().Equal(2); notifications[2].Current.Should().BeEmpty(); }
public async Task SortedSet_ToObservableCollection_does_not_raise_events_on_event_subscription() { var list = new ListReactiveCollectionSource<int> { 1, 2, 3 }; var observableCollection = (INotifyCollectionChanged)list.ReactiveCollection.ToObservableCollection(); var eventsTask = Observable .FromEventPattern<NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(eh => observableCollection.CollectionChanged += eh, eh => observableCollection.CollectionChanged -= eh) .Select(x => x.EventArgs) .FirstAsync() .ToTask(); ((ICollection)observableCollection).Should().Equal(1, 2, 3); list.Add(4); var ev = await eventsTask; ev.Action.Should().Be(NotifyCollectionChangedAction.Add); ev.NewItems.Should().Equal(4); ((ICollection)observableCollection).Should().Equal(1, 2, 3, 4); }
public async Task Add_to_sorted_list_with_Changes() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list .ReactiveCollection .Sort(); var notificationTask = projectedList.Changes .Skip(3) .FirstAsync() .ToTask(); list.Add(3); list.Add(1); list.Add(2); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Add); notification.NewItems.Should().Equal(2); notification.Current.Should().Equal(1, 2, 3); }
public async Task List_ToObservableCollection_Replace() { var list = new ListReactiveCollectionSource<int>(); var observableCollection = (INotifyCollectionChanged)list.ReactiveCollection.ToObservableCollection(); var eventsTask = Observable .FromEventPattern<NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(eh => observableCollection.CollectionChanged += eh, eh => observableCollection.CollectionChanged -= eh) .Take(3) .Select(x => x.EventArgs) .ToArray() .ToTask(); list.Add(1); list.Add(2); list.Replace(1, 3); var events = await eventsTask; events[0].Action.Should().Be(NotifyCollectionChangedAction.Add); events[1].Action.Should().Be(NotifyCollectionChangedAction.Add); events[2].Action.Should().Be(NotifyCollectionChangedAction.Replace); events[2].OldItems.Should().Equal(1); events[2].NewItems.Should().Equal(3); ((ICollection)observableCollection).Should().Equal(3, 2); }
public async Task Remove_from_sorted_list_with_Changes() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list .ReactiveCollection .Sort(); var notificationTask = projectedList.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 3, 2, 1 }); list.Remove(2); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Remove); notification.NewItems.Should().BeEmpty(); notification.OldItems.Should().Equal(2); notification.Current.Should().Equal(1, 3); }
public void Contains() { var list = new ListReactiveCollectionSource<int> { 1 }; list.Contains(1).Should().BeTrue(); list.Contains(2).Should().BeFalse(); }
public async Task Replace_in_sorted_list_with_Changes() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list .ReactiveCollection .Sort(); var notificationsTask = projectedList.Changes .Skip(2) .Take(2) .ToArray() .ToTask(); list.AddRange(new[] { 3, 2, 1 }); list.Replace(2, 4); var notifications = await notificationsTask; notifications[0].Action.Should().Be(NotifyCollectionChangedAction.Remove); notifications[0].OldItems.Should().Equal(2); notifications[1].Action.Should().Be(NotifyCollectionChangedAction.Add); notifications[1].NewItems.Should().Equal(4); notifications[0].Current.Should().Equal(1, 3); notifications[1].Current.Should().Equal(1, 3, 4); }
public async Task Sort_with_comparison() { var list = new ListReactiveCollectionSource<int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 2, 1, 3, 5, 0 }); list.Sort((x, y) => y.CompareTo(x)); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.Current.Should().Equal(5, 3, 2, 1, 0); }
public void Select_after_Where_squashes_both_operators() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list.ReactiveCollection .Where(x => x % 2 == 0) .Select(x => x.ToString(CultureInfo.InvariantCulture)); var transformed = projectedList as ListTransformationReactiveCollection<int, string>; transformed.Should().NotBeNull(); transformed.Source.Should().BeSameAs(list.ReactiveCollection); transformed.Selector.Should().NotBeNull(); transformed.Filter.Should().NotBeNull(); }
public async Task SetItem() { var list = new ListReactiveCollectionSource<int>(); var notificationTask = list.ReactiveCollection.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3, 4, 5 }); list.SetItem(2, 6); var notification = await notificationTask; notification.Action.Should().Be(NotifyCollectionChangedAction.Replace); notification.Index.Should().Be(2); notification.OldItems.Should().Equal(3); notification.NewItems.Should().Equal(6); notification.Current.Should().Equal(1, 2, 6, 4, 5); }
public async Task Concat_Add_Delayed() { var source1 = new ListReactiveCollectionSource<int>(); var source2 = new ListReactiveCollectionSource<int>(); source1.Add(1); source2.Add(2); var concat = source1.ReactiveCollection.Concat(source2.ReactiveCollection); var notification = await concat.Changes .FirstAsync() .ToTask(); notification.Action.Should().Be(NotifyCollectionChangedAction.Reset); notification.Current.Should().Equal(1, 2); }
public async Task First_notification_is_reset() { var list = new ListReactiveCollectionSource <int>(); await Verify(list.ReactiveCollection.Changes.FirstAsync().ToTask()); }
public async Task Concat_Replace_single() { var source1 = new ListReactiveCollectionSource<int>(); var source2 = new ListReactiveCollectionSource<int>(); var concat = source1.ReactiveCollection.Concat(source2.ReactiveCollection); var notificationsTask = concat.Changes .Skip(2) .Take(3) .ToArray() .ToTask(); source1.AddRange(new[] { 1, 2, 3 }); source2.AddRange(new[] { 4, 5, 6 }); source1.Replace(2, -2); source2.Replace(5, -5); var notifications = await notificationsTask; notifications.Should().HaveCount(3); notifications[0].Current.Should().Equal(1, 2, 3, 4, 5, 6); notifications[1].Action.Should().Be(NotifyCollectionChangedAction.Replace); notifications[1].Index.Should().Be(1); notifications[1].OldItems.Should().Equal(2); notifications[1].NewItems.Should().Equal(-2); notifications[1].Current.Should().Equal(1, -2, 3, 4, 5, 6); notifications[2].Action.Should().Be(NotifyCollectionChangedAction.Replace); notifications[2].Index.Should().Be(4); notifications[2].OldItems.Should().Equal(5); notifications[2].NewItems.Should().Equal(-5); notifications[2].Current.Should().Equal(1, -2, 3, 4, -5, 6); }
public void IndexOf() { var list = new ListReactiveCollectionSource<int> { 1, 2, 3 }; list.IndexOf(3).Should().Be(2); list.IndexOf(2).Should().Be(1); list.IndexOf(1).Should().Be(0); }
public void Select_after_Select_squashes_both_operators() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list.ReactiveCollection .Select(x => x.ToString()) .Select(int.Parse); var transformed = projectedList as ListTransformationReactiveCollection<int, int>; transformed.Should().NotBeNull(); transformed.Source.Should().BeSameAs(list.ReactiveCollection); transformed.Selector.Should().NotBeNull(); transformed.Filter.Should().BeNull(); }
public async Task Remove_from_filtered_list() { var list = new ListReactiveCollectionSource<int>(); var projectedList = list .ReactiveCollection .Where(x => x % 2 == 0); var notificationTask = projectedList.Changes .Skip(2) .FirstAsync() .ToTask(); list.AddRange(new[] { 1, 2, 3 }); list.Remove(2); var notification = await notificationTask; notification.Index.Should().Be(0); notification.Action.Should().Be(NotifyCollectionChangedAction.Remove); notification.NewItems.Should().BeEmpty(); notification.OldItems.Should().Equal(2); notification.Current.Should().BeEmpty(); }
public async Task Replace_in_filtered_list_replacement2() { var list = new ListReactiveCollectionSource<int>(new[] { 1 }); var projectedList = list.ReactiveCollection .Where(x => x % 2 == 0); var notificationTask = projectedList.Changes .Skip(1) .FirstAsync() .ToTask(); list.Replace(1, 3); list.Replace(3, 4); var notification = await notificationTask; notification.Index.Should().Be(0); notification.Action.Should().Be(NotifyCollectionChangedAction.Add); notification.OldItems.Should().BeEmpty(); notification.NewItems.Should().Equal(4); notification.Current.Should().Equal(4); }