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) ); }
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); }
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) ); }
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) ); }
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)); }
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); }
IObservable <Message> SingleMessageAt100Ticks() { return(testScheduler.CreateColdObservable( ReactiveTest.OnNext(MessageAOnNextTick, messageA) )); }
es .Select(e => ReactiveTest.OnNext(e.t, e.v)) .Concat(new[] { ReactiveTest.OnCompleted <T>(es.Max(x => x.t)) })
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); }
static Recorded <Notification <T> > OnNext <T>(long ticks, T value) { return(ReactiveTest.OnNext(ticks, value)); }
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)); }