public void PauseAfterSkipToPercentage_UpdatesAllValues()
        {
            // Arrange
            var firstPlayDuration   = 65;
            var secondPlayDuration  = 10;
            var percentageSkippedTo = 85;
            var secondsSkippedTo    = TotalTrackDuration * percentageSkippedTo / 100;

            var skipAt  = _startTime.AddSeconds(firstPlayDuration);
            var pauseAt = skipAt.AddSeconds(secondPlayDuration);

            var mockCurrentDateTime = new Mock <ICurrentDateTime>();

            mockCurrentDateTime.SetupSequence(c => c.Get())
            .Returns(_startTime)
            .Returns(skipAt)
            .Returns(pauseAt);

            var sut = new PlayProgressTracker(mockCurrentDateTime.Object);

            // Act
            sut.StartNewTrack(TotalTrackDuration);
            sut.SkipToPercentage(percentageSkippedTo);
            sut.Stop();

            // Assert
            sut.RemainingSeconds.Should().Be(TotalTrackDuration - secondsSkippedTo - secondPlayDuration);
            sut.TotalTrackDurationInSeconds.Should().Be(TotalTrackDuration);
            sut.SecondsOfTrackPlayed.Should().Be(secondsSkippedTo + secondPlayDuration);
        }
        public void SkipToPercentage_UpdatesAllValues()
        {
            // Arrange
            var percentageSkippedTo = 34;
            var secondsSkippedTo    = TotalTrackDuration * percentageSkippedTo / 100;

            var mockCurrentDateTime = new Mock <ICurrentDateTime>();
            var sut = new PlayProgressTracker(mockCurrentDateTime.Object);

            // Act
            sut.StartNewTrack(TotalTrackDuration);
            sut.SkipToPercentage(percentageSkippedTo);

            // Assert
            sut.RemainingSeconds.Should().Be(TotalTrackDuration - secondsSkippedTo);
            sut.TotalTrackDurationInSeconds.Should().Be(TotalTrackDuration);
            sut.SecondsOfTrackPlayed.Should().Be(secondsSkippedTo);
        }