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(); }