private void assertIsInPlaybackState() throws IllegalStateException { if (!playbackStateChecker.isInPlaybackState(mediaPlayer, currentState)) { throw new IllegalStateException("Video must be loaded and not in an error state before trying to interact with the player"); } }
boolean isPlaying(MediaPlayer mediaPlayer, PlaybackState playbackState) { return isInPlaybackState(mediaPlayer, playbackState) && mediaPlayer.isPlaying(); }
@Test public void givenMediaPlayerIsNotInPlaybackState_whenPausing_thenThrowsIllegalStateException() { thrown.expect(ExceptionMatcher.matches(ERROR_MESSAGE, IllegalStateException.class)); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_NOT_IN_PLAYBACK_STATE); facade.pause(); verify(mediaPlayer).pause(); }
@Test public void givenMediaPlayerIsInPlaybackState_whenSeeking_thenSeeksToPosition() { givenMediaPlayerIsPrepared(); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_IN_PLAYBACK_STATE); facade.seekTo(TEN_SECONDS_IN_MILLIS); verify(mediaPlayer).seekTo(TEN_SECONDS_IN_MILLIS); }
@Test public void givenMediaPlayerIsNotInPlaybackState_whenSettingOnSeekCompleteListener_thenThrowsIllegalStateException() { thrown.expect(ExceptionMatcher.matches(ERROR_MESSAGE, IllegalStateException.class)); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_NOT_IN_PLAYBACK_STATE); facade.setOnSeekCompleteListener(mock(MediaPlayer.OnSeekCompleteListener.class)); }
@Test public void givenMediaPlayerIsNotInPlaybackState_whenGettingSubtitleTracks_thenThrowsIllegalStateException() { thrown.expect(ExceptionMatcher.matches(ERROR_MESSAGE, IllegalStateException.class)); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_NOT_IN_PLAYBACK_STATE); facade.getSubtitleTracks(); }
@Test public void givenMediaPlayerIsNotInPlaybackState_whenGettingPosition_thenThrowsIllegalStateException() { thrown.expect(ExceptionMatcher.matches(ERROR_MESSAGE, IllegalStateException.class)); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_NOT_IN_PLAYBACK_STATE); facade.currentPositionInMillis(); }
@Test public void givenMediaPlayerIsNotInPlaybackState_whenGettingDuration_thenThrowsIllegalStateException() { thrown.expect(ExceptionMatcher.matches(ERROR_MESSAGE, IllegalStateException.class)); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_NOT_IN_PLAYBACK_STATE); facade.mediaDurationInMillis(); }
@Test public void givenMediaPlayerIsNotInPlaybackState_whenSeeking_thenThrowsIllegalStateException() { thrown.expect(ExceptionMatcher.matches(ERROR_MESSAGE, IllegalStateException.class)); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_NOT_IN_PLAYBACK_STATE); facade.seekTo(TEN_SECONDS_IN_MILLIS); }
@Test public void givenMediaPlayerIsNotInPlaybackState_whenClearingSubtitleTrack_thenThrowsIllegalStateException() { thrown.expect(ExceptionMatcher.matches(ERROR_MESSAGE, IllegalStateException.class)); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_NOT_IN_PLAYBACK_STATE); facade.clearSubtitleTrack(); }
@Test public void whenCheckingIsPlaying_thenReturnsExpectedState() { PlaybackStateChecker playbackStateChecker = new PlaybackStateChecker(); boolean inPlaybackState = playbackStateChecker.isInPlaybackState(mediaPlayer, playbackState); assertThat(inPlaybackState).isEqualTo(expectedIsPlaying); } }
@Test public void whenCheckingIsInPlaybackState_thenReturnsExpectedState() { PlaybackStateChecker playbackStateChecker = new PlaybackStateChecker(); boolean inPlaybackState = playbackStateChecker.isInPlaybackState(mediaPlayer, playbackState); assertThat(inPlaybackState).isEqualTo(expectedIsInPlaybackState); } }
@Test public void givenMediaPlayerIsInPlaybackState_whenGettingPosition_thenReturnsPosition() { givenMediaPlayerIsPrepared(); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_IN_PLAYBACK_STATE); given(mediaPlayer.getCurrentPosition()).willReturn(ANY_POSITION); int currentPosition = facade.currentPositionInMillis(); assertThat(currentPosition).isEqualTo(ANY_POSITION); }
@Test public void givenMediaPlayerIsInPlaybackState_whenGettingDuration_thenReturnsDuration() { givenMediaPlayerIsPrepared(); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))) .willReturn(IS_IN_PLAYBACK_STATE); given(mediaPlayer.getDuration()).willReturn(ANY_DURATION); int duration = facade.mediaDurationInMillis(); assertThat(duration).isEqualTo(ANY_DURATION); }
@Before public void setUp() { NoPlayerLog.setLoggingEnabled(false); facade = new AndroidMediaPlayerFacade(context, forwarder, audioManager, trackSelector, playbackStateChecker, mediaPlayerCreator); given(mediaPlayerCreator.createMediaPlayer()).willReturn(mediaPlayer); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))).willReturn(IS_IN_PLAYBACK_STATE); eitherSurface = Either.left(surface); givenSurfaceRequesterReturns(eitherSurface); given(forwarder.onPreparedListener()).willReturn(preparedListener); given(forwarder.onCompletionListener()).willReturn(completionListener); given(forwarder.onErrorListener()).willReturn(errorListener); given(forwarder.onSizeChangedListener()).willReturn(videoSizeChangedListener); }