コード例 #1
0
                public void DoesNotDisplayAnErrorMessageWhenTheUserCancelsTheRequestOnTheGoogleService()
                {
                    var hasErrorObserver = TestScheduler.CreateObserver <bool>();

                    ViewModel.HasError.Subscribe(hasErrorObserver);
                    var errorTextObserver = TestScheduler.CreateObserver <string>();

                    ViewModel.ErrorMessage.Subscribe(errorTextObserver);

                    UserAccessManager.SignUpWithGoogle(Arg.Any <bool>(), Arg.Any <int>(), Arg.Any <string>()).Returns(
                        Observable.Throw <Unit>(new GoogleLoginException(true)));

                    ViewModel.GoogleSignup.Execute();

                    TestScheduler.Start();
                    errorTextObserver.Messages.AssertEqual(
                        ReactiveTest.OnNext(1, "")
                        );

                    hasErrorObserver.Messages.AssertEqual(
                        ReactiveTest.OnNext(2, false)
                        );
                }
コード例 #2
0
        public void AbsolutePositionElementItSelfChanged()
        {
            var scheduler = new TestScheduler();

            var root    = new UIElement();
            var element = new UIElement();

            // Add element to root as a child.
            root.Children.Add(element);

            // Change the position of the element.
            scheduler.Schedule(TimeSpan.FromTicks(10), () => element.Position = new Point(86, 4));

            var expected = new[]
            {
                ReactiveTest.OnNext(1, new Point(0, 0)),
                ReactiveTest.OnNext(10, new Point(86, 4))
            };

            var actual = scheduler.Start(() => element.AbsolutePositionChanged, 0, 0, 1000).Messages;

            ReactiveAssert.AreElementsEqual(expected, actual);
        }
コード例 #3
0
                    public void SetsEmailAlreadyUsedErrorIfReceivedEmailIsAlreadyusedException()
                    {
                        var observer = TestScheduler.CreateObserver <string>();

                        ViewModel.ErrorMessage.Subscribe(observer);

                        var request = Substitute.For <IRequest>();

                        request.Endpoint.Returns(new Uri("https://any.url.com"));
                        prepareException(new EmailIsAlreadyUsedException(
                                             new BadRequestException(
                                                 request,
                                                 Substitute.For <IResponse>()
                                                 )
                                             ));

                        ViewModel.Signup.Execute();

                        TestScheduler.Start();
                        observer.Messages.AssertEqual(
                            ReactiveTest.OnNext(1, ""),
                            ReactiveTest.OnNext(2, Resources.EmailIsAlreadyUsedError)
                            );
                    }
コード例 #4
0
            public async Task UpdatesTheCountryButtonTitle()
            {
                var observer = TestScheduler.CreateObserver <string>();

                ViewModel.CountryButtonTitle.Subscribe(observer);

                var selectedCountry = await new GetAllCountriesInteractor()
                                      .Execute()
                                      .Select(countries => countries.Single(country => country.Id == 1));

                NavigationService
                .Navigate <SelectCountryViewModel, long?, long?>(Arg.Any <long?>())
                .Returns(selectedCountry.Id);
                await ViewModel.Initialize();

                ViewModel.PickCountry.Execute();

                TestScheduler.Start();
                observer.Messages.AssertEqual(
                    ReactiveTest.OnNext(1, Resources.SelectCountry),
                    ReactiveTest.OnNext(2, Location.CountryName),
                    ReactiveTest.OnNext(3, selectedCountry.Name)
                    );
            }
コード例 #5
0
ファイル: BufferTests.cs プロジェクト: Gotcha7770/CS.Edu
        public void BuffetTimeoutTest()
        {
            var scheduler = new TestScheduler();
            var source    = scheduler.CreateHotObservable(ReactiveTest.OnNext(10, 1),
                                                          ReactiveTest.OnNext(20, 2),
                                                          ReactiveTest.OnNext(30, 3),
                                                          ReactiveTest.OnNext(40, 4),
                                                          ReactiveTest.OnNext(50, 5),
                                                          ReactiveTest.OnNext(60, 6),
                                                          ReactiveTest.OnNext(70, 7),
                                                          ReactiveTest.OnNext(80, 8),
                                                          ReactiveTest.OnNext(90, 9),
                                                          ReactiveTest.OnCompleted <int>(100));

            var res = scheduler.Start(() => source.Buffer(TimeSpan.FromTicks(20), scheduler), 0, 0, ReactiveTest.Disposed);

            res.Messages.AssertEqual(
                ReactiveTest.OnNext <IList <int> >(21, x => x.SequenceEqual(new [] { 1, 2 })),
                ReactiveTest.OnNext <IList <int> >(41, x => x.SequenceEqual(new [] { 3, 4 })),
                ReactiveTest.OnNext <IList <int> >(61, x => x.SequenceEqual(new [] { 5, 6 })),
                ReactiveTest.OnNext <IList <int> >(81, x => x.SequenceEqual(new [] { 7, 8 })),
                ReactiveTest.OnNext <IList <int> >(100, x => x.SequenceEqual(new [] { 9 })),
                ReactiveTest.OnCompleted <IList <int> >(100));
        }
