public void SendsEventWhenReplaced() { List <int> list = new List <int> { 40, 70, 8, 3, 1, 2 }; var collection = new ObservableGroupedOrderedCollection <int>(i => i, i => i, i => i.ToString().Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <CollectionChange>(); collection.CollectionChanges.SelectMany(l => l.ToObservable()).Subscribe(observer); int[] newItems = { 0, 10, 100, 1000 }; collection.ReplaceWith(newItems); var change = new CollectionChange { Type = CollectionChangeType.Reload }; observer.Messages.AssertEqual( OnNext(0, change) ); }
public void UpdatesAccordingly() { List <int> list = new List <int>(); var collection = new ObservableGroupedOrderedCollection <int>(i => i, i => i, i => i.ToString().Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <int>(); collection.TotalCount.Subscribe(observer); collection.InsertItem(20); collection.InsertItem(2); collection.RemoveItemAt(0, 0); collection.RemoveItemAt(0, 0); observer.Messages.AssertEqual( OnNext(0, 0), OnNext(0, 1), OnNext(0, 2), OnNext(0, 1), OnNext(0, 0) ); }
public void ReturnsTheNewIndex() { List <MockItem> list = new List <MockItem> { new MockItem { Id = 0, Description = "A" }, new MockItem { Id = 1, Description = "B" }, new MockItem { Id = 2, Description = "C" }, new MockItem { Id = 3, Description = "D" } }; var collection = new ObservableGroupedOrderedCollection <MockItem>(i => i.Id, i => i.Description, i => i.Description.Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <ICollectionChange>(); collection.CollectionChange.Subscribe(observer); var updated = new MockItem { Id = 4, Description = "B2" }; var index = collection.UpdateItem(1, updated); index.HasValue.Should().BeTrue(); index.Value.Section.Should().Be(1); index.Value.Row.Should().Be(0); }
public void SendsEventWhenUpdated() { List <MockItem> list = new List <MockItem> { new MockItem { Id = 0, Description = "A" }, new MockItem { Id = 1, Description = "B" }, new MockItem { Id = 3, Description = "D" } }; var collection = new ObservableGroupedOrderedCollection <MockItem>(i => i.Id, i => i.Description, i => i.Description.Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <ICollectionChange>(); collection.CollectionChange.Subscribe(observer); var updated = new MockItem { Id = 1, Description = "C" }; collection.UpdateItem(updated.Id, updated); ICollectionChange change = new UpdateRowCollectionChange <MockItem>(new SectionedIndex(0, 1), updated); observer.Messages.AssertEqual( OnNext(0, change) ); }
public void SendsEventWhenFirstItemOfSectionAdded() { List <int> list = new List <int> { 8, 3, 1, 2 }; var collection = new ObservableGroupedOrderedCollection <int>(i => i, i => i, i => i.ToString().Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <CollectionChange>(); collection.CollectionChanges.SelectMany(l => l.ToObservable()).Subscribe(observer); collection.InsertItem(20); var change = new CollectionChange { Index = new SectionedIndex(1, 0), Type = CollectionChangeType.AddSection }; observer.Messages.AssertEqual( OnNext(0, change) ); }
public void CanCreateNewSectionWhenMovingItem() { List <MockItem> list = new List <MockItem> { new MockItem { Id = 0, Description = "A" }, new MockItem { Id = 1, Description = "B" }, new MockItem { Id = 3, Description = "D" }, new MockItem { Id = 8, Description = "DFE" } }; var collection = new ObservableGroupedOrderedCollection <MockItem>(i => i.Id, i => i.Description, i => i.Description.Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <ICollectionChange>(); collection.CollectionChange.Subscribe(observer); var updated = new MockItem { Id = 1, Description = "ED" }; collection.UpdateItem(updated.Id, updated); List <List <MockItem> > expected = new List <List <MockItem> > { new List <MockItem> { new MockItem { Id = 0, Description = "A" }, new MockItem { Id = 3, Description = "D" }, }, new List <MockItem> { new MockItem { Id = 1, Description = "ED" } }, new List <MockItem> { new MockItem { Id = 8, Description = "DFE" } } }; CollectionAssert.AreEqual(collection, expected); }
public void SendsSectionCreationEventWhenMovedToNewSection() { List <MockItem> list = new List <MockItem> { new MockItem { Id = 0, Description = "A" }, new MockItem { Id = 1, Description = "B" }, new MockItem { Id = 3, Description = "D" }, new MockItem { Id = 8, Description = "DFE" } }; var collection = new ObservableGroupedOrderedCollection <MockItem>(i => i.Id, i => i.Description, i => i.Description.Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <CollectionChange>(); collection.CollectionChanges.SelectMany(l => l.ToObservable()).Subscribe(observer); var updated = new MockItem { Id = 1, Description = "ED" }; collection.UpdateItem(updated.Id, updated); var change = new CollectionChange { Type = CollectionChangeType.MoveRow, Index = new SectionedIndex(1, 0), OldIndex = new SectionedIndex(0, 1) }; var sectionChange = new CollectionChange { Type = CollectionChangeType.AddSection, Index = new SectionedIndex(1, 0) }; observer.Messages.AssertEqual( OnNext(0, change), OnNext(0, sectionChange) ); }
public void SendsEventWhenItemAdded() { List <int> list = new List <int> { 40, 70, 8, 3, 1, 2 }; var collection = new ObservableGroupedOrderedCollection <int>(i => i, i => i, i => i.ToString().Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <ICollectionChange>(); collection.CollectionChange.Subscribe(observer); collection.InsertItem(20); ICollectionChange change = new AddRowCollectionChange <int>(new SectionedIndex(1, 0), 20); observer.Messages.AssertEqual( OnNext(0, change) ); }
public void SendsEventWhenItemRemoved() { List <int> list = new List <int> { 40, 70, 8, 3, 1, 2 }; var collection = new ObservableGroupedOrderedCollection <int>(i => i, i => i, i => i.ToString().Length); collection.ReplaceWith(list); var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver <ICollectionChange>(); collection.CollectionChanges.SelectMany(l => l.ToObservable()).Subscribe(observer); collection.RemoveItemAt(0, 2); ICollectionChange change = new RemoveRowCollectionChange(new SectionedIndex(0, 2)); observer.Messages.AssertEqual( OnNext(0, change) ); }