1package com.xtremelabs.robolectric.shadows;
2
3
4import android.graphics.ImageFormat;
5import android.hardware.Camera;
6import com.xtremelabs.robolectric.Robolectric;
7import com.xtremelabs.robolectric.WithTestDefaultsRunner;
8import org.junit.Before;
9import org.junit.Test;
10import org.junit.runner.RunWith;
11
12import java.util.List;
13
14import static org.hamcrest.CoreMatchers.equalTo;
15import static org.hamcrest.CoreMatchers.not;
16import static org.hamcrest.CoreMatchers.notNullValue;
17import static org.hamcrest.core.IsCollectionContaining.hasItem;
18import static org.junit.Assert.assertThat;
19
20@RunWith(WithTestDefaultsRunner.class)
21public class CameraParametersTest {
22
23    private Camera.Parameters parameters;
24    private ShadowCameraParameters shadowParameters;
25
26    @Before
27    public void setUp() throws Exception {
28        parameters = Robolectric.newInstanceOf(Camera.Parameters.class);
29        shadowParameters = Robolectric.shadowOf(parameters);
30    }
31
32    @Test
33    public void testPictureSize() throws Exception {
34        assertThat(shadowParameters.getPictureHeight(), not(equalTo(600)));
35        assertThat(shadowParameters.getPictureWidth(), not(equalTo(800)));
36        parameters.setPictureSize(800, 600);
37        Camera.Size pictureSize = parameters.getPictureSize();
38        assertThat(pictureSize.width, equalTo(800));
39        assertThat(pictureSize.height, equalTo(600));
40        assertThat(shadowParameters.getPictureHeight(), equalTo(600));
41        assertThat(shadowParameters.getPictureWidth(), equalTo(800));
42    }
43
44    @Test
45    public void testPreviewFpsRange() throws Exception {
46        int[] fpsRange = new int[2];
47        parameters.getPreviewFpsRange(fpsRange);
48        assertThat(fpsRange[1], not(equalTo(15)));
49        assertThat(fpsRange[0], not(equalTo(25)));
50        parameters.setPreviewFpsRange(15, 25);
51        parameters.getPreviewFpsRange(fpsRange);
52        assertThat(fpsRange[1], equalTo(25));
53        assertThat(fpsRange[0], equalTo(15));
54    }
55
56    @Test
57    public void testPreviewFrameRate() throws Exception {
58        assertThat(parameters.getPreviewFrameRate(), not(equalTo(15)));
59        parameters.setPreviewFrameRate(15);
60        assertThat(parameters.getPreviewFrameRate(), equalTo(15));
61    }
62
63    @Test
64    public void testPreviewSize() throws Exception {
65        assertThat(shadowParameters.getPreviewWidth(), not(equalTo(320)));
66        assertThat(shadowParameters.getPreviewHeight(), not(equalTo(240)));
67        parameters.setPreviewSize(320, 240);
68        Camera.Size size = parameters.getPreviewSize();
69        assertThat(size.width, equalTo(320));
70        assertThat(size.height, equalTo(240));
71        assertThat(shadowParameters.getPreviewWidth(), equalTo(320));
72        assertThat(shadowParameters.getPreviewHeight(), equalTo(240));
73    }
74
75    @Test
76    public void testPreviewFormat() throws Exception {
77        assertThat(shadowParameters.getPreviewFormat(), equalTo(ImageFormat.NV21));
78        parameters.setPreviewFormat(ImageFormat.JPEG);
79        assertThat(shadowParameters.getPreviewFormat(), equalTo(ImageFormat.JPEG));
80    }
81
82    @Test
83    public void testGetSupportedPreviewFormats() throws Exception {
84        List<Integer> supportedFormats = parameters.getSupportedPreviewFormats();
85        assertThat(supportedFormats, notNullValue());
86        assertThat(supportedFormats.size(), not(equalTo(0)));
87        assertThat(supportedFormats, hasItem(ImageFormat.NV21));
88    }
89
90    @Test
91    public void testGetSupportedPictureFormats() throws Exception {
92        List<Integer> supportedFormats = parameters.getSupportedPictureFormats();
93        assertThat(supportedFormats, notNullValue());
94        assertThat(supportedFormats.size(), equalTo(2));
95        assertThat(supportedFormats, hasItem(new Integer(ImageFormat.NV21)));
96    }
97
98    @Test
99    public void testGetSupportedPictureSizes() throws Exception {
100        List<Camera.Size> supportedSizes = parameters.getSupportedPictureSizes();
101        assertThat(supportedSizes, notNullValue());
102        assertThat(supportedSizes.size(), equalTo(3));
103        assertThat(supportedSizes.get(0).width, equalTo(320));
104        assertThat(supportedSizes.get(0).height, equalTo(240));
105    }
106
107    @Test
108    public void testGetSupportedPreviewSizes() throws Exception {
109        List<Camera.Size> supportedSizes = parameters.getSupportedPreviewSizes();
110        assertThat(supportedSizes, notNullValue());
111        assertThat(supportedSizes.size(), equalTo(2));
112        assertThat(supportedSizes.get(0).width, equalTo(320));
113        assertThat(supportedSizes.get(0).height, equalTo(240));
114    }
115
116    @Test
117    public void testGetSupportedPreviewFpsRange() throws Exception {
118        List<int[]> supportedRanges = parameters.getSupportedPreviewFpsRange();
119        assertThat(supportedRanges, notNullValue());
120        assertThat(supportedRanges.size(), equalTo(2));
121        assertThat(supportedRanges.get(0)[0], equalTo(15000));
122        assertThat(supportedRanges.get(0)[1], equalTo(15000));
123        assertThat(supportedRanges.get(1)[0], equalTo(10000));
124        assertThat(supportedRanges.get(1)[1], equalTo(30000));
125    }
126
127    @Test
128    public void testGetSupportedPreviewFrameRates() throws Exception {
129        List<Integer> supportedRates = parameters.getSupportedPreviewFrameRates();
130        assertThat(supportedRates, notNullValue());
131        assertThat(supportedRates.size(), equalTo(3));
132        assertThat(supportedRates.get(0), equalTo(10));
133    }
134
135}
136