Exemple #1
0
        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
                    )
                );
        }
Exemple #2
0
        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());
            });
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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));
 }