blob: 194f7905b63a187bf05752472bf8697b56590754 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.videoplayer;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Format;
import io.flutter.plugin.common.EventChannel;
import io.flutter.view.TextureRegistry;
import java.util.HashMap;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class VideoPlayerTest {
private ExoPlayer fakeExoPlayer;
private EventChannel fakeEventChannel;
private TextureRegistry.SurfaceTextureEntry fakeSurfaceTextureEntry;
private VideoPlayerOptions fakeVideoPlayerOptions;
private QueuingEventSink fakeEventSink;
@Captor private ArgumentCaptor<HashMap<String, Object>> eventCaptor;
@Before
public void before() {
MockitoAnnotations.openMocks(this);
fakeExoPlayer = mock(ExoPlayer.class);
fakeEventChannel = mock(EventChannel.class);
fakeSurfaceTextureEntry = mock(TextureRegistry.SurfaceTextureEntry.class);
fakeVideoPlayerOptions = mock(VideoPlayerOptions.class);
fakeEventSink = mock(QueuingEventSink.class);
}
@Test
public void sendInitializedSendsExpectedEvent_90RotationDegrees() {
VideoPlayer videoPlayer =
new VideoPlayer(
fakeExoPlayer,
fakeEventChannel,
fakeSurfaceTextureEntry,
fakeVideoPlayerOptions,
fakeEventSink);
Format testFormat =
new Format.Builder().setWidth(100).setHeight(200).setRotationDegrees(90).build();
when(fakeExoPlayer.getVideoFormat()).thenReturn(testFormat);
when(fakeExoPlayer.getDuration()).thenReturn(10L);
videoPlayer.isInitialized = true;
videoPlayer.sendInitialized();
verify(fakeEventSink).success(eventCaptor.capture());
HashMap<String, Object> event = eventCaptor.getValue();
assertEquals(event.get("event"), "initialized");
assertEquals(event.get("duration"), 10L);
assertEquals(event.get("width"), 200);
assertEquals(event.get("height"), 100);
assertEquals(event.get("rotationCorrection"), null);
}
@Test
public void sendInitializedSendsExpectedEvent_270RotationDegrees() {
VideoPlayer videoPlayer =
new VideoPlayer(
fakeExoPlayer,
fakeEventChannel,
fakeSurfaceTextureEntry,
fakeVideoPlayerOptions,
fakeEventSink);
Format testFormat =
new Format.Builder().setWidth(100).setHeight(200).setRotationDegrees(270).build();
when(fakeExoPlayer.getVideoFormat()).thenReturn(testFormat);
when(fakeExoPlayer.getDuration()).thenReturn(10L);
videoPlayer.isInitialized = true;
videoPlayer.sendInitialized();
verify(fakeEventSink).success(eventCaptor.capture());
HashMap<String, Object> event = eventCaptor.getValue();
assertEquals(event.get("event"), "initialized");
assertEquals(event.get("duration"), 10L);
assertEquals(event.get("width"), 200);
assertEquals(event.get("height"), 100);
assertEquals(event.get("rotationCorrection"), null);
}
@Test
public void sendInitializedSendsExpectedEvent_0RotationDegrees() {
VideoPlayer videoPlayer =
new VideoPlayer(
fakeExoPlayer,
fakeEventChannel,
fakeSurfaceTextureEntry,
fakeVideoPlayerOptions,
fakeEventSink);
Format testFormat =
new Format.Builder().setWidth(100).setHeight(200).setRotationDegrees(0).build();
when(fakeExoPlayer.getVideoFormat()).thenReturn(testFormat);
when(fakeExoPlayer.getDuration()).thenReturn(10L);
videoPlayer.isInitialized = true;
videoPlayer.sendInitialized();
verify(fakeEventSink).success(eventCaptor.capture());
HashMap<String, Object> event = eventCaptor.getValue();
assertEquals(event.get("event"), "initialized");
assertEquals(event.get("duration"), 10L);
assertEquals(event.get("width"), 100);
assertEquals(event.get("height"), 200);
assertEquals(event.get("rotationCorrection"), null);
}
@Test
public void sendInitializedSendsExpectedEvent_180RotationDegrees() {
VideoPlayer videoPlayer =
new VideoPlayer(
fakeExoPlayer,
fakeEventChannel,
fakeSurfaceTextureEntry,
fakeVideoPlayerOptions,
fakeEventSink);
Format testFormat =
new Format.Builder().setWidth(100).setHeight(200).setRotationDegrees(180).build();
when(fakeExoPlayer.getVideoFormat()).thenReturn(testFormat);
when(fakeExoPlayer.getDuration()).thenReturn(10L);
videoPlayer.isInitialized = true;
videoPlayer.sendInitialized();
verify(fakeEventSink).success(eventCaptor.capture());
HashMap<String, Object> event = eventCaptor.getValue();
assertEquals(event.get("event"), "initialized");
assertEquals(event.get("duration"), 10L);
assertEquals(event.get("width"), 100);
assertEquals(event.get("height"), 200);
assertEquals(event.get("rotationCorrection"), 180);
}
}