public void TestSeekShouldUpdateAtMaxSpeedUntilSeekFinished()
        {
            var gameReplay = NSubstitute.Substitute.For <GameReplayPlayer> ();

            gameReplay.GetTotalTime().Returns(100.0f);
            gameReplay.GetMaxAllowedUpdateTime().Returns(1.0f);

            var replayPlayer = new ReplayPlayerControlsImplementation(gameReplay);

            replayPlayer.Play();

            replayPlayer.Seek(1.8f);

            Assert.That(replayPlayer.State, Is.EqualTo(ReplayPlayerControlsState.Seeking));

            replayPlayer.Update(0.1f);

            Assert.That(replayPlayer.GetPlaybackTime(), Is.EqualTo(1.0f));

            replayPlayer.Update(0.1f);

            Assert.That(replayPlayer.GetPlaybackTime(), Is.EqualTo(1.8f));

            Assert.That(replayPlayer.State, Is.EqualTo(ReplayPlayerControlsState.Paused));
        }
        public void TestSeekResetStateIfBeforeCurrentTime()
        {
            var gameReplay = NSubstitute.Substitute.For <GameReplayPlayer> ();

            gameReplay.GetTotalTime().Returns(100.0f);
            gameReplay.GetMaxAllowedUpdateTime().Returns(1.0f);

            var replayPlayer = new ReplayPlayerControlsImplementation(gameReplay);

            replayPlayer.Play();
            replayPlayer.Update(1.0f);

            gameReplay.ClearReceivedCalls();

            replayPlayer.Seek(0.25f);

            gameReplay.Received().Reset();

            Assert.That(replayPlayer.State, Is.EqualTo(ReplayPlayerControlsState.Seeking));
            Assert.That(replayPlayer.GetPlaybackTime(), Is.EqualTo(0.0f));
        }