diff options
Diffstat (limited to 'tree/library/core/src/test/java/com/google/android/exoplayer2/PlayerMessageTest.java')
-rw-r--r-- | tree/library/core/src/test/java/com/google/android/exoplayer2/PlayerMessageTest.java | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/tree/library/core/src/test/java/com/google/android/exoplayer2/PlayerMessageTest.java b/tree/library/core/src/test/java/com/google/android/exoplayer2/PlayerMessageTest.java deleted file mode 100644 index 874a8c5a..00000000 --- a/tree/library/core/src/test/java/com/google/android/exoplayer2/PlayerMessageTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.android.exoplayer2; - -import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.fail; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.mockito.MockitoAnnotations.initMocks; - -import android.os.Handler; -import android.os.HandlerThread; -import androidx.test.ext.junit.runners.AndroidJUnit4; -import com.google.android.exoplayer2.util.Clock; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.Mockito; - -/** Unit test for {@link PlayerMessage}. */ -@RunWith(AndroidJUnit4.class) -public class PlayerMessageTest { - - private static final long TIMEOUT_MS = 10; - - @Mock Clock clock; - private HandlerThread handlerThread; - private PlayerMessage message; - - @Before - public void setUp() { - initMocks(this); - PlayerMessage.Sender sender = (message) -> {}; - PlayerMessage.Target target = (messageType, payload) -> {}; - handlerThread = new HandlerThread("TestHandler"); - handlerThread.start(); - Handler handler = new Handler(handlerThread.getLooper()); - message = - new PlayerMessage(sender, target, Timeline.EMPTY, /* defaultWindowIndex= */ 0, handler); - } - - @After - public void tearDown() { - handlerThread.quit(); - } - - @Test - public void experimental_blockUntilDelivered_timesOut() throws Exception { - when(clock.elapsedRealtime()).thenReturn(0L).thenReturn(TIMEOUT_MS * 2); - - try { - message.send().experimental_blockUntilDelivered(TIMEOUT_MS, clock); - fail(); - } catch (TimeoutException expected) { - } - - // Ensure experimental_blockUntilDelivered() entered the blocking loop - verify(clock, Mockito.times(2)).elapsedRealtime(); - } - - @Test - public void experimental_blockUntilDelivered_onAlreadyProcessed_succeeds() throws Exception { - when(clock.elapsedRealtime()).thenReturn(0L); - - message.send().markAsProcessed(/* isDelivered= */ true); - - assertThat(message.experimental_blockUntilDelivered(TIMEOUT_MS, clock)).isTrue(); - } - - @Test - public void experimental_blockUntilDelivered_markAsProcessedWhileBlocked_succeeds() - throws Exception { - message.send(); - - // Use a separate Thread to mark the message as processed. - CountDownLatch prepareLatch = new CountDownLatch(1); - ExecutorService executorService = Executors.newSingleThreadExecutor(); - Future<Boolean> future = - executorService.submit( - () -> { - prepareLatch.await(); - message.markAsProcessed(true); - return true; - }); - - when(clock.elapsedRealtime()) - .thenReturn(0L) - .then( - (invocation) -> { - // Signal the background thread to call PlayerMessage#markAsProcessed. - prepareLatch.countDown(); - return TIMEOUT_MS - 1; - }); - - try { - assertThat(message.experimental_blockUntilDelivered(TIMEOUT_MS, clock)).isTrue(); - // Ensure experimental_blockUntilDelivered() entered the blocking loop. - verify(clock, Mockito.atLeast(2)).elapsedRealtime(); - future.get(1, TimeUnit.SECONDS); - } finally { - executorService.shutdown(); - } - } -} |