public void An_ObservableSource_must_receive_events_from_an_observable() { this.AssertAllStagesStopped(() => { var o = new TestObservable <int>(); var s = this.CreateManualSubscriberProbe <int>(); Source.FromObservable(o) .To(Sink.FromSubscriber(s)) .Run(_materializer); var sub = s.ExpectSubscription(); sub.Request(2); o.Event(1); o.Event(2); o.Event(3); s.ExpectNext(1); s.ExpectNext(2); s.ExpectNoMsg(); sub.Request(2); s.ExpectNext(3); s.ExpectNoMsg(); o.Event(4); s.ExpectNext(4); o.Complete(); }, _materializer); }
public void An_ObservableSource_must_drop_newest_element_on_DropTail_overflow() { this.AssertAllStagesStopped(() => { var o = new TestObservable <int>(); var s = this.CreateManualSubscriberProbe <int>(); Source.FromObservable(o, maxBufferCapacity: 2, overflowStrategy: OverflowStrategy.DropTail) .To(Sink.FromSubscriber(s)) .Run(_materializer); var sub = s.ExpectSubscription(); o.Event(1); o.Event(2); // this should be dropped o.Event(3); sub.Request(3); s.ExpectNext(1); s.ExpectNext(3); s.ExpectNoMsg(); sub.Cancel(); }, _materializer); }
public void An_ObservableSource_must_receive_errors_from_an_observable() { this.AssertAllStagesStopped(() => { var o = new TestObservable <int>(); var s = this.CreateManualSubscriberProbe <int>(); Source.FromObservable(o) .To(Sink.FromSubscriber(s)) .Run(_materializer); var sub = s.ExpectSubscription(); sub.Request(2); var e = new Exception("hello"); o.Event(1); o.Error(e); o.Event(2); s.ExpectNext(1); s.ExpectError().ShouldBe(e); s.ExpectNoMsg(); }, _materializer); }
public void An_ObservableSource_must_be_able_to_unsubscribe() { this.AssertAllStagesStopped(() => { var o = new TestObservable <int>(); var s = this.CreateManualSubscriberProbe <int>(); Source.FromObservable(o) .To(Sink.FromSubscriber(s)) .Run(_materializer); var sub = s.ExpectSubscription(); o.Event(1); sub.Cancel(); Thread.Sleep(100); o.Subscribed.ShouldBeFalse(); }, _materializer); }