コード例 #6
0
        public void ObserveParentWidth()
        {
            var scheduler = new TestScheduler();

            var parent     = new UIElement();
            var child      = new RectangleView();
            var observable = child.ParentChanged.Where(t => t != null && child.IsVisible).Select(p => p.WidthChanged).Switch();

            // Setup parent child relationship
            parent.Children.Add(child);

            // Change the width of the parent.
            scheduler.Schedule(TimeSpan.FromTicks(10), () => parent.Width = 500);

            var expected = new[]
            {
                ReactiveTest.OnNext(1, 0),
                ReactiveTest.OnNext(10, 500)
            };

            var actual = scheduler.Start(() => observable, 0, 0, 1000).Messages;

            ReactiveAssert.AreElementsEqual(expected, actual);
        }
コード例 #7
0
 IObservable <Message> SingleMessageAt100Ticks()
 {
     return(testScheduler.CreateColdObservable(
                ReactiveTest.OnNext(MessageAOnNextTick, messageA)
                ));
 }
コード例 #8
0
 es
 .Select(e => ReactiveTest.OnNext(e.t, e.v))
 .Concat(new[] { ReactiveTest.OnCompleted <T>(es.Max(x => x.t)) })
コード例 #9
0
        public void Should_pause_and_resume()
        {
            //Arrange
            var    scheduler        = new TestScheduler();
            var    isRunningTrigger = new BehaviorSubject <bool>(true);
            Action pause            = () => isRunningTrigger.OnNext(false);
            Action resume           = () => isRunningTrigger.OnNext(true);
            var    source           = scheduler.CreateHotObservable(
                ReactiveTest.OnNext(0.1.Seconds(), 1),
                ReactiveTest.OnNext(2.0.Seconds(), 2),
                ReactiveTest.OnNext(4.0.Seconds(), 3),
                ReactiveTest.OnNext(6.0.Seconds(), 4),
                ReactiveTest.OnNext(8.0.Seconds(), 5));

            scheduler.Schedule(TimeSpan.FromSeconds(0.5), () => { pause(); });
            scheduler.Schedule(TimeSpan.FromSeconds(5.0), () => { resume(); });

            //Act
            var sut = Observable.Create <IObservable <int> >(o =>
            {
                var current           = source.Replay();
                var connection        = new SerialDisposable();
                connection.Disposable = current.Connect();
                return(isRunningTrigger
                       .DistinctUntilChanged()
                       .Select(isRunning =>
                {
                    if (isRunning)
                    {
                        //Return the current replayed values.
                        return current;
                    }
                    else
                    {
                        //Disconnect and replace current.
                        current = source.Replay();
                        connection.Disposable = current.Connect();
                        //yield silence until the next time we resume.
                        return Observable.Never <int>();
                    }
                })
                       .Subscribe(o));
            }).Switch();
            var observer = scheduler.CreateObserver <int>();

            using (sut.Subscribe(observer))
            {
                scheduler.Start();
            }
            //Assert
            var expected = new[]
            {
                ReactiveTest.OnNext(0.1.Seconds(), 1),
                ReactiveTest.OnNext(5.0.Seconds(), 2),
                ReactiveTest.OnNext(5.0.Seconds(), 3),
                ReactiveTest.OnNext(6.0.Seconds(), 4),
                ReactiveTest.OnNext(8.0.Seconds(), 5)
            };

            CollectionAssert.AreEqual(expected, observer.Messages);
        }
コード例 #10
0
 static Recorded <Notification <T> > OnNext <T>(long ticks, T value)
 {
     return(ReactiveTest.OnNext(ticks, value));
 }
コード例 #11
0
 private void Given_a_way_to_scan_solutions()
 {
     _solutionScanner = new SolutionRescanner();
     _scheduler       = new TestScheduler();
     _inputObservable = _scheduler.CreateColdObservable(ReactiveTest.OnNext(100, _sln), ReactiveTest.OnCompleted <Solution>(300));
 }