public void SequentialClockTicksTest() { IClock clock = new SequentialClock(new [] { new TestClock(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(6)), new TestClock(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(7)), new TestClock(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(4), TimeSpan.FromSeconds(8)), }); Assert.AreEqual(TimeSpan.FromSeconds(2), clock.FirstTick); Assert.AreEqual(TimeSpan.FromSeconds(28), clock.LastTick); Assert.AreEqual(TimeSpan.FromSeconds(30), clock.Duration); ClockState state = clock.Tick(TimeSpan.Zero); Assert.AreEqual(Granular.Compatibility.TimeSpan.MinValue, state.PreviousTick); Assert.AreEqual(TimeSpan.FromSeconds(2), state.NextTick); state = clock.Tick(TimeSpan.FromSeconds(6)); Assert.AreEqual(TimeSpan.FromSeconds(6), state.PreviousTick); Assert.AreEqual(TimeSpan.FromSeconds(13), state.NextTick); state = clock.Tick(TimeSpan.FromSeconds(17)); Assert.AreEqual(TimeSpan.FromSeconds(17), state.PreviousTick); Assert.AreEqual(TimeSpan.FromSeconds(24), state.NextTick); state = clock.Tick(TimeSpan.FromSeconds(28)); Assert.AreEqual(TimeSpan.FromSeconds(28), state.PreviousTick); Assert.AreEqual(Granular.Compatibility.TimeSpan.MaxValue, state.NextTick); }
public void SequentialClockProgressTest() { TestClock clock1 = new TestClock(TimeSpan.FromSeconds(1)); TestClock clock2 = new TestClock(TimeSpan.FromSeconds(0)); TestClock clock3 = new TestClock(TimeSpan.FromSeconds(2)); IClock clock = new SequentialClock(new[] { clock1, clock2, clock3 }); Assert.AreEqual(TimeSpan.FromSeconds(0), clock.FirstTick); Assert.AreEqual(TimeSpan.FromSeconds(3), clock.LastTick); Assert.AreEqual(TimeSpan.FromSeconds(3), clock.Duration); clock.Tick(TimeSpan.FromSeconds(-1)); Assert.AreEqual(ClockProgressState.BeforeStarted, clock1.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.BeforeStarted, clock2.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.BeforeStarted, clock3.CurrentState.ProgressState); Assert.AreEqual(0, clock1.CurrentState.Progress); Assert.AreEqual(0, clock2.CurrentState.Progress); Assert.AreEqual(0, clock3.CurrentState.Progress); clock.Tick(TimeSpan.FromSeconds(0)); Assert.AreEqual(ClockProgressState.Active, clock1.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.BeforeStarted, clock2.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.BeforeStarted, clock3.CurrentState.ProgressState); Assert.AreEqual(0, clock1.CurrentState.Progress); Assert.AreEqual(0, clock2.CurrentState.Progress); Assert.AreEqual(0, clock3.CurrentState.Progress); clock.Tick(TimeSpan.FromSeconds(1)); Assert.AreEqual(ClockProgressState.AfterEnded, clock1.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.AfterEnded, clock2.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.Active, clock3.CurrentState.ProgressState); Assert.AreEqual(1, clock1.CurrentState.Progress); Assert.AreEqual(1, clock2.CurrentState.Progress); Assert.AreEqual(0, clock3.CurrentState.Progress); clock.Tick(TimeSpan.FromSeconds(3)); Assert.AreEqual(ClockProgressState.AfterEnded, clock1.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.AfterEnded, clock2.CurrentState.ProgressState); Assert.AreEqual(ClockProgressState.AfterEnded, clock3.CurrentState.ProgressState); Assert.AreEqual(1, clock1.CurrentState.Progress); Assert.AreEqual(1, clock2.CurrentState.Progress); Assert.AreEqual(1, clock3.CurrentState.Progress); }