public NoPlayer createExoPlayer(Context context, DrmSessionCreator drmSessionCreator, boolean downgradeSecureDecoder) { ExoPlayerTwoImpl player = internalCreator.create(context, drmSessionCreator, downgradeSecureDecoder); player.initialise(); return player; }
@Test public void whenCreatingExoPlayerTwo_thenInitialisesPlayer() { creator.createExoPlayer(context, drmSessionCreator, USE_SECURE_CODEC); verify(player).initialise(); } }
@Test public void whenInitialisingPlayer_thenBindsHeart() { player.initialise(); verify(listenersHolder).getHeartbeatCallbacks(); verify(heart).bind(any(Heart.Heartbeat.class)); }
@Test public void givenPlayerIsInitialised_whenVideoIsPrepared_thenCancelsTimeout() { player.initialise(); ArgumentCaptor<NoPlayer.PreparedListener> argumentCaptor = ArgumentCaptor.forClass(NoPlayer.PreparedListener.class); verify(listenersHolder).addPreparedListener(argumentCaptor.capture()); NoPlayer.PreparedListener preparedListener = argumentCaptor.getValue(); preparedListener.onPrepared(player); verify(loadTimeout).cancel(); }
@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(); }
@Test public void givenPlayerIsInitialised_whenAttachingPlayerView_thenAddsPlayerViewVideoSizeChangedListenerToListenersHolder() { player.initialise(); player.attach(playerView); ArgumentCaptor<NoPlayer.VideoSizeChangedListener> argumentCaptor = ArgumentCaptor.forClass(NoPlayer.VideoSizeChangedListener.class); verify(listenersHolder, times(2)).addVideoSizeChangedListener(argumentCaptor.capture()); NoPlayer.VideoSizeChangedListener videoSizeChangedListener = argumentCaptor.getAllValues().get(1); assertThat(videoSizeChangedListener).isSameAs(playerView.getVideoSizeChangedListener()); }
@Test public void whenInitialisingPlayer_thenBindsListenersToForwarder() { player.initialise(); verify(forwarder).bind(preparedListener, player); verify(forwarder).bind(completionListener, stateChangedListener); verify(forwarder).bind(errorListener); verify(forwarder).bind(bufferStateListener); verify(forwarder).bind(videoSizeChangedListener); verify(forwarder).bind(bitrateChangedListener); verify(forwarder).bind(infoListener); }
@Test public void givenPlayerIsInitialised_andPlayerViewIsAttached_whenVideoSizeChanges_thenPlayerVideoWidthAndHeightMatches() { player.initialise(); player.attach(playerView); ArgumentCaptor<NoPlayer.VideoSizeChangedListener> argumentCaptor = ArgumentCaptor.forClass(NoPlayer.VideoSizeChangedListener.class); verify(listenersHolder, times(2)).addVideoSizeChangedListener(argumentCaptor.capture()); NoPlayer.VideoSizeChangedListener videoSizeChangedListener = argumentCaptor.getAllValues().get(INDEX_INTERNAL_VIDEO_SIZE_CHANGED_LISTENER); videoSizeChangedListener.onVideoSizeChanged(WIDTH, HEIGHT, ANY_ROTATION_DEGREES, ANY_PIXEL_WIDTH_HEIGHT); int actualWidth = player.videoWidth(); int actualHeight = player.videoHeight(); assertThat(actualWidth).isEqualTo(WIDTH); assertThat(actualHeight).isEqualTo(HEIGHT); }