public void PauseAfterResume_UpdatesAllValues() { // Arrange var firstPlayDuration = 65; var pauseDuration = 20; var secondPlayDuration = 10; var firstPauseAt = _startTime.AddSeconds(firstPlayDuration); var resumeAt = firstPauseAt.AddSeconds(pauseDuration); var secondPauseAt = resumeAt.AddSeconds(secondPlayDuration); var mockCurrentDateTime = new Mock <ICurrentDateTime>(); mockCurrentDateTime.SetupSequence(c => c.Get()) .Returns(_startTime) .Returns(firstPauseAt) .Returns(resumeAt) .Returns(secondPauseAt); var sut = new PlayProgressTracker(mockCurrentDateTime.Object); // Act sut.StartNewTrack(TotalTrackDuration); sut.Stop(); sut.Resume(); sut.Stop(); // Assert sut.RemainingSeconds.Should().Be(TotalTrackDuration - firstPlayDuration - secondPlayDuration); sut.TotalTrackDurationInSeconds.Should().Be(TotalTrackDuration); sut.SecondsOfTrackPlayed.Should().Be(firstPlayDuration + secondPlayDuration); }
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 Stop_UpdatesSecondsOfTrackPlayed() { // Arrange var stopAt = _startTime.AddSeconds(TotalTrackDuration); var mockCurrentDateTime = new Mock <ICurrentDateTime>(); mockCurrentDateTime.SetupSequence(c => c.Get()) .Returns(_startTime) .Returns(stopAt); var sut = new PlayProgressTracker(mockCurrentDateTime.Object); // Act sut.StartNewTrack(TotalTrackDuration); sut.Stop(); // Assert sut.RemainingSeconds.Should().Be(0); sut.TotalTrackDurationInSeconds.Should().Be(TotalTrackDuration); sut.SecondsOfTrackPlayed.Should().Be(TotalTrackDuration); }