blob: 65e7d00ddaea0664a4dd6b4f79d46cfd5f85a0bc [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.
import 'package:camera_android_camerax/src/camera_info.dart';
import 'package:camera_android_camerax/src/instance_manager.dart';
import 'package:camera_android_camerax/src/process_camera_provider.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'process_camera_provider_test.mocks.dart';
import 'test_camerax_library.pigeon.dart';
@GenerateMocks(<Type>[TestProcessCameraProviderHostApi])
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('ProcessCameraProvider', () {
tearDown(() => TestProcessCameraProviderHostApi.setup(null));
test('getInstanceTest', () async {
final MockTestProcessCameraProviderHostApi mockApi =
MockTestProcessCameraProviderHostApi();
TestProcessCameraProviderHostApi.setup(mockApi);
final InstanceManager instanceManager = InstanceManager(
onWeakReferenceRemoved: (_) {},
);
final ProcessCameraProvider processCameraProvider =
ProcessCameraProvider.detached(
instanceManager: instanceManager,
);
instanceManager.addHostCreatedInstance(
processCameraProvider,
0,
onCopy: (_) => ProcessCameraProvider.detached(),
);
when(mockApi.getInstance()).thenAnswer((_) async => 0);
expect(
await ProcessCameraProvider.getInstance(
instanceManager: instanceManager),
equals(processCameraProvider));
verify(mockApi.getInstance());
});
test('getAvailableCameraInfosTest', () async {
final MockTestProcessCameraProviderHostApi mockApi =
MockTestProcessCameraProviderHostApi();
TestProcessCameraProviderHostApi.setup(mockApi);
final InstanceManager instanceManager = InstanceManager(
onWeakReferenceRemoved: (_) {},
);
final ProcessCameraProvider processCameraProvider =
ProcessCameraProvider.detached(
instanceManager: instanceManager,
);
instanceManager.addHostCreatedInstance(
processCameraProvider,
0,
onCopy: (_) => ProcessCameraProvider.detached(),
);
final CameraInfo fakeAvailableCameraInfo =
CameraInfo.detached(instanceManager: instanceManager);
instanceManager.addHostCreatedInstance(
fakeAvailableCameraInfo,
1,
onCopy: (_) => CameraInfo.detached(),
);
when(mockApi.getAvailableCameraInfos(0)).thenReturn(<int>[1]);
expect(await processCameraProvider.getAvailableCameraInfos(),
equals(<CameraInfo>[fakeAvailableCameraInfo]));
verify(mockApi.getAvailableCameraInfos(0));
});
test('flutterApiCreateTest', () {
final InstanceManager instanceManager = InstanceManager(
onWeakReferenceRemoved: (_) {},
);
final ProcessCameraProviderFlutterApiImpl flutterApi =
ProcessCameraProviderFlutterApiImpl(
instanceManager: instanceManager,
);
flutterApi.create(0);
expect(instanceManager.getInstanceWithWeakReference(0),
isA<ProcessCameraProvider>());
});
});
}