Skip to content

Commit 11c5c31

Browse files
authored
Merge pull request flutter#12 from bottlepay/android-rework-test-flash-feature
Added test coverage to flash feature
2 parents 1f26197 + 7c701cd commit 11c5c31

2 files changed

Lines changed: 151 additions & 3 deletions

File tree

packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/features/flash/FlashFeature.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public FlashFeature(CameraProperties cameraProperties) {
1818

1919
@Override
2020
public String getDebugName() {
21-
return "Flash";
21+
return "FlashFeature";
2222
}
2323

2424
@Override
@@ -34,8 +34,7 @@ public void setValue(FlashMode value) {
3434
@Override
3535
public boolean checkIsSupported() {
3636
Boolean available = cameraProperties.getFlashInfoAvailable();
37-
final boolean supported = available != null && available;
38-
return supported;
37+
return available != null && available;
3938
}
4039

4140
@Override
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
package io.flutter.plugins.camera.features.flash;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertTrue;
6+
import static org.mockito.ArgumentMatchers.any;
7+
import static org.mockito.Mockito.mock;
8+
import static org.mockito.Mockito.never;
9+
import static org.mockito.Mockito.times;
10+
import static org.mockito.Mockito.verify;
11+
import static org.mockito.Mockito.when;
12+
13+
import android.hardware.camera2.CaptureRequest;
14+
import io.flutter.plugins.camera.CameraProperties;
15+
import org.junit.Test;
16+
17+
public class FlashFeatureTest {
18+
@Test
19+
public void getDebugName_should_return_the_name_of_the_feature() {
20+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
21+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
22+
23+
assertEquals("FlashFeature", flashFeature.getDebugName());
24+
}
25+
26+
@Test
27+
public void getValue_should_return_auto_if_not_set() {
28+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
29+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
30+
31+
assertEquals(FlashMode.auto, flashFeature.getValue());
32+
}
33+
34+
@Test
35+
public void getValue_should_echo_the_set_value() {
36+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
37+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
38+
FlashMode expectedValue = FlashMode.torch;
39+
40+
flashFeature.setValue(expectedValue);
41+
FlashMode actualValue = flashFeature.getValue();
42+
43+
assertEquals(expectedValue, actualValue);
44+
}
45+
46+
@Test
47+
public void checkIsSupported_should_return_false_when_flash_info_available_is_null() {
48+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
49+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
50+
51+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(null);
52+
53+
assertFalse(flashFeature.checkIsSupported());
54+
}
55+
56+
@Test
57+
public void checkIsSupported_should_return_false_when_flash_info_available_is_false() {
58+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
59+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
60+
61+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(false);
62+
63+
assertFalse(flashFeature.checkIsSupported());
64+
}
65+
66+
@Test
67+
public void checkIsSupported_should_return_true_when_flash_info_available_is_true() {
68+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
69+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
70+
71+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(true);
72+
73+
assertTrue(flashFeature.checkIsSupported());
74+
}
75+
76+
@Test
77+
public void updateBuilder_should_return_when_checkIsSupported_is_false() {
78+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
79+
CaptureRequest.Builder mockBuilder = mock(CaptureRequest.Builder.class);
80+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
81+
82+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(false);
83+
84+
flashFeature.updateBuilder(mockBuilder);
85+
86+
verify(mockBuilder, never()).set(any(), any());
87+
}
88+
89+
@Test
90+
public void updateBuilder_should_set_ae_mode_and_flash_mode_when_flash_mode_is_off() {
91+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
92+
CaptureRequest.Builder mockBuilder = mock(CaptureRequest.Builder.class);
93+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
94+
95+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(true);
96+
97+
flashFeature.setValue(FlashMode.off);
98+
flashFeature.updateBuilder(mockBuilder);
99+
100+
verify(mockBuilder, times(1)).set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
101+
verify(mockBuilder, times(1)).set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
102+
}
103+
104+
@Test
105+
public void updateBuilder_should_set_ae_mode_and_flash_mode_when_flash_mode_is_always() {
106+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
107+
CaptureRequest.Builder mockBuilder = mock(CaptureRequest.Builder.class);
108+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
109+
110+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(true);
111+
112+
flashFeature.setValue(FlashMode.always);
113+
flashFeature.updateBuilder(mockBuilder);
114+
115+
verify(mockBuilder, times(1)).set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
116+
verify(mockBuilder, times(1)).set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
117+
}
118+
119+
@Test
120+
public void updateBuilder_should_set_ae_mode_and_flash_mode_when_flash_mode_is_torch() {
121+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
122+
CaptureRequest.Builder mockBuilder = mock(CaptureRequest.Builder.class);
123+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
124+
125+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(true);
126+
127+
flashFeature.setValue(FlashMode.torch);
128+
flashFeature.updateBuilder(mockBuilder);
129+
130+
verify(mockBuilder, times(1)).set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
131+
verify(mockBuilder, times(1)).set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_TORCH);
132+
}
133+
134+
@Test
135+
public void updateBuilder_should_set_ae_mode_and_flash_mode_when_flash_mode_is_auto() {
136+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
137+
CaptureRequest.Builder mockBuilder = mock(CaptureRequest.Builder.class);
138+
FlashFeature flashFeature = new FlashFeature(mockCameraProperties);
139+
140+
when(mockCameraProperties.getFlashInfoAvailable()).thenReturn(true);
141+
142+
flashFeature.setValue(FlashMode.auto);
143+
flashFeature.updateBuilder(mockBuilder);
144+
145+
verify(mockBuilder, times(1))
146+
.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
147+
verify(mockBuilder, times(1)).set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
148+
}
149+
}

0 commit comments

Comments
 (0)