blob: e23b865f30a5ab4d006482ae622f58f40bb41d7d [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// TODO(a14n): remove this import once Flutter 3.1 or later reaches stable (including flutter/flutter#106316)
// ignore: unnecessary_import
import 'dart:ui';
import 'package:camera/camera.dart';
// TODO(a14n): remove this import once Flutter 3.1 or later reaches stable (including flutter/flutter#106316)
// ignore: unnecessary_import
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'camera_preview_test.dart';
void main() {
group('camera_value', () {
test('Can be created', () {
const CameraValue cameraValue = CameraValue(
isInitialized: false,
previewSize: Size(10, 10),
isRecordingPaused: false,
isRecordingVideo: false,
isTakingPicture: false,
isStreamingImages: false,
flashMode: FlashMode.auto,
exposureMode: ExposureMode.auto,
exposurePointSupported: true,
focusMode: FocusMode.auto,
deviceOrientation: DeviceOrientation.portraitUp,
lockedCaptureOrientation: DeviceOrientation.portraitUp,
recordingOrientation: DeviceOrientation.portraitUp,
focusPointSupported: true,
previewPauseOrientation: DeviceOrientation.portraitUp,
description: FakeController.fakeDescription,
);
expect(cameraValue, isA<CameraValue>());
expect(cameraValue.isInitialized, isFalse);
expect(cameraValue.errorDescription, null);
expect(cameraValue.previewSize, const Size(10, 10));
expect(cameraValue.isRecordingPaused, isFalse);
expect(cameraValue.isRecordingVideo, isFalse);
expect(cameraValue.isTakingPicture, isFalse);
expect(cameraValue.isStreamingImages, isFalse);
expect(cameraValue.flashMode, FlashMode.auto);
expect(cameraValue.exposureMode, ExposureMode.auto);
expect(cameraValue.exposurePointSupported, true);
expect(cameraValue.deviceOrientation, DeviceOrientation.portraitUp);
expect(
cameraValue.lockedCaptureOrientation, DeviceOrientation.portraitUp);
expect(cameraValue.recordingOrientation, DeviceOrientation.portraitUp);
expect(cameraValue.isPreviewPaused, false);
expect(cameraValue.previewPauseOrientation, DeviceOrientation.portraitUp);
});
test('Can be created as uninitialized', () {
const CameraValue cameraValue =
CameraValue.uninitialized(FakeController.fakeDescription);
expect(cameraValue, isA<CameraValue>());
expect(cameraValue.isInitialized, isFalse);
expect(cameraValue.errorDescription, null);
expect(cameraValue.previewSize, null);
expect(cameraValue.isRecordingPaused, isFalse);
expect(cameraValue.isRecordingVideo, isFalse);
expect(cameraValue.isTakingPicture, isFalse);
expect(cameraValue.isStreamingImages, isFalse);
expect(cameraValue.flashMode, FlashMode.auto);
expect(cameraValue.exposureMode, ExposureMode.auto);
expect(cameraValue.exposurePointSupported, false);
expect(cameraValue.focusMode, FocusMode.auto);
expect(cameraValue.deviceOrientation, DeviceOrientation.portraitUp);
expect(cameraValue.lockedCaptureOrientation, null);
expect(cameraValue.recordingOrientation, null);
expect(cameraValue.isPreviewPaused, isFalse);
expect(cameraValue.previewPauseOrientation, null);
});
test('Can be copied with isInitialized', () {
const CameraValue cv =
CameraValue.uninitialized(FakeController.fakeDescription);
final CameraValue cameraValue = cv.copyWith(isInitialized: true);
expect(cameraValue, isA<CameraValue>());
expect(cameraValue.isInitialized, isTrue);
expect(cameraValue.errorDescription, null);
expect(cameraValue.previewSize, null);
expect(cameraValue.isRecordingPaused, isFalse);
expect(cameraValue.isRecordingVideo, isFalse);
expect(cameraValue.isTakingPicture, isFalse);
expect(cameraValue.isStreamingImages, isFalse);
expect(cameraValue.flashMode, FlashMode.auto);
expect(cameraValue.focusMode, FocusMode.auto);
expect(cameraValue.exposureMode, ExposureMode.auto);
expect(cameraValue.exposurePointSupported, false);
expect(cameraValue.deviceOrientation, DeviceOrientation.portraitUp);
expect(cameraValue.lockedCaptureOrientation, null);
expect(cameraValue.recordingOrientation, null);
expect(cameraValue.isPreviewPaused, isFalse);
expect(cameraValue.previewPauseOrientation, null);
});
test('Has aspectRatio after setting size', () {
const CameraValue cv =
CameraValue.uninitialized(FakeController.fakeDescription);
final CameraValue cameraValue =
cv.copyWith(isInitialized: true, previewSize: const Size(20, 10));
expect(cameraValue.aspectRatio, 2.0);
});
test('hasError is true after setting errorDescription', () {
const CameraValue cv =
CameraValue.uninitialized(FakeController.fakeDescription);
final CameraValue cameraValue = cv.copyWith(errorDescription: 'error');
expect(cameraValue.hasError, isTrue);
expect(cameraValue.errorDescription, 'error');
});
test('Recording paused is false when not recording', () {
const CameraValue cv =
CameraValue.uninitialized(FakeController.fakeDescription);
final CameraValue cameraValue = cv.copyWith(
isInitialized: true,
isRecordingVideo: false,
isRecordingPaused: true);
expect(cameraValue.isRecordingPaused, isFalse);
});
test('toString() works as expected', () {
const CameraValue cameraValue = CameraValue(
isInitialized: false,
previewSize: Size(10, 10),
isRecordingPaused: false,
isRecordingVideo: false,
isTakingPicture: false,
isStreamingImages: false,
flashMode: FlashMode.auto,
exposureMode: ExposureMode.auto,
focusMode: FocusMode.auto,
exposurePointSupported: true,
focusPointSupported: true,
deviceOrientation: DeviceOrientation.portraitUp,
lockedCaptureOrientation: DeviceOrientation.portraitUp,
recordingOrientation: DeviceOrientation.portraitUp,
isPreviewPaused: true,
previewPauseOrientation: DeviceOrientation.portraitUp,
description: FakeController.fakeDescription,
);
expect(cameraValue.toString(),
'CameraValue(isRecordingVideo: false, isInitialized: false, errorDescription: null, previewSize: Size(10.0, 10.0), isStreamingImages: false, flashMode: FlashMode.auto, exposureMode: ExposureMode.auto, focusMode: FocusMode.auto, exposurePointSupported: true, focusPointSupported: true, deviceOrientation: DeviceOrientation.portraitUp, lockedCaptureOrientation: DeviceOrientation.portraitUp, recordingOrientation: DeviceOrientation.portraitUp, isPreviewPaused: true, previewPausedOrientation: DeviceOrientation.portraitUp, description: CameraDescription(, CameraLensDirection.back, 0))');
});
});
}