Пример #1
0
    public void TimerTest1()
    {
        var testScheduler = new TestScheduler();
        var recorder      = testScheduler.CreateObserver <long>();
        var timer         = new ReactiveTimer(TimeSpan.FromSeconds(1), testScheduler);

        timer.Subscribe(recorder);

        timer.Start(TimeSpan.FromSeconds(10));
        testScheduler.AdvanceTo(TimeSpan.FromSeconds(13).Ticks);
        recorder.Messages.Is(
            OnNext(TimeSpan.FromSeconds(10).Ticks, 0L),
            OnNext(TimeSpan.FromSeconds(11).Ticks, 1L),
            OnNext(TimeSpan.FromSeconds(12).Ticks, 2L),
            OnNext(TimeSpan.FromSeconds(13).Ticks, 3L));
        recorder.Messages.Clear();

        timer.Stop();
        testScheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks);
        recorder.Messages.Count.Is(0);

        timer.Start();
        var reStartClock = testScheduler.Clock + 1;

        testScheduler.AdvanceBy(TimeSpan.FromSeconds(3).Ticks + 1);
        recorder.Messages.Is(
            OnNext(reStartClock, 4L),
            OnNext(reStartClock + TimeSpan.FromSeconds(1).Ticks, 5L),
            OnNext(reStartClock + TimeSpan.FromSeconds(2).Ticks, 6L),
            OnNext(reStartClock + TimeSpan.FromSeconds(3).Ticks, 7L));
        recorder.Messages.Clear();

        timer.Reset();
        testScheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks);
        recorder.Messages.Count.Is(0);

        timer.Dispose();

        recorder.Messages.Is(OnCompleted <long>(testScheduler.Clock));

        timer.Dispose(); // dispose again
    }
        public void TimerTest1()
        {
            var testScheduler = new TestScheduler();
            var recorder = testScheduler.CreateObserver<long>();
            var timer = new ReactiveTimer(TimeSpan.FromSeconds(1), testScheduler);
            timer.Subscribe(recorder);

            timer.Start(TimeSpan.FromSeconds(10));
            testScheduler.AdvanceTo(TimeSpan.FromSeconds(13).Ticks);
            recorder.Messages.Is(
                OnNext(TimeSpan.FromSeconds(10).Ticks, 0L),
                OnNext(TimeSpan.FromSeconds(11).Ticks, 1L),
                OnNext(TimeSpan.FromSeconds(12).Ticks, 2L),
                OnNext(TimeSpan.FromSeconds(13).Ticks, 3L));
            recorder.Messages.Clear();

            timer.Stop();
            testScheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks);
            recorder.Messages.Count.Is(0);

            timer.Start();
            var reStartClock = testScheduler.Clock + 1;
            testScheduler.AdvanceBy(TimeSpan.FromSeconds(3).Ticks + 1);
            recorder.Messages.Is(
                OnNext(reStartClock, 4L),
                OnNext(reStartClock + TimeSpan.FromSeconds(1).Ticks, 5L),
                OnNext(reStartClock + TimeSpan.FromSeconds(2).Ticks, 6L),
                OnNext(reStartClock + TimeSpan.FromSeconds(3).Ticks, 7L));
            recorder.Messages.Clear();

            timer.Reset();
            testScheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks);
            recorder.Messages.Count.Is(0);

            timer.Dispose();

            recorder.Messages.Is(OnCompleted<long>(testScheduler.Clock));

            timer.Dispose(); // dispose again
        }
 public void Stop()
 {
     Status.Value = TimerStatus.STOP;
     ReactiveTimer.Reset();
 }