From c90d4fd371c42ba780a39e961251ea28d3fd2621 Mon Sep 17 00:00:00 2001 From: ibaker Date: Thu, 26 Aug 2021 12:23:06 +0100 Subject: [PATCH] Rollback of https://github.com/google/ExoPlayer/commit/557a1833f7e36ef3bb8cdaeab3ba2c74a536d3b9 *** Original commit *** Avoid adding spy to list in DataSourceContractTests After the fix in https://github.com/mockito/mockito/issues/2331, the calls to equals on the fake transfer listener (due to its use in a list of listeners) are treated as interactions with it, meaning that the current verification of 'no more interactions' will fail. This change makes the transfer listener used for testing count bytes then delegate to another (mock) transfer listener that's passed in to avoid the problem. *** PiperOrigin-RevId: 393093785 --- .../testutil/DataSourceContractTest.java | 34 +++++-------------- 1 file changed, 9 insertions(+), 25 deletions(-) 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 78bb5ff4ccd..12117e121b2 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,6 +24,7 @@ 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; @@ -389,10 +390,8 @@ public void transferListenerCallbacks() throws Exception { for (int i = 0; i < resources.size(); i++) { additionalFailureInfo.setInfo(getFailureLabel(resources, i)); DataSource dataSource = createDataSource(); - TransferListener listener = mock(TransferListener.class); - ByteCountingTransferListener byteCountingTransferListener = - new ByteCountingTransferListener(listener); - dataSource.addTransferListener(byteCountingTransferListener); + FakeTransferListener listener = spy(new FakeTransferListener()); + dataSource.addTransferListener(listener); InOrder inOrder = Mockito.inOrder(listener); @Nullable DataSource callbackSource = getTransferListenerDataSource(); if (callbackSource == null) { @@ -430,8 +429,7 @@ public void transferListenerCallbacks() throws Exception { } // Verify sufficient onBytesTransferred() callbacks have been triggered before closing the // DataSource. - assertThat(byteCountingTransferListener.bytesTransferred) - .isAtLeast(resource.getExpectedBytes().length); + assertThat(listener.bytesTransferred).isAtLeast(resource.getExpectedBytes().length); } finally { dataSource.close(); @@ -616,37 +614,23 @@ public TestResource build() { } } - /** A {@link TransferListener} that keeps track of the transferred bytes. */ - private static final class ByteCountingTransferListener implements TransferListener { - - private final TransferListener transferListener; - + /** A {@link TransferListener} that only keeps track of the transferred bytes. */ + public static class FakeTransferListener implements TransferListener { private int bytesTransferred; - public ByteCountingTransferListener(TransferListener transferListener) { - this.transferListener = transferListener; - } - @Override - public void onTransferInitializing(DataSource source, DataSpec dataSpec, boolean isNetwork) { - transferListener.onTransferInitializing(source, dataSpec, isNetwork); - } + public void onTransferInitializing(DataSource source, DataSpec dataSpec, boolean isNetwork) {} @Override - public void onTransferStart(DataSource source, DataSpec dataSpec, boolean isNetwork) { - transferListener.onTransferStart(source, dataSpec, isNetwork); - } + public void onTransferStart(DataSource source, DataSpec dataSpec, boolean 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) { - transferListener.onTransferEnd(source, dataSpec, isNetwork); - } + public void onTransferEnd(DataSource source, DataSpec dataSpec, boolean isNetwork) {} } }