blob: 2c3a5ab4663478b2b71de9d114ee1fd98ad5b7cc [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.camera.features.sensororientation;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.hardware.camera2.CameraMetadata;
import io.flutter.embedding.engine.systemchannels.PlatformChannel.DeviceOrientation;
import io.flutter.plugins.camera.CameraProperties;
import io.flutter.plugins.camera.DartMessenger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.MockedStatic;
public class SensorOrientationFeatureTest {
private MockedStatic<DeviceOrientationManager> mockedStaticDeviceOrientationManager;
private Activity mockActivity;
private CameraProperties mockCameraProperties;
private DartMessenger mockDartMessenger;
private DeviceOrientationManager mockDeviceOrientationManager;
@Before
public void before() {
mockedStaticDeviceOrientationManager = mockStatic(DeviceOrientationManager.class);
mockActivity = mock(Activity.class);
mockCameraProperties = mock(CameraProperties.class);
mockDartMessenger = mock(DartMessenger.class);
mockDeviceOrientationManager = mock(DeviceOrientationManager.class);
when(mockCameraProperties.getSensorOrientation()).thenReturn(0);
when(mockCameraProperties.getLensFacing()).thenReturn(CameraMetadata.LENS_FACING_BACK);
mockedStaticDeviceOrientationManager
.when(() -> DeviceOrientationManager.create(mockActivity, mockDartMessenger, false, 0))
.thenReturn(mockDeviceOrientationManager);
}
@After
public void after() {
mockedStaticDeviceOrientationManager.close();
}
@Test
public void ctor_shouldStartDeviceOrientationManager() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
verify(mockDeviceOrientationManager, times(1)).start();
}
@Test
public void getDebugName_shouldReturnTheNameOfTheFeature() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
assertEquals("SensorOrientationFeature", sensorOrientationFeature.getDebugName());
}
@Test
public void getValue_shouldReturnNullIfNotSet() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
assertEquals(0, (int) sensorOrientationFeature.getValue());
}
@Test
public void getValue_shouldEchoSetValue() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
sensorOrientationFeature.setValue(90);
assertEquals(90, (int) sensorOrientationFeature.getValue());
}
@Test
public void checkIsSupport_returnsTrue() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
assertTrue(sensorOrientationFeature.checkIsSupported());
}
@Test
public void getDeviceOrientationManager_shouldReturnInitializedDartOrientationManagerInstance() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
assertEquals(
mockDeviceOrientationManager, sensorOrientationFeature.getDeviceOrientationManager());
}
@Test
public void lockCaptureOrientation_shouldLockToSpecifiedOrientation() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
sensorOrientationFeature.lockCaptureOrientation(DeviceOrientation.PORTRAIT_DOWN);
assertEquals(
DeviceOrientation.PORTRAIT_DOWN, sensorOrientationFeature.getLockedCaptureOrientation());
}
@Test
public void unlockCaptureOrientation_shouldSetLockToNull() {
SensorOrientationFeature sensorOrientationFeature =
new SensorOrientationFeature(mockCameraProperties, mockActivity, mockDartMessenger);
sensorOrientationFeature.unlockCaptureOrientation();
assertNull(sensorOrientationFeature.getLockedCaptureOrientation());
}
}