private SynchronizedEditableView(IList <T> source, CollectionSynchronizer <T> tracker, bool leaveOpen)
     : base(tracker)
 {
     Ensure.NotNull(source, nameof(source));
     this.leaveOpen = leaveOpen;
     this.Source    = source;
     this.Tracker   = tracker;
 }
예제 #2
0
 public CollectionSynchronizerTests()
 {
     _synchronizer = new CollectionSynchronizer <MyClass, MyClass>
     {
         Compare = (x, y) => x.Id == y.Id,
         Add     = (x) => _destinationList.Add(x),
         Remove  = (x) => _destinationList.Remove(x),
         Update  = (x, y) => y.Name = x.Name,
     };
 }
예제 #3
0
        public void RefreshNulls()
        {
            var source       = new[] { 1, 2, 3 };
            var synchronizer = new CollectionSynchronizer <int>(new int[0]);
            var current      = synchronizer.Current;

            synchronizer.Refresh(this, source, null, null, null, null);
            CollectionAssert.AreEqual(source, synchronizer.Current);
            Assert.AreSame(current, synchronizer.Current);
        }
예제 #4
0
        public void RefreshSignals()
        {
            var source       = new ObservableCollection <int>();
            var synchronizer = new CollectionSynchronizer <int>(source);

            using var expected = source.SubscribeAll();
            using var actual   = this.SubscribeAll();
            source.Add(1);
            synchronizer.Refresh(source, null, this.OnPropertyChanged, this.OnCollectionChanged);
            CollectionAssert.AreEqual(source, synchronizer);
            CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
        }
        public async Task Handle(MetricQueryRequest <IndexCountWidget> request, CancellationToken cancellationToken)
        {
            var indexCountWidget = request.DataContext;

            var client = elasticsearchHelper.GetElasticClient(indexCountWidget);

            var indexCountResponse = await client.IndexListAsync(cancellationToken);

            if (indexCountResponse.IsValid)
            {
                request.DataContext.Value = indexCountResponse.Indices.Length;

                if (uiAction != null) //uiAction is null on unit tests...
                {
                    CollectionSynchronizer <IndexEntry, Item> synchronizer = null;
                    switch (indexCountWidget.IndexDetails)
                    {
                    case IndexDetail.None:
                        synchronizer = GetNoneSynchronizer(request);
                        break;

                    case IndexDetail.Health:
                        synchronizer = GetHealthSynchronizer(request);
                        break;

                    case IndexDetail.DocumentsCount:
                        synchronizer = GetDocumentsCountSynchronizer(request);
                        break;

                    case IndexDetail.DeletedDocumentsCount:
                        synchronizer = GetDeletedDocumentsCountSynchronizer(request);
                        break;

                    case IndexDetail.TotalStoreSize:
                        synchronizer = GetTotalStoreSizeSynchronizer(request);
                        break;

                    case IndexDetail.PrimaryStoreSize:
                        synchronizer = GetPrimaryStoreSizeSynchronizer(request);
                        break;
                    }

                    uiAction.Invoke(() => synchronizer.Synchronize(indexCountResponse.Indices, request.DataContext.Items));
                }

                request.DataContext.State = State.Ok;
            }
            else
            {
                indexCountWidget.State = State.Invalid;
            }
        }
예제 #6
0
        public void RefreshSignalsWithScheduler()
        {
            var source       = new ObservableCollection <int>();
            var synchronizer = new CollectionSynchronizer <int>(source);
            var expected     = source.SubscribeAll();
            var actual       = this.SubscribeAll();

            source.Add(1);
            var scheduler = new TestScheduler();

            synchronizer.Refresh(this, source, null, scheduler, PropertyChanged, CollectionChanged);
            CollectionAssert.AreEqual(source, synchronizer.Current);
            CollectionAssert.IsEmpty(actual.OfType <NotifyCollectionChangedEventArgs>());
            scheduler.Start();
            CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
        }
예제 #7
0
        private IOutcome <string> DoExecute()
        {
            var unitSync    = new UnitSynchronizer();
            var unitOutcome = unitSync.Execute();

            if (unitOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve units.")
                       .WithMessagesFrom(unitOutcome));
            }

            var playerSync    = new PlayerSynchronizer();
            var playerOutcome = playerSync.Execute();

            if (playerOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve players.")
                       .WithMessagesFrom(playerOutcome));
            }

            var collectionSync    = new CollectionSynchronizer();
            var collectionOutcome = collectionSync.Execute();

            if (collectionOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve collections.")
                       .WithMessagesFrom(collectionOutcome));
            }

            var modSync    = new ModSynchronizer();
            var modOutcome = modSync.Execute();

            if (modOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve mods.")
                       .WithMessagesFrom(modOutcome));
            }

            return(Outcomes.Success <string>()
                   .WithMessage("Successfully ran the swgoh.gg synchronizer."));
        }