package org.robolectric.shadows;
import android.graphics.ImageFormat;
import android.hardware.Camera;
import org.assertj.core.util.Lists;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Shadows;
import org.robolectric.TestRunners;
import org.robolectric.shadow.api.Shadow;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(TestRunners.MultiApiSelfTest.class)
public class ShadowCameraParametersTest {
private Camera.Parameters parameters;
private ShadowCamera.ShadowParameters shadowParameters;
@Before
public void setUp() throws Exception {
parameters = Shadow.newInstanceOf(Camera.Parameters.class);
shadowParameters = Shadows.shadowOf(parameters);
}
@Test
public void testPictureSize() throws Exception {
assertThat(shadowParameters.getPictureHeight()).isNotEqualTo((600));
assertThat(shadowParameters.getPictureWidth()).isNotEqualTo((800));
parameters.setPictureSize(800, 600);
Camera.Size pictureSize = parameters.getPictureSize();
assertThat(pictureSize.width).isEqualTo(800);
assertThat(pictureSize.height).isEqualTo(600);
assertThat(shadowParameters.getPictureHeight()).isEqualTo(600);
assertThat(shadowParameters.getPictureWidth()).isEqualTo(800);
}
@Test
public void testPreviewFpsRange() throws Exception {
int[] fpsRange = new int[2];
parameters.getPreviewFpsRange(fpsRange);
assertThat(fpsRange[1]).isNotEqualTo((15));
assertThat(fpsRange[0]).isNotEqualTo((25));
parameters.setPreviewFpsRange(15, 25);
parameters.getPreviewFpsRange(fpsRange);
assertThat(fpsRange[1]).isEqualTo(25);
assertThat(fpsRange[0]).isEqualTo(15);
}
@Test
public void testPreviewFrameRate() throws Exception {
assertThat(parameters.getPreviewFrameRate()).isNotEqualTo((15));
parameters.setPreviewFrameRate(15);
assertThat(parameters.getPreviewFrameRate()).isEqualTo(15);
}
@Test
public void testPreviewSize() throws Exception {
assertThat(shadowParameters.getPreviewWidth()).isNotEqualTo((320));
assertThat(shadowParameters.getPreviewHeight()).isNotEqualTo((240));
parameters.setPreviewSize(320, 240);
Camera.Size size = parameters.getPreviewSize();
assertThat(size.width).isEqualTo(320);
assertThat(size.height).isEqualTo(240);
assertThat(shadowParameters.getPreviewWidth()).isEqualTo(320);
assertThat(shadowParameters.getPreviewHeight()).isEqualTo(240);
}
@Test
public void testPreviewFormat() throws Exception {
assertThat(shadowParameters.getPreviewFormat()).isEqualTo(ImageFormat.NV21);
parameters.setPreviewFormat(ImageFormat.JPEG);
assertThat(shadowParameters.getPreviewFormat()).isEqualTo(ImageFormat.JPEG);
}
@Test
public void testGetSupportedPreviewFormats() throws Exception {
List<Integer> supportedFormats = parameters.getSupportedPreviewFormats();
assertThat(supportedFormats).isNotNull();
assertThat(supportedFormats.size()).isNotEqualTo((0));
assertThat(supportedFormats).contains(ImageFormat.NV21);
}
@Test
public void testGetSupportedPictureFormats() throws Exception {
List<Integer> supportedFormats = parameters.getSupportedPictureFormats();
assertThat(supportedFormats).isNotNull();
assertThat(supportedFormats.size()).isEqualTo(2);
assertThat(supportedFormats).contains(ImageFormat.NV21);
}
@Test
public void testGetSupportedPictureSizes() throws Exception {
List<Camera.Size> supportedSizes = parameters.getSupportedPictureSizes();
assertThat(supportedSizes).isNotNull();
assertThat(supportedSizes.size()).isEqualTo(3);
assertThat(supportedSizes.get(0).width).isEqualTo(320);
assertThat(supportedSizes.get(0).height).isEqualTo(240);
}
@Test
public void testGetSupportedPreviewSizes() throws Exception {
List<Camera.Size> supportedSizes = parameters.getSupportedPreviewSizes();
assertThat(supportedSizes).isNotNull();
assertThat(supportedSizes.size()).isEqualTo(2);
assertThat(supportedSizes.get(0).width).isEqualTo(320);
assertThat(supportedSizes.get(0).height).isEqualTo(240);
}
@Test
public void testGetSupportedPreviewFpsRange() throws Exception {
List<int[]> supportedRanges = parameters.getSupportedPreviewFpsRange();
assertThat(supportedRanges).isNotNull();
assertThat(supportedRanges.size()).isEqualTo(2);
assertThat(supportedRanges.get(0)[0]).isEqualTo(15000);
assertThat(supportedRanges.get(0)[1]).isEqualTo(15000);
assertThat(supportedRanges.get(1)[0]).isEqualTo(10000);
assertThat(supportedRanges.get(1)[1]).isEqualTo(30000);
}
@Test
public void testGetSupportedPreviewFrameRates() throws Exception {
List<Integer> supportedRates = parameters.getSupportedPreviewFrameRates();
assertThat(supportedRates).isNotNull();
assertThat(supportedRates.size()).isEqualTo(3);
assertThat(supportedRates.get(0)).isEqualTo(10);
}
@Test
public void testExposureCompensationLimits() {
assertThat(parameters.getMinExposureCompensation()).isEqualTo(-6);
assertThat(parameters.getMaxExposureCompensation()).isEqualTo(6);
assertThat(parameters.getExposureCompensationStep()).isEqualTo(0.5f);
}
@Test
public void testExposureCompensationSetting() {
assertThat(parameters.getExposureCompensation()).isEqualTo(0);
parameters.setExposureCompensation(5);
assertThat(parameters.getExposureCompensation()).isEqualTo(5);
}
@Test
public void testGetSupportedFocusModesDefaultValue() {
List<String> supportedFocusModes = parameters.getSupportedFocusModes();
assertThat(supportedFocusModes).isEmpty();
}
@Test
public void testSetSupportedFocusModes() {
shadowParameters.setSupportedFocusModes("foo", "bar");
assertThat(parameters.getSupportedFocusModes()).isEqualTo(Lists.newArrayList("foo", "bar"));
shadowParameters.setSupportedFocusModes("baz");
assertThat(parameters.getSupportedFocusModes()).isEqualTo(Lists.newArrayList("baz"));
}
@Test
public void testSetAndGetFocusMode() {
parameters.setFocusMode("foo");
assertThat(parameters.getFocusMode()).isEqualTo("foo");
}
}