RunNext() публичный Метод

public RunNext ( ) : void
Результат void
Пример #1
0
        public void time_offset_excludes_values_of_exact_offset()
        {
            var stats = new StatsObserver<IList<int>>();

            var valueScheduler = new ManualScheduler();
            var bufferScheduler = new ManualScheduler();

            DateTimeOffset startTime = DateTimeOffset.UtcNow;

            Observable.Range(0, 5, valueScheduler)
                .BufferWithTime(TimeSpan.FromMilliseconds(30), TimeSpan.FromMilliseconds(20), bufferScheduler)
                .Subscribe(stats);

            Assert.IsFalse(stats.NextCalled);

            bufferScheduler.Now = startTime.AddMilliseconds(10);
            valueScheduler.RunNext();

            bufferScheduler.Now = startTime.AddMilliseconds(20); // exact offset value
            valueScheduler.RunNext();

            bufferScheduler.Now = startTime.AddMilliseconds(30);
            valueScheduler.RunNext();

            bufferScheduler.RunNext();
            bufferScheduler.RunNext();

            Assert.AreEqual(2, stats.NextCount);
            Assert.AreEqual(1, stats.NextValues[1].Count);
        }
Пример #2
0
        public void scheduler_is_used_for_subsequent_subscriptions()
        {
            var sourceA = Observable.Empty<int>();
            var sourceB = new StatsSubject<int>();

            var scheduler = new ManualScheduler();
            var stats = new StatsObserver<int>();

            sourceA.Concat(sourceB, scheduler).Subscribe(stats);

            scheduler.RunNext();

            Assert.AreEqual(0, sourceB.SubscriptionCount);
            Assert.AreEqual(1, scheduler.QueueSize);

            scheduler.RunNext();

            Assert.AreEqual(1, sourceB.SubscriptionCount);
            Assert.AreEqual(0, scheduler.QueueSize);
        }
Пример #3
0
        public void scheduler_is_used_for_completion_when_take_is_zero()
        {
            var scheduler = new ManualScheduler();

            var stats = new StatsObserver<int>();

            new Subject<int>().Take(0, scheduler).Subscribe(stats);

            Assert.IsFalse(stats.CompletedCalled);

            scheduler.RunNext();

            Assert.IsTrue(stats.CompletedCalled);
        }
Пример #4
0
        public void errors_are_sent_through_scheduler()
        {
            ManualScheduler scheduler = new ManualScheduler();

            ReplaySubject<int> subject = new ReplaySubject<int>(scheduler);

            StatsObserver<int> stats = new StatsObserver<int>();

            subject.OnError(new Exception());

            subject.Subscribe(stats);

            Assert.IsFalse(stats.ErrorCalled);

            scheduler.RunNext();
            Assert.IsTrue(stats.ErrorCalled);
        }
Пример #5
0
        public void values_cannot_be_replayed_out_of_order()
        {
            ManualScheduler scheduler = new ManualScheduler();

            ReplaySubject<int> subject = new ReplaySubject<int>(scheduler);

            StatsObserver<int> stats = new StatsObserver<int>();

            subject.OnNext(1);
            subject.OnNext(2);

            subject.Subscribe(stats);

            Assert.IsFalse(stats.NextCalled);

            scheduler.RunNext();
            Assert.IsTrue(stats.NextValues.SequenceEqual(new int[] { 1 }));

            subject.OnNext(3);

            scheduler.RunNext();
            Assert.IsTrue(stats.NextValues.SequenceEqual(new int[] { 1, 2 }));

            scheduler.RunNext();
            Assert.IsTrue(stats.NextValues.SequenceEqual(new int[] { 1, 2, 3 }));

            subject.OnCompleted();

            scheduler.RunNext();
            Assert.IsTrue(stats.CompletedCalled);
        }
Пример #6
0
        public void replayed_values_are_sent_through_scheduler()
        {
            ManualScheduler scheduler = new ManualScheduler();

            ReplaySubject<int> subject = new ReplaySubject<int>(scheduler);

            StatsObserver<int> stats = new StatsObserver<int>();

            subject.OnNext(1);
            subject.OnNext(2);
            subject.OnCompleted();

            subject.Subscribe(stats);

            Assert.IsFalse(stats.NextCalled);

            scheduler.RunNext();
            Assert.AreEqual(1, stats.NextCount);
            Assert.IsTrue(stats.NextValues.SequenceEqual(new int[] { 1 }));
            Assert.IsFalse(stats.CompletedCalled);

            scheduler.RunNext();
            Assert.AreEqual(2, stats.NextCount);
            Assert.IsTrue(stats.NextValues.SequenceEqual(new int[] { 1, 2 }));
            Assert.IsFalse(stats.CompletedCalled);

            scheduler.RunNext();
            Assert.IsTrue(stats.CompletedCalled);
        }
Пример #7
0
        public void zero_length_list_is_emitted_when_no_values_are_available()
        {
            var stats = new StatsObserver<IList<int>>();

            var scheduler = new ManualScheduler();

            var manObs = Observable.Never<int>()
                .BufferWithTime(TimeSpan.FromMilliseconds(1), scheduler)
                .Take(1)
                .Subscribe(stats);

            scheduler.RunNext();

            Assert.AreEqual(1, stats.NextCount);
            Assert.AreEqual(0, stats.NextValues[0].Count);
        }
Пример #8
0
        public void catch_with_observer_subscribes_to_next_through_scheduler()
        {
            ManualScheduler scheduler = new ManualScheduler();

            StatsObserver<IEvent<EventArgs>> observer = new StatsObserver<IEvent<EventArgs>>();

            EventOwner owner = new EventOwner();

            var eventObs = Observable.FromEvent<EventArgs>(x => owner.Event += x, x => owner.Event -= x);

            Observable.Throw<IEvent<EventArgs>>(new ApplicationException())
                .Catch(eventObs, scheduler)
                .Subscribe(observer);

            scheduler.RunNext();

            Assert.IsFalse(owner.HasSubscriptions);

            scheduler.RunNext();

            Assert.IsTrue(owner.HasSubscriptions);
        }