blob: de4edf375696508e775430b8bff1956c0e1d249c [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/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/services.dart';
import 'package:mockito/mockito.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:google_maps_flutter_platform_interface/src/method_channel/method_channel_google_maps_flutter.dart';
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('$GoogleMapsFlutterPlatform', () {
test('$MethodChannelGoogleMapsFlutter() is the default instance', () {
expect(GoogleMapsFlutterPlatform.instance,
isInstanceOf<MethodChannelGoogleMapsFlutter>());
});
test('Cannot be implemented with `implements`', () {
expect(() {
GoogleMapsFlutterPlatform.instance =
ImplementsGoogleMapsFlutterPlatform();
}, throwsA(isInstanceOf<AssertionError>()));
});
test('Can be mocked with `implements`', () {
final GoogleMapsFlutterPlatformMock mock =
GoogleMapsFlutterPlatformMock();
GoogleMapsFlutterPlatform.instance = mock;
});
test('Can be extended', () {
GoogleMapsFlutterPlatform.instance = ExtendsGoogleMapsFlutterPlatform();
});
test(
'default implementation of `buildViewWithTextDirection` delegates to `buildView`',
() {
final GoogleMapsFlutterPlatform platform =
BuildViewGoogleMapsFlutterPlatform();
expect(
platform.buildViewWithTextDirection(
0,
(_) {},
initialCameraPosition: CameraPosition(target: LatLng(0.0, 0.0)),
textDirection: TextDirection.ltr,
),
isA<Text>(),
);
},
);
});
}
class GoogleMapsFlutterPlatformMock extends Mock
with MockPlatformInterfaceMixin
implements GoogleMapsFlutterPlatform {}
class ImplementsGoogleMapsFlutterPlatform extends Mock
implements GoogleMapsFlutterPlatform {}
class ExtendsGoogleMapsFlutterPlatform extends GoogleMapsFlutterPlatform {}
class BuildViewGoogleMapsFlutterPlatform extends GoogleMapsFlutterPlatform {
@override
Widget buildView(
int creationId,
PlatformViewCreatedCallback onPlatformViewCreated, {
required CameraPosition initialCameraPosition,
Set<Marker> markers = const <Marker>{},
Set<Polygon> polygons = const <Polygon>{},
Set<Polyline> polylines = const <Polyline>{},
Set<Circle> circles = const <Circle>{},
Set<TileOverlay> tileOverlays = const <TileOverlay>{},
Set<Factory<OneSequenceGestureRecognizer>>? gestureRecognizers =
const <Factory<OneSequenceGestureRecognizer>>{},
Map<String, dynamic> mapOptions = const <String, dynamic>{},
}) {
return const Text('');
}
}