コード例 #1
0
            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)
                    );
            }
コード例 #2
0
            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)
                    );
            }
コード例 #3
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);
            }
コード例 #4
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)
                    );
            }
コード例 #5
0
            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)
                    );
            }
コード例 #6
0
            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);
            }
コード例 #7
0
            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)
                    );
            }
コード例 #8
0
            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)
                    );
            }
コード例 #9
0
            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)
                    );
            }