public NoPlayer createMediaPlayer(Context context) { AndroidMediaPlayerImpl player = internalCreator.create(context); player.initialise(); return player; }
@Test public void whenInitialising_thenBindsHeart() { player.initialise(); verify(heart).bind(any(Heart.Heartbeat.class)); }
@Test public void whenCreatingMediaPlayer_thenInitialisesPlayer() { creator.createMediaPlayer(context); verify(player).initialise(); } }
@Test public void givenInitialised_whenCallingOnError_thenCancelsTimeout() { 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(loadTimeout).cancel(); }
@Test public void whenInitialising_thenBindsListenerToBufferHeartbeatCallback() { player.initialise(); verify(checkBufferHeartbeatCallback).bind(bufferListener); }
@Test public void whenInitialising_thenBindsHeartbeatCallbackToListenerHolder() { player.initialise(); verify(listenersHolder).addHeartbeatCallback(checkBufferHeartbeatCallback); }
@Test public void givenInitialised_whenCallingOnPrepared_thenSetsOnSeekCompleteListener() { player.initialise(); ArgumentCaptor<NoPlayer.PreparedListener> preparedListenerCaptor = ArgumentCaptor.forClass(NoPlayer.PreparedListener.class); verify(listenersHolder).addPreparedListener(preparedListenerCaptor.capture()); NoPlayer.PreparedListener preparedListener = preparedListenerCaptor.getValue(); preparedListener.onPrepared(player); verify(mediaPlayer).setOnSeekCompleteListener(any(MediaPlayer.OnSeekCompleteListener.class)); }
@Test public void givenInitialised_whenCallingOnPrepared_thenCancelsTimeout() { player.initialise(); ArgumentCaptor<NoPlayer.PreparedListener> preparedListenerCaptor = ArgumentCaptor.forClass(NoPlayer.PreparedListener.class); verify(listenersHolder).addPreparedListener(preparedListenerCaptor.capture()); NoPlayer.PreparedListener preparedListener = preparedListenerCaptor.getValue(); preparedListener.onPrepared(player); verify(loadTimeout).cancel(); }
@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 whenInitialising_thenBindsListenersToForwarder() { player.initialise(); verify(forwarder).bind(preparedListener, player); verify(forwarder).bind(bufferStateListener, errorListener); verify(forwarder).bind(completionListener, stateChangedListener); verify(forwarder).bind(videoSizeChangedListener); verify(forwarder).bind(infoListener); }
@Test public void givenInitialised_whenCallingOnVideoSizeChanged_thenVideoWidthAndHeightMatches() { player.initialise(); ArgumentCaptor<NoPlayer.VideoSizeChangedListener> videoSizeChangedListenerCaptor = ArgumentCaptor.forClass(NoPlayer.VideoSizeChangedListener.class); verify(listenersHolder).addVideoSizeChangedListener(videoSizeChangedListenerCaptor.capture()); NoPlayer.VideoSizeChangedListener videoSizeChangedListener = videoSizeChangedListenerCaptor.getValue(); videoSizeChangedListener.onVideoSizeChanged(WIDTH, HEIGHT, ANY_ROTATION_DEGREES, ANY_PIXEL_WIDTH_HEIGHT); assertThat(player.videoWidth()).isEqualTo(WIDTH); assertThat(player.videoHeight()).isEqualTo(HEIGHT); }