public void Quoter_WithEnvironment() { var quoter = new Quoter(DefaultExpressionPolicy.Instance); var expr = (Expression <Func <int, ISubscribable <int> > >)(x => Subscribable.Return(x)); var res = quoter.Visit(expr); var obj = (Func <int, ISubscribable <int> >)res.Evaluate(); var value = obj(42); var quote = ((IExpressible)value).Expression; var eq = new ExpressionEqualityComparer(); Assert.IsTrue( eq.Equals( Expression.Invoke( expr, Expression.Constant(42) ), quote ) ); }
public void Retry_Observable_Throws3() { Run(scheduler => { var zs = Subscribable.Return(1).Apply(scheduler).Retry(); var sub = zs.Subscribe(Observer.Create <int>(x => { }, ex => { }, () => { throw new InvalidOperationException(); })); InitializeSubscription(sub, scheduler); ReactiveAssert.Throws <InvalidOperationException>(() => scheduler.Start()); }); }
public void Quoter_NoEnviroment() { var quoter = new Quoter(DefaultExpressionPolicy.Instance); var expr = Expression.Constant(Subscribable.Return(42), typeof(ISubscribable <int>)); var res = quoter.Visit(expr); var obj = res.Evaluate(); var quote = ((IExpressible)obj).Expression; Assert.AreSame(expr, quote); }
public void Retry_Observable_RetryCount_Throws() { Run(scheduler => { var xs = Subscribable.Return(1).Apply(scheduler).Retry(3); var sub = xs.Subscribe(Observer.Create <int>(x => { throw new InvalidOperationException(); }, ex => { }, () => { })); InitializeSubscription(sub, scheduler); ReactiveAssert.Throws <InvalidOperationException>(() => scheduler.Start()); }); Run(scheduler => { var ys = Subscribable.Throw <int>(new Exception()).Apply(scheduler).Retry(100); var sub = ys.Subscribe(Observer.Create <int>(x => { }, ex => { throw new InvalidOperationException(); }, () => { })); InitializeSubscription(sub, scheduler); scheduler.ScheduleAbsolute(10, () => sub.Dispose()); scheduler.Start(); }); Run(scheduler => { var zs = Subscribable.Return(1).Apply(scheduler).Retry(100); var sub = zs.Subscribe(Observer.Create <int>(x => { }, ex => { }, () => { throw new InvalidOperationException(); })); InitializeSubscription(sub, scheduler); ReactiveAssert.Throws <InvalidOperationException>(() => scheduler.Start()); }); Run(scheduler => { var xss = Observable.Create <int>(new Func <IObserver <int>, IDisposable>(o => { throw new InvalidOperationException(); })).ToSubscribable().Retry(3); new SubscriptionInitializeVisitor(xss.Subscribe(Observer.Create <int>(x => { }, ex => { throw ex; }, () => { }))).Initialize(scheduler.CreateContext()); ReactiveAssert.Throws <InvalidOperationException>(() => scheduler.Start()); }); }
public static ISubscribable <T> Return <T>(this TestScheduler scheduler, T value) { return(Subscribable.Return <T>(value)); }