blob: 3ede0b7abe3a2435b89f51a1fd36ba5fa5a50cea [file] [log] [blame]
// Copyright 2019 The Chromium 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;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import io.flutter.plugin.common.MethodChannel;
import org.junit.Test;
public class PictureCaptureRequestTest {
@Test
public void state_is_idle_by_default() {
PictureCaptureRequest req = new PictureCaptureRequest(null);
assertEquals("Default state is idle", req.getState(), PictureCaptureRequest.State.idle);
}
@Test
public void setState_sets_state() {
PictureCaptureRequest req = new PictureCaptureRequest(null);
req.setState(PictureCaptureRequest.State.focusing);
assertEquals("State is focusing", req.getState(), PictureCaptureRequest.State.focusing);
req.setState(PictureCaptureRequest.State.preCapture);
assertEquals("State is preCapture", req.getState(), PictureCaptureRequest.State.preCapture);
req.setState(PictureCaptureRequest.State.waitingPreCaptureReady);
assertEquals(
"State is waitingPreCaptureReady",
req.getState(),
PictureCaptureRequest.State.waitingPreCaptureReady);
req.setState(PictureCaptureRequest.State.capturing);
assertEquals(
"State is awaitingPreCapture", req.getState(), PictureCaptureRequest.State.capturing);
}
@Test
public void finish_sets_result_and_state() {
// Setup
MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
PictureCaptureRequest req = new PictureCaptureRequest(mockResult);
// Act
req.finish("/test/path");
// Test
verify(mockResult).success("/test/path");
assertEquals("State is finished", req.getState(), PictureCaptureRequest.State.finished);
}
@Test
public void isFinished_is_true_When_state_is_finished_or_error() {
// Setup
PictureCaptureRequest req = new PictureCaptureRequest(null);
// Test false states
req.setState(PictureCaptureRequest.State.idle);
assertFalse(req.isFinished());
req.setState(PictureCaptureRequest.State.preCapture);
assertFalse(req.isFinished());
req.setState(PictureCaptureRequest.State.capturing);
assertFalse(req.isFinished());
// Test true states
req.setState(PictureCaptureRequest.State.finished);
assertTrue(req.isFinished());
req = new PictureCaptureRequest(null); // Refresh
req.setState(PictureCaptureRequest.State.error);
assertTrue(req.isFinished());
}
@Test(expected = IllegalStateException.class)
public void finish_throws_When_already_finished() {
// Setup
PictureCaptureRequest req = new PictureCaptureRequest(null);
req.setState(PictureCaptureRequest.State.finished);
// Act
req.finish("/test/path");
}
@Test
public void error_sets_result_and_state() {
// Setup
MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
PictureCaptureRequest req = new PictureCaptureRequest(mockResult);
// Act
req.error("ERROR_CODE", "Error Message", null);
// Test
verify(mockResult).error("ERROR_CODE", "Error Message", null);
assertEquals("State is error", req.getState(), PictureCaptureRequest.State.error);
}
@Test(expected = IllegalStateException.class)
public void error_throws_When_already_finished() {
// Setup
PictureCaptureRequest req = new PictureCaptureRequest(null);
req.setState(PictureCaptureRequest.State.finished);
// Act
req.error(null, null, null);
}
}