mirror of
https://github.com/samsonjs/media.git
synced 2026-06-29 05:39:31 +00:00
Release ExoPlayer instances in ExoPlayerTest
This was recommended in https://github.com/robolectric/robolectric/issues/8187#issuecomment-1552060094 PiperOrigin-RevId: 539691757
This commit is contained in:
parent
4bceb64dee
commit
959e974138
1 changed files with 101 additions and 0 deletions
|
|
@ -271,6 +271,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(renderer.getFormatsRead()).isEmpty();
|
||||
assertThat(renderer.sampleBufferReadCount).isEqualTo(0);
|
||||
assertThat(renderer.isEnded).isFalse();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
/** Tests playback of a source that exposes a single period. */
|
||||
|
|
@ -313,6 +315,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(renderer.getFormatsRead()).containsExactly(ExoPlayerTestRunner.VIDEO_FORMAT);
|
||||
assertThat(renderer.sampleBufferReadCount).isEqualTo(1);
|
||||
assertThat(renderer.isEnded).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
/** Tests playback of a source that exposes three periods. */
|
||||
|
|
@ -349,6 +353,8 @@ public final class ExoPlayerTest {
|
|||
ExoPlayerTestRunner.VIDEO_FORMAT);
|
||||
assertThat(renderer.sampleBufferReadCount).isEqualTo(3);
|
||||
assertThat(renderer.isEnded).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
/** Tests playback of periods with very short duration. */
|
||||
|
|
@ -383,6 +389,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(renderer.getFormatsRead()).hasSize(100);
|
||||
assertThat(renderer.sampleBufferReadCount).isEqualTo(100);
|
||||
assertThat(renderer.isEnded).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -607,6 +615,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(audioRenderer.positionResetCount).isEqualTo(1);
|
||||
assertThat(videoRenderer.isEnded).isTrue();
|
||||
assertThat(audioRenderer.isEnded).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -688,6 +698,8 @@ public final class ExoPlayerTest {
|
|||
new int[] {C.FORMAT_HANDLED},
|
||||
/* trackSelected= */ new boolean[] {true})))));
|
||||
assertThat(renderer.isEnded).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -730,6 +742,8 @@ public final class ExoPlayerTest {
|
|||
.containsExactly(0, 1, 1, 2, 2, 0, 0, 0, 1, 2)
|
||||
.inOrder();
|
||||
assertThat(renderer.isEnded).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2979,6 +2993,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
assertThat(player.getPlayerError()).isNull();
|
||||
verify(secondMediaItemTarget, times(2)).handleMessage(anyInt(), any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -3174,6 +3190,8 @@ public final class ExoPlayerTest {
|
|||
// When the ad finishes, the player position should be at or after the requested seek position.
|
||||
runUntilPositionDiscontinuity(player, Player.DISCONTINUITY_REASON_AUTO_TRANSITION);
|
||||
assertThat(player.getCurrentPosition()).isAtLeast(seekPositionMs);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -3317,6 +3335,8 @@ public final class ExoPlayerTest {
|
|||
// We expect the change to null to be notified, but not onPlayerError.
|
||||
verify(mockListener).onPlayerErrorChanged(ArgumentMatchers.isNull());
|
||||
verify(mockListener, never()).onPlayerError(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -5099,6 +5119,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
// This times out if playback info updates after the seek are blocked.
|
||||
runUntilPlaybackState(player, Player.STATE_ENDED);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -5850,6 +5872,8 @@ public final class ExoPlayerTest {
|
|||
runUntilPendingCommandsAreFullyHandled(player);
|
||||
|
||||
assertThat(player.getPlayerError()).isNull();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -5936,6 +5960,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
// The player is not stuck in the buffering state.
|
||||
TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_READY);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9345,6 +9371,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(player.isCommandAvailable(COMMAND_SET_TRACK_SELECTION_PARAMETERS)).isTrue();
|
||||
assertThat(player.isCommandAvailable(COMMAND_GET_TRACKS)).isTrue();
|
||||
assertThat(player.isCommandAvailable(COMMAND_RELEASE)).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // Checking old volume commands
|
||||
|
|
@ -9358,6 +9386,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(player.isCommandAvailable(COMMAND_ADJUST_DEVICE_VOLUME)).isTrue();
|
||||
assertThat(player.isCommandAvailable(COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS)).isTrue();
|
||||
assertThat(player.isCommandAvailable(COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS)).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // Checking old volume commands
|
||||
|
|
@ -9372,6 +9402,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(player.isCommandAvailable(COMMAND_ADJUST_DEVICE_VOLUME)).isFalse();
|
||||
assertThat(player.isCommandAvailable(COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS)).isFalse();
|
||||
assertThat(player.isCommandAvailable(COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS)).isFalse();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9410,6 +9442,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(player.isCommandAvailable(COMMAND_SEEK_TO_MEDIA_ITEM)).isFalse();
|
||||
assertThat(player.isCommandAvailable(COMMAND_SEEK_BACK)).isFalse();
|
||||
assertThat(player.isCommandAvailable(COMMAND_SEEK_FORWARD)).isFalse();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9430,6 +9464,8 @@ public final class ExoPlayerTest {
|
|||
assertThat(player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM)).isFalse();
|
||||
assertThat(player.isCommandAvailable(COMMAND_SEEK_BACK)).isFalse();
|
||||
assertThat(player.isCommandAvailable(COMMAND_SEEK_FORWARD)).isFalse();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9455,6 +9491,8 @@ public final class ExoPlayerTest {
|
|||
runUntilPlaybackState(player, Player.STATE_READY);
|
||||
|
||||
assertThat(player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS)).isFalse();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9483,6 +9521,8 @@ public final class ExoPlayerTest {
|
|||
runUntilPlaybackState(player, Player.STATE_READY);
|
||||
|
||||
assertThat(player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS)).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9507,6 +9547,8 @@ public final class ExoPlayerTest {
|
|||
runUntilPlaybackState(player, Player.STATE_READY);
|
||||
|
||||
assertThat(player.isCommandAvailable(COMMAND_SEEK_TO_NEXT)).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9544,6 +9586,8 @@ public final class ExoPlayerTest {
|
|||
player.seekTo(/* mediaItemIndex= */ 3, /* positionMs= */ 0);
|
||||
verify(mockListener).onAvailableCommandsChanged(commandsWithSeekToPreviousWindow);
|
||||
verify(mockListener, times(3)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9582,6 +9626,8 @@ public final class ExoPlayerTest {
|
|||
player.seekTo(/* mediaItemIndex= */ 0, /* positionMs= */ 0);
|
||||
verify(mockListener).onAvailableCommandsChanged(commandsWithSeekToNextWindow);
|
||||
verify(mockListener, times(3)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9598,6 +9644,8 @@ public final class ExoPlayerTest {
|
|||
player.seekTo(/* mediaItemIndex= */ 0, /* positionMs= */ 100);
|
||||
// Check that there were no other calls to onAvailableCommandsChanged.
|
||||
verify(mockListener).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9657,6 +9705,8 @@ public final class ExoPlayerTest {
|
|||
runUntilPlaybackState(player, Player.STATE_ENDED);
|
||||
verify(mockListener).onAvailableCommandsChanged(commandsWithSeekInCurrentAndToPreviousWindow);
|
||||
verify(mockListener, times(4)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9679,6 +9729,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
player.addMediaSource(new FakeMediaSource());
|
||||
verify(mockListener, times(2)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9701,6 +9753,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
player.addMediaSource(/* index= */ 0, new FakeMediaSource());
|
||||
verify(mockListener, times(2)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9731,6 +9785,8 @@ public final class ExoPlayerTest {
|
|||
player.removeMediaItem(/* index= */ 0);
|
||||
verify(mockListener).onAvailableCommandsChanged(emptyTimelineCommands);
|
||||
verify(mockListener, times(3)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9762,6 +9818,8 @@ public final class ExoPlayerTest {
|
|||
player.removeMediaItem(/* index= */ 0);
|
||||
verify(mockListener).onAvailableCommandsChanged(emptyTimelineCommands);
|
||||
verify(mockListener, times(3)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9781,6 +9839,8 @@ public final class ExoPlayerTest {
|
|||
player.removeMediaItem(/* index= */ 0);
|
||||
verify(mockListener).onAvailableCommandsChanged(defaultCommands);
|
||||
verify(mockListener, times(2)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9803,6 +9863,8 @@ public final class ExoPlayerTest {
|
|||
player.setRepeatMode(Player.REPEAT_MODE_ALL);
|
||||
verify(mockListener).onAvailableCommandsChanged(commandsWithSeekToPreviousAndNextWindow);
|
||||
verify(mockListener, times(2)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9817,6 +9879,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
player.setRepeatMode(Player.REPEAT_MODE_ONE);
|
||||
verify(mockListener).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9843,6 +9907,8 @@ public final class ExoPlayerTest {
|
|||
player.setShuffleModeEnabled(true);
|
||||
verify(mockListener).onAvailableCommandsChanged(commandsWithSeekToPreviousWindow);
|
||||
verify(mockListener, times(2)).onAvailableCommandsChanged(any());
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9870,6 +9936,8 @@ public final class ExoPlayerTest {
|
|||
.uid;
|
||||
assertThat(error.mediaPeriodId.periodUid).isEqualTo(period1Uid);
|
||||
assertThat(player.getCurrentMediaItemIndex()).isEqualTo(1);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9916,6 +9984,8 @@ public final class ExoPlayerTest {
|
|||
.uid;
|
||||
assertThat(error.mediaPeriodId.periodUid).isEqualTo(period1Uid);
|
||||
assertThat(player.getCurrentMediaItemIndex()).isEqualTo(1);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -9979,6 +10049,8 @@ public final class ExoPlayerTest {
|
|||
.uid;
|
||||
assertThat(error.mediaPeriodId.periodUid).isEqualTo(period1Uid);
|
||||
assertThat(player.getCurrentMediaItemIndex()).isEqualTo(1);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10030,6 +10102,8 @@ public final class ExoPlayerTest {
|
|||
inOrderEvents
|
||||
.verify(mockListener)
|
||||
.onMediaItemTransition(any(), any(), eq(Player.MEDIA_ITEM_TRANSITION_REASON_AUTO));
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10059,6 +10133,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
runUntilSleepingForOffload(player, /* expectedSleepForOffload= */ true);
|
||||
assertThat(player.experimentalIsSleepingForOffload()).isTrue();
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10079,6 +10155,8 @@ public final class ExoPlayerTest {
|
|||
runUntilSleepingForOffload(player, /* expectedSleepForOffload= */ false);
|
||||
assertThat(player.experimentalIsSleepingForOffload()).isFalse();
|
||||
runUntilPlaybackState(player, Player.STATE_ENDED);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10097,6 +10175,8 @@ public final class ExoPlayerTest {
|
|||
runUntilSleepingForOffload(player, /* expectedSleepForOffload= */ false);
|
||||
assertThat(player.experimentalIsSleepingForOffload()).isFalse();
|
||||
runUntilPlaybackState(player, Player.STATE_ENDED);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10121,6 +10201,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
assertThat(newPosition - currentPosition).isNotEqualTo(0);
|
||||
assertThat(newPosition).isEqualTo(800);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10146,6 +10228,8 @@ public final class ExoPlayerTest {
|
|||
long currentPosition = player.getCurrentPosition();
|
||||
|
||||
assertThat(currentPosition).isEqualTo(800);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10173,6 +10257,8 @@ public final class ExoPlayerTest {
|
|||
long currentPosition = player.getCurrentPosition();
|
||||
|
||||
assertThat(currentPosition).isEqualTo(1800);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -10400,6 +10486,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
verify(mockListener)
|
||||
.onPlaybackParametersChanged(new PlaybackParameters(/* speed= */ 2, /* pitch= */ 2));
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -12361,6 +12449,8 @@ public final class ExoPlayerTest {
|
|||
.build());
|
||||
|
||||
assertThat(player.getMediaMetadata()).isEqualTo(mediaMetadata);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -12386,12 +12476,15 @@ public final class ExoPlayerTest {
|
|||
shadowOf(Looper.getMainLooper()).idle();
|
||||
|
||||
assertThat(player.getMediaMetadata()).isEqualTo(mediaMetadata);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(sdk = Config.ALL_SDKS)
|
||||
public void builder_inBackgroundThreadWithAllowedAnyThreadMethods_doesNotThrow()
|
||||
throws Exception {
|
||||
AtomicReference<Player> playerReference = new AtomicReference<>();
|
||||
Thread builderThread =
|
||||
new Thread(
|
||||
() -> {
|
||||
|
|
@ -12403,6 +12496,7 @@ public final class ExoPlayerTest {
|
|||
player.getClock();
|
||||
player.getApplicationLooper();
|
||||
player.getPlaybackLooper();
|
||||
playerReference.set(player);
|
||||
});
|
||||
AtomicReference<Throwable> builderThrow = new AtomicReference<>();
|
||||
builderThread.setUncaughtExceptionHandler((thread, throwable) -> builderThrow.set(throwable));
|
||||
|
|
@ -12411,6 +12505,7 @@ public final class ExoPlayerTest {
|
|||
builderThread.join();
|
||||
|
||||
assertThat(builderThrow.get()).isNull();
|
||||
playerReference.get().release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -12427,6 +12522,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
verify(playerListener).onPlaylistMetadataChanged(mediaMetadata);
|
||||
verify(analyticsListener).onPlaylistMetadataChanged(any(), eq(mediaMetadata));
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -12633,6 +12730,8 @@ public final class ExoPlayerTest {
|
|||
|
||||
assertThat(minVolume).isEqualTo(0);
|
||||
assertThat(maxVolume).isEqualTo(0);
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -12653,6 +12752,8 @@ public final class ExoPlayerTest {
|
|||
runUntilPlaybackState(player, Player.STATE_ENDED);
|
||||
|
||||
// Assert that playing works without getting stuck due to the memory used by the back buffer.
|
||||
|
||||
player.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Reference in a new issue