public ISetupTest ExpectObservable <T>(IObservable <T> observable, string unsubscriptionMarbles = null) { var actual = new List <Recorded <Notification <object> > >(); var flushTest = new FlushableTest() { Actual = actual, Ready = false }; var unsubscriptionFrame = long.MaxValue; if (unsubscriptionMarbles != null) { unsubscriptionFrame = Parser.ParseMarblesAsSubscriptions(unsubscriptionMarbles, _frameTimeFactor).Unsubscribe; } IDisposable subscription = observable.Subscribe(x => { object value = x; // Support Observable-of-Observables if (value is IObservable <object> ) { value = MaterializeInnerObservable(value as IObservable <object>, Clock); } actual.Add(new Recorded <Notification <object> >(Clock, Notification.CreateOnNext(value))); }, (error) => actual.Add(new Recorded <Notification <object> >(Clock, Notification.CreateOnError <object>(error))), () => actual.Add(new Recorded <Notification <object> >(Clock, Notification.CreateOnCompleted <object>()))); if (unsubscriptionFrame != long.MaxValue) { ScheduleAbsolute((object)null, unsubscriptionFrame, (scheduler, state) => { subscription.Dispose(); return(Disposable.Empty); }); } _flushTests.Add(flushTest); return(new SetupTest(flushTest, _frameTimeFactor)); }
public SetupTest(FlushableTest flushTest, int frameTimeFactor) { _flushTest = flushTest; _frameTimeFactor = frameTimeFactor; }