public void New()
        {
            var newPeople = Enumerable.Range(1, 15).Select(i => new Person("Name" + i, i)).ToArray();

            _cache.EditDiff(newPeople, Person.NameAgeGenderComparer);

            Assert.AreEqual(15, _cache.Count);
            CollectionAssert.AreEquivalent(newPeople, _cache.Items);
            var lastChange = _result.Messages.Last();

            Assert.AreEqual(5, lastChange.Adds);
        }
Beispiel #2
0
        public void New()
        {
            var newPeople = Enumerable.Range(1, 15).Select(i => new Person("Name" + i, i)).ToArray();

            _cache.EditDiff(newPeople, Person.NameAgeGenderComparer);

            _cache.Count.Should().Be(15);
            _cache.Items.ShouldAllBeEquivalentTo(newPeople);
            var lastChange = _result.Messages.Last();

            lastChange.Adds.Should().Be(5);
        }
        public void Amends()
        {
            var newList = Enumerable.Range(5, 3).Select(i => new Person("Name" + i, i + 10)).ToArray();

            _cache.EditDiff(newList, Person.NameAgeGenderComparer);

            _cache.Count.Should().Be(3);

            var lastChange = _result.Messages.Last();

            lastChange.Adds.Should().Be(3);
            lastChange.Removes.Should().Be(10);

            _cache.Items.Should().BeEquivalentTo(newList);
        }
        public ListViewModel()
        {
            var navigationSortExpressionComparer = SortExpressionComparer <ListItemDataModel>
                                                   .Ascending(p => p.Group)
                                                   .ThenByAscending(p => p.Order);

//            this.WhenActivated(disposable =>
//            {
            var obs = _items
                      .Connect()
                      .Sort(navigationSortExpressionComparer)
                      .ObserveOn(RxApp.MainThreadScheduler)
                      .Transform(
                model => new
                ListItemViewModel(model))
                      .Publish();

            ListCollection = obs;

            SelectedItems = obs.Filter(x => x.IsSelected);

            obs.Connect();

            _items.AddRange(GetFirstDataSet());

            Task.Run(() =>
            {
                var firstList = GetFirstDataSet();
                _items.EditDiff(firstList);

                Thread.Sleep(5000);
                var nextList = GetSecondList();
                nextList.AddRange(GetFirstDataSet());
                _items.EditDiff(nextList);
            }).ConfigureAwait(false);
//            });
        }
        public IDisposable Switch(bool useGroup)
        {
            SourceList.Clear();
            return(Choose()
                   .Subscribe(a =>
            {
                SourceList.EditDiff(a);
            }));

            IObservable <IEnumerable <object> > Choose()
            {
                return(useGroup == false
                    ? ungrouped
                       .Connect()
                       .ToCollection()
                    : grouped
                       .Connect()
                       .ToCollection());
            }
        }