package io.fotoapparat.hardware.v2.parameters;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraMetadata;
import android.hardware.camera2.CaptureRequest;
import android.view.Surface;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@SuppressWarnings("NewApi")
@RunWith(MockitoJUnitRunner.class)
public class RequestTest {
@Mock
private CaptureRequest.Builder builder;
@Mock
private CameraDevice cameraDevice;
@Mock
private CaptureRequest captureRequest;
@Mock
private Surface surface;
@SuppressWarnings("WrongConstant")
@Before
public void setUp() throws Exception {
given(cameraDevice.createCaptureRequest(anyInt()))
.willReturn(builder);
given(builder.build())
.willReturn(captureRequest);
}
@Test
public void stillCapture_setCaptureIntent() throws Exception {
// Given
CaptureRequestBuilder request = simpleRequest();
// When
Request.create(request);
// Then
verify(builder)
.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
CameraMetadata.CONTROL_CAPTURE_INTENT_STILL_CAPTURE);
verify(builder)
.set(CaptureRequest.CONTROL_MODE,
CaptureRequest.CONTROL_MODE_AUTO);
}
@Test
public void stillCapture_notSetCaptureIntent() throws Exception {
// Given
CaptureRequestBuilder request = CaptureRequestBuilder
.create(
cameraDevice,
CameraDevice.TEMPLATE_PREVIEW
)
.into(surface);
// When
Request.create(request);
// Then
verify(builder, never())
.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
CameraMetadata.CONTROL_CAPTURE_INTENT_STILL_CAPTURE);
verify(builder, never())
.set(CaptureRequest.CONTROL_MODE,
CaptureRequest.CONTROL_MODE_AUTO);
}
private CaptureRequestBuilder simpleRequest() {
return CaptureRequestBuilder
.create(
cameraDevice,
CameraDevice.TEMPLATE_STILL_CAPTURE
)
.into(surface);
}
}