blob: 512438ce2b5c561fb774458c9bcf5fc9d9b81d6b [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:flutter_test/flutter_test.dart';
import 'package:image_picker_example/readme_excerpts.dart';
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
setUpAll(() async {
ImagePickerPlatform.instance = FakeImagePicker();
});
test('sanity check readmePickExample', () async {
// Ensure that the snippet code runs successfully.
final List<XFile?> results = await readmePickExample();
// It should demonstrate a variety of calls.
expect(results.length, greaterThan(4));
// And the calls should all be different. This works since each fake call
// returns a different result.
expect(results.map((XFile? file) => file?.path).toSet().length,
results.length);
});
test('sanity check getLostData', () async {
// Ensure that the snippet code runs successfully.
await getLostData();
});
}
class FakeImagePicker extends ImagePickerPlatform {
@override
Future<XFile?> getImageFromSource(
{required ImageSource source,
ImagePickerOptions options = const ImagePickerOptions()}) async {
return XFile(source == ImageSource.camera ? 'cameraImage' : 'galleryImage');
}
@override
Future<LostDataResponse> getLostData() async {
return LostDataResponse.empty();
}
@override
Future<List<XFile>> getMultiImageWithOptions(
{MultiImagePickerOptions options =
const MultiImagePickerOptions()}) async {
return <XFile>[XFile('multiImage')];
}
@override
Future<List<XFile>> getMedia({required MediaOptions options}) async {
return options.allowMultiple
? <XFile>[XFile('medias'), XFile('medias')]
: <XFile>[XFile('media')];
}
@override
Future<XFile?> getVideo(
{required ImageSource source,
CameraDevice preferredCameraDevice = CameraDevice.rear,
Duration? maxDuration}) async {
return XFile(source == ImageSource.camera ? 'cameraVideo' : 'galleryVideo');
}
}