diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/DataSourceContractTest.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DataSourceContractTest.java index 4bce4a11aba..c785145a537 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/DataSourceContractTest.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DataSourceContractTest.java @@ -24,7 +24,6 @@ import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -391,8 +390,10 @@ public void transferListenerCallbacks() throws Exception { for (int i = 0; i < resources.size(); i++) { additionalFailureInfo.setInfo(getFailureLabel(resources, i)); DataSource dataSource = createDataSource(); - FakeTransferListener listener = spy(new FakeTransferListener()); - dataSource.addTransferListener(listener); + TransferListener listener = mock(TransferListener.class); + ByteCountingTransferListener byteCountingTransferListener = + new ByteCountingTransferListener(listener); + dataSource.addTransferListener(byteCountingTransferListener); InOrder inOrder = Mockito.inOrder(listener); @Nullable DataSource callbackSource = getTransferListenerDataSource(); if (callbackSource == null) { @@ -430,7 +431,8 @@ public void transferListenerCallbacks() throws Exception { } // Verify sufficient onBytesTransferred() callbacks have been triggered before closing the // DataSource. - assertThat(listener.bytesTransferred).isAtLeast(resource.getExpectedBytes().length); + assertThat(byteCountingTransferListener.bytesTransferred) + .isAtLeast(resource.getExpectedBytes().length); } finally { dataSource.close(); @@ -615,23 +617,37 @@ public TestResource build() { } } - /** A {@link TransferListener} that only keeps track of the transferred bytes. */ - public static class FakeTransferListener implements TransferListener { + /** A {@link TransferListener} that keeps track of the transferred bytes. */ + private static final class ByteCountingTransferListener implements TransferListener { + + private final TransferListener transferListener; + private int bytesTransferred; + public ByteCountingTransferListener(TransferListener transferListener) { + this.transferListener = transferListener; + } + @Override - public void onTransferInitializing(DataSource source, DataSpec dataSpec, boolean isNetwork) {} + public void onTransferInitializing(DataSource source, DataSpec dataSpec, boolean isNetwork) { + transferListener.onTransferInitializing(source, dataSpec, isNetwork); + } @Override - public void onTransferStart(DataSource source, DataSpec dataSpec, boolean isNetwork) {} + public void onTransferStart(DataSource source, DataSpec dataSpec, boolean isNetwork) { + transferListener.onTransferStart(source, dataSpec, isNetwork); + } @Override public void onBytesTransferred( DataSource source, DataSpec dataSpec, boolean isNetwork, int bytesTransferred) { + transferListener.onBytesTransferred(source, dataSpec, isNetwork, bytesTransferred); this.bytesTransferred += bytesTransferred; } @Override - public void onTransferEnd(DataSource source, DataSpec dataSpec, boolean isNetwork) {} + public void onTransferEnd(DataSource source, DataSpec dataSpec, boolean isNetwork) { + transferListener.onTransferEnd(source, dataSpec, isNetwork); + } } }