@Test public void whenPausing_thenNotifiesStateChangedListenersThatVideoIsPaused() { player.pause(); verify(stateChangedListener).onVideoPaused(); }
@Test public void givenAttachedPlayerView_whenReleasing_thenPlayerResourcesAreReleased() { player.attach(playerView); player.release(); verify(delayedActionExecutor).clearAllActions(); verify(listenersHolder).resetState(); verify(stateChangedListener).onVideoStopped(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(mediaPlayer).release(); verify(containerView).setVisibility(View.GONE); verify(listenersHolder).clear(); } }
@Test public void givenInitialised_whenCallingOnError_thenPlayerResourcesAreReleased_andNotListeners() { player.initialise(); ArgumentCaptor<NoPlayer.ErrorListener> errorListenerCaptor = ArgumentCaptor.forClass(NoPlayer.ErrorListener.class); verify(listenersHolder).addErrorListener(errorListenerCaptor.capture()); NoPlayer.ErrorListener errorListener = errorListenerCaptor.getValue(); errorListener.onError(mock(NoPlayer.PlayerError.class)); verify(delayedActionExecutor).clearAllActions(); verify(listenersHolder).resetState(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(mediaPlayer).release(); verify(listenersHolder, never()).clear(); verify(stateChangedListener, never()).onVideoStopped(); }
@Test public void givenAttachedPlayerView_whenStopping_thenPlayerResourcesAreReleased_andNotListeners() { player.attach(playerView); player.stop(); verify(delayedActionExecutor).clearAllActions(); verify(listenersHolder).resetState(); verify(stateChangedListener).onVideoStopped(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(mediaPlayer).release(); verify(containerView).setVisibility(View.GONE); verify(listenersHolder, never()).clear(); }
@Test public void givenPlayerIsInitialised_whenVideoHasError_thenPlayerResourcesAreReleased_andNotListeners() { player.initialise(); ArgumentCaptor<NoPlayer.ErrorListener> argumentCaptor = ArgumentCaptor.forClass(NoPlayer.ErrorListener.class); verify(listenersHolder).addErrorListener(argumentCaptor.capture()); NoPlayer.ErrorListener errorListener = argumentCaptor.getValue(); errorListener.onError(mock(NoPlayer.PlayerError.class)); verify(listenersHolder).resetState(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(exoPlayerFacade).release(); verify(listenersHolder, never()).clear(); verify(stateChangedListener, never()).onVideoStopped(); }
@Override public void onVideoStopped() { if (currentState == State.STOPPED) { NoPlayerLog.e("Tried calling onVideoStopped() but video has already stopped."); return; } for (NoPlayer.StateChangedListener listener : listeners) { listener.onVideoStopped(); } currentState = State.STOPPED; } }
@Override public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { if (playbackState == Player.STATE_ENDED) { stateChangedListener.onVideoStopped(); } }
@Test public void givenPlayerHasPlayedVideo_whenLoadingVideoWithTimeout_thenPlayerResourcesAreReleased_andNotListeners() { given(exoPlayerFacade.hasPlayedContent()).willReturn(true); player.attach(playerView); player.loadVideoWithTimeout(URI, OPTIONS, ANY_TIMEOUT, ANY_LOAD_TIMEOUT_CALLBACK); verify(stateChangedListener).onVideoStopped(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(exoPlayerFacade).release(); verify(listenersHolder, never()).clear(); }
@Test public void givenPlayerHasPlayedVideo_whenLoadingVideo_thenPlayerIsReleased_andNotListeners() { given(exoPlayerFacade.hasPlayedContent()).willReturn(true); player.attach(playerView); player.loadVideo(URI, OPTIONS); verify(stateChangedListener).onVideoStopped(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(exoPlayerFacade).release(); verify(listenersHolder, never()).clear(); }
@Override public void onCompletion(MediaPlayer mp) { stateChangedListener.onVideoStopped(); } }
@Test public void whenDoubleCallingOnVideoStopped_thenEmitsOnlyFirstOnVideoStoppedEvent() { stateChangedListeners.onVideoStopped(); stateChangedListeners.onVideoStopped(); verify(stateChangedListener).onVideoStopped(); } }
@Override public void stop() { reset(); listenersHolder.getStateChangedListeners().onVideoStopped(); }
@Test public void givenPlayerIsAlreadyPlaying_whenPlaying_thenNotifiesVideoPlaying() { given(mediaPlayer.isPlaying()).willReturn(IS_NOT_PLAYING); player.play(); verify(stateChangedListener).onVideoPlaying(); }
@Test public void whenStartingPlayAtVideoPosition_thenNotifiesStateListenersThatVideoIsPlaying() { given(mediaPlayer.currentPositionInMillis()).willReturn((int) BEGINNING_POSITION); player.playAt(BEGINNING_POSITION); verify(stateChangedListener).onVideoPlaying(); }
@Test public void whenStartingPlayAtVideoPosition_thenNotifiesStateListenersThatVideoIsPlaying() { player.playAt(TWO_MINUTES_IN_MILLIS); verify(stateChangedListener).onVideoPlaying(); }
@Test public void whenDoubleCallingOnVideoPlaying_thenEmitsOnlyFirstOnVideoPlayingEvent() { stateChangedListeners.onVideoPlaying(); stateChangedListeners.onVideoPlaying(); verify(stateChangedListener).onVideoPlaying(); }
@Test public void whenDoubleCallingOnVideoPaused_thenEmitsOnlyFirstOnVideoPausedEvent() { stateChangedListeners.onVideoPaused(); stateChangedListeners.onVideoPaused(); verify(stateChangedListener).onVideoPaused(); }
@Test public void givenPlayerHasNotPlayedVideo_whenLoadingVideoWithTimeout_thenPlayerResourcesAreNotReleased() { given(mediaPlayer.hasPlayedContent()).willReturn(false); player.loadVideoWithTimeout(URI, OPTIONS, ANY_TIMEOUT, ANY_LOAD_TIMEOUT_CALLBACK); verify(stateChangedListener, never()).onVideoStopped(); verify(loadTimeout, never()).cancel(); verify(heart, never()).stopBeatingHeart(); verify(mediaPlayer, never()).release(); }
@Test public void givenPlayerHasPlayedVideo_whenLoadingVideoWithTimeout_thenPlayerResourcesAreReleased_andNotListeners() { given(mediaPlayer.hasPlayedContent()).willReturn(true); player.loadVideoWithTimeout(URI, OPTIONS, ANY_TIMEOUT, ANY_LOAD_TIMEOUT_CALLBACK); verify(stateChangedListener).onVideoStopped(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(mediaPlayer).release(); verify(listenersHolder, never()).clear(); }
@Test public void givenPlayerHasPlayedVideo_whenLoadingVideo_thenPlayerIsReleased_andNotListeners() { given(mediaPlayer.hasPlayedContent()).willReturn(true); player.loadVideo(URI, OPTIONS); verify(stateChangedListener).onVideoStopped(); verify(loadTimeout).cancel(); verify(heart).stopBeatingHeart(); verify(mediaPlayer).release(); verify(listenersHolder, never()).clear(); }