コード例 #1
0
        public async Task GetProgressFromASyncOperation()
        {
            CredentialsHandler credentials = (url, usernameFromUrl, types) =>
                new UsernamePasswordCredentials
                {
                    Username = "******",
                    Password = "******"
                };

            var repository = new ObservableRepository(
                @"C:\Users\brendanforster\Documents\GìtHūb\testing-pushspecs",
                credentials);

            Func<int, int> translate = x => x / 3;

            var pullObserver = new ReplaySubject<Tuple<string, int>>();
            var pushObserver = new ReplaySubject<Tuple<string, int>>();

            var pullResult = await repository.Pull(pullObserver);

            Assert.NotEqual(MergeStatus.Conflicts, pullResult.Status);

            await repository.Push(pushObserver);

            var list = await pullObserver.Select(x => translate(x.Item2) * 2)
                                 .Concat(pushObserver.Select(x => 67 + translate(x.Item2)))
                                 .ToList();

            Assert.NotEmpty(list);
            Assert.Equal(100, list.Last());
        }
コード例 #2
0
        public async Task GetProgressFromASyncOperation()
        {
            CredentialsHandler credentials = (url, usernameFromUrl, types) =>
                                             new UsernamePasswordCredentials
            {
                Username = "******",
                Password = "******"
            };

            var repository = new ObservableRepository(
                @"C:\Users\brendanforster\Documents\GìtHūb\testing-pushspecs",
                credentials);

            Func <int, int> translate = x => x / 3;

            var pullObserver = new ReplaySubject <Tuple <string, int> >();
            var pushObserver = new ReplaySubject <Tuple <string, int> >();

            var pullResult = await repository.Pull(pullObserver);

            Assert.NotEqual(MergeStatus.Conflicts, pullResult.Status);

            await repository.Push(pushObserver);

            var list = await pullObserver.Select(x => translate(x.Item2) * 2)
                       .Concat(pushObserver.Select(x => 67 + translate(x.Item2)))
                       .ToList();

            Assert.NotEmpty(list);
            Assert.Equal(100, list.Last());
        }
コード例 #3
0
        public async Task CanCloneARepository()
        {
            using (var directory = TestDirectory.Create())
            {
                var cloneObserver = new ReplaySubject <Tuple <string, int> >();
                using (await ObservableRepository.Clone(
                           "https://github.com/shiftkey/rxui-design-guidelines.git",
                           directory.Path,
                           cloneObserver))
                {
                    Assert.NotEmpty(Directory.GetFiles(directory.Path));
                    var progressList = await cloneObserver.Select(x => x.Item2).ToList();

                    Assert.Equal(100, progressList.Last());
                }
            }
        }
コード例 #4
0
        public CloneRepositoryViewModel(string cloneUrl, string localDirectory)
        {
            IsEmpty  = true;
            Branches = new ReactiveList <BranchViewModel>();

            // omg this hack sucks
            Progress = new ReplaySubject <Tuple <string, int> >();

            var anyProgress = this.WhenAnyObservable(x => x.Progress);

            progressText = anyProgress.Select(x => x.Item1)
                           .ToProperty(this, x => x.ProgressText, scheduler: RxApp.MainThreadScheduler);
            progressValue = anyProgress.Select(x => x.Item2)
                            .ToProperty(this, x => x.ProgressValue, scheduler: RxApp.MainThreadScheduler);

            Clone = ReactiveCommand.CreateAsyncObservable(_ =>
            {
                Progress = new ReplaySubject <Tuple <string, int> >();
                return(ObservableRepository.Clone(cloneUrl, localDirectory, Progress));
            });

            isCloningObs = Clone.IsExecuting.ToProperty(this, x => x.IsCloning);

            Clone.Subscribe(_ => { IsEmpty = false; });

            repositoryObs = Clone.ToProperty(this, x => x.Repository);

            this.WhenAnyValue(x => x.Repository)
            .Where(x => x != null)
            .Subscribe(RefreshBranches);

            Checkout = ReactiveCommand.CreateAsyncObservable(
                this.WhenAny(x => x.SelectedBranch, x => x != null),
                _ =>
            {
                Progress   = new ReplaySubject <Tuple <string, int> >();
                var branch = Repository.Inner.Branches[SelectedBranch.Name];
                return(Repository.Checkout(branch, Progress));
            });
            Checkout.Subscribe(_
                               => RefreshBranches(Repository));
        }
コード例 #5
0
 public virtual void OnPreUpdate <ObservableEntity>(ObservableRepository <ObservableEntity> observableRepository, out bool vetoed) where ObservableEntity : IObservableEntity, new()
 => vetoed = false;