public void Publish_Error()
        {
            var count = 0;

            var source = ObservableSource.Defer(() =>
            {
                count++;

                return(ObservableSource.Range(1, 5).ConcatError(new InvalidOperationException()));
            })
                         .Publish()
                         .RefCount();

            Assert.AreEqual(0, count);

            source.Test()
            .AssertFailure(typeof(InvalidOperationException), 1, 2, 3, 4, 5);

            Assert.AreEqual(1, count);

            source.Test()
            .AssertFailure(typeof(InvalidOperationException), 1, 2, 3, 4, 5);

            Assert.AreEqual(2, count);
        }
        public void Replay_Basic()
        {
            var count = 0;

            var source = ObservableSource.Defer(() =>
            {
                count++;

                return(ObservableSource.Range(1, 5));
            })
                         .Replay()
                         .RefCount();

            Assert.AreEqual(0, count);

            var to0 = source.Test();

            Assert.AreEqual(1, count);

            to0.AssertResult(1, 2, 3, 4, 5);

            Assert.AreEqual(1, count);

            var to = source.Test();

            Assert.AreEqual(2, count);

            to.AssertResult(1, 2, 3, 4, 5);

            Assert.AreEqual(2, count);
        }
        public void Basic()
        {
            var count = 0;

            var source = ObservableSource.Defer(() => ObservableSource.Just(++count));

            for (int i = 0; i < 10; i++)
            {
                source.Test().AssertResult(i + 1);
            }

            Assert.AreEqual(10, count);
        }
Ejemplo n.º 4
0
        public void Retry()
        {
            var count = 0;

            ObservableSource.Defer(() =>
            {
                var o = ObservableSource.Just(1);
                if (++count < 5)
                {
                    o = o.ConcatError(new InvalidOperationException());
                }
                return(o);
            })
            .RetryWhen(v => v)
            .Test()
            .AssertResult(1, 1, 1, 1, 1);
        }
        public void Publish_Min_Observers()
        {
            var count = 0;

            var source = ObservableSource.Defer(() =>
            {
                count++;

                return(ObservableSource.Range(1, 5));
            })
                         .Publish()
                         .RefCount(2);

            Assert.AreEqual(0, count);

            var to1 = source.Test();

            Assert.AreEqual(0, count);

            var to2 = source.Test();

            Assert.AreEqual(1, count);

            to1.AssertResult(1, 2, 3, 4, 5);
            to2.AssertResult(1, 2, 3, 4, 5);

            var to3 = source.Test();

            Assert.AreEqual(1, count);

            var to4 = source.Test();

            Assert.AreEqual(2, count);

            to3.AssertResult(1, 2, 3, 4, 5);
            to4.AssertResult(1, 2, 3, 4, 5);
        }
        public void AutoConnect_TwoConsumers()
        {
            int called = 0;

            var source = ObservableSource.Defer(() =>
            {
                called++;
                return(ObservableSource.Range(1, 5));
            })
                         .Replay()
                         .AutoConnect(2);

            Assert.AreEqual(0, called);

            var list0 = new List <int>();

            source.Subscribe(v => list0.Add(v));

            Assert.AreEqual(0, called);
            Assert.AreEqual(0, list0.Count);

            var list = source.Test();

            Assert.AreEqual(1, called);
            list.AssertResult(1, 2, 3, 4, 5);

            Assert.AreEqual(new List <int>()
            {
                1, 2, 3, 4, 5
            }, list0);

            list = source.Test();

            Assert.AreEqual(1, called);
            list.AssertResult(1, 2, 3, 4, 5);
        }
        public void AutoConnect_Immediately()
        {
            int called = 0;

            var source = ObservableSource.Defer(() =>
            {
                called++;
                return(ObservableSource.Range(1, 5));
            })
                         .Replay()
                         .AutoConnect(0);

            Assert.AreEqual(1, called);

            var list = source.Test();

            Assert.AreEqual(1, called);
            list.AssertResult(1, 2, 3, 4, 5);

            list = source.Test();

            Assert.AreEqual(1, called);
            list.AssertResult(1, 2, 3, 4, 5);
        }