Skip to content

Commit c6115e2

Browse files
committed
Add more tests
1 parent f26c3b8 commit c6115e2

File tree

7 files changed

+925
-7
lines changed

7 files changed

+925
-7
lines changed

packages/google_maps_flutter/google_maps_flutter_android/example/integration_test/google_maps_tests.dart

Lines changed: 147 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1279,6 +1279,97 @@ void googleMapsTests() {
12791279
}
12801280
});
12811281

1282+
testWidgets('advanced markers clustering', (WidgetTester tester) async {
1283+
final Key key = GlobalKey();
1284+
const int clusterManagersAmount = 2;
1285+
const int markersPerClusterManager = 5;
1286+
final Map<MarkerId, AdvancedMarker> markers = <MarkerId, AdvancedMarker>{};
1287+
final Set<ClusterManager> clusterManagers = <ClusterManager>{};
1288+
1289+
for (int i = 0; i < clusterManagersAmount; i++) {
1290+
final ClusterManagerId clusterManagerId =
1291+
ClusterManagerId('cluster_manager_$i');
1292+
final ClusterManager clusterManager =
1293+
ClusterManager(clusterManagerId: clusterManagerId);
1294+
clusterManagers.add(clusterManager);
1295+
}
1296+
1297+
for (final ClusterManager cm in clusterManagers) {
1298+
for (int i = 0; i < markersPerClusterManager; i++) {
1299+
final MarkerId markerId =
1300+
MarkerId('${cm.clusterManagerId.value}_marker_$i');
1301+
final AdvancedMarker marker = AdvancedMarker(
1302+
markerId: markerId,
1303+
clusterManagerId: cm.clusterManagerId,
1304+
position: LatLng(
1305+
_kInitialMapCenter.latitude + i,
1306+
_kInitialMapCenter.longitude,
1307+
),
1308+
);
1309+
markers[markerId] = marker;
1310+
}
1311+
}
1312+
1313+
final Completer<ExampleGoogleMapController> controllerCompleter =
1314+
Completer<ExampleGoogleMapController>();
1315+
1316+
final GoogleMapsInspectorPlatform inspector =
1317+
GoogleMapsInspectorPlatform.instance!;
1318+
1319+
await tester.pumpWidget(
1320+
Directionality(
1321+
textDirection: TextDirection.ltr,
1322+
child: ExampleGoogleMap(
1323+
key: key,
1324+
initialCameraPosition: _kInitialCameraPosition,
1325+
clusterManagers: clusterManagers,
1326+
markerType: MarkerType.advanced,
1327+
markers: Set<Marker>.of(markers.values),
1328+
onMapCreated: (ExampleGoogleMapController googleMapController) {
1329+
controllerCompleter.complete(googleMapController);
1330+
},
1331+
),
1332+
),
1333+
);
1334+
1335+
final ExampleGoogleMapController controller =
1336+
await controllerCompleter.future;
1337+
1338+
for (final ClusterManager cm in clusterManagers) {
1339+
final List<Cluster> clusters = await inspector.getClusters(
1340+
mapId: controller.mapId, clusterManagerId: cm.clusterManagerId);
1341+
final int markersAmountForClusterManager = clusters
1342+
.map<int>((Cluster cluster) => cluster.count)
1343+
.reduce((int value, int element) => value + element);
1344+
expect(markersAmountForClusterManager, markersPerClusterManager);
1345+
}
1346+
1347+
// Remove markers from clusterManagers and test that clusterManagers are empty.
1348+
for (final MapEntry<MarkerId, AdvancedMarker> entry in markers.entries) {
1349+
markers[entry.key] =
1350+
_copyAdvancedMarkerWithClusterManagerId(entry.value, null);
1351+
}
1352+
await tester.pumpWidget(
1353+
Directionality(
1354+
textDirection: TextDirection.ltr,
1355+
child: ExampleGoogleMap(
1356+
key: key,
1357+
initialCameraPosition: _kInitialCameraPosition,
1358+
clusterManagers: clusterManagers,
1359+
markers: Set<Marker>.of(markers.values),
1360+
),
1361+
),
1362+
);
1363+
1364+
for (final ClusterManager cm in clusterManagers) {
1365+
final List<Cluster> clusters = await inspector.getClusters(
1366+
mapId: controller.mapId,
1367+
clusterManagerId: cm.clusterManagerId,
1368+
);
1369+
expect(clusters.length, 0);
1370+
}
1371+
});
1372+
12821373
testWidgets(
12831374
'testMapId',
12841375
(WidgetTester tester) async {
@@ -1949,6 +2040,33 @@ void googleMapsTests() {
19492040
// https://github.com/flutter/flutter/issues/131071
19502041
skip: true,
19512042
);
2043+
2044+
testWidgets('markerWithPinConfig', (WidgetTester tester) async {
2045+
final Set<AdvancedMarker> markers = <AdvancedMarker>{
2046+
AdvancedMarker(
2047+
markerId: const MarkerId('1'),
2048+
icon: BitmapDescriptor.pinConfig(
2049+
backgroundColor: Colors.green,
2050+
borderColor: Colors.greenAccent,
2051+
glyph: Glyph.text('A', textColor: Colors.white),
2052+
),
2053+
),
2054+
};
2055+
2056+
await tester.pumpWidget(
2057+
Directionality(
2058+
textDirection: ui.TextDirection.ltr,
2059+
child: ExampleGoogleMap(
2060+
initialCameraPosition: const CameraPosition(
2061+
target: LatLng(10.0, 20.0),
2062+
),
2063+
markers: markers,
2064+
markerType: MarkerType.advanced,
2065+
),
2066+
),
2067+
);
2068+
await tester.pumpAndSettle();
2069+
});
19522070
}
19532071

19542072
class _DebugTileProvider implements TileProvider {
@@ -1996,7 +2114,9 @@ class _DebugTileProvider implements TileProvider {
19962114
}
19972115

19982116
Marker _copyMarkerWithClusterManagerId(
1999-
Marker marker, ClusterManagerId? clusterManagerId) {
2117+
Marker marker,
2118+
ClusterManagerId? clusterManagerId,
2119+
) {
20002120
return Marker(
20012121
markerId: marker.markerId,
20022122
alpha: marker.alpha,
@@ -2103,3 +2223,29 @@ Future<void> _checkCameraUpdateByType(
21032223
expect(currentPosition.zoom, wrapMatcher(equals(_kInitialZoomLevel - 1)));
21042224
}
21052225
}
2226+
2227+
AdvancedMarker _copyAdvancedMarkerWithClusterManagerId(
2228+
AdvancedMarker marker,
2229+
ClusterManagerId? clusterManagerId,
2230+
) {
2231+
return AdvancedMarker(
2232+
markerId: marker.markerId,
2233+
alpha: marker.alpha,
2234+
anchor: marker.anchor,
2235+
consumeTapEvents: marker.consumeTapEvents,
2236+
draggable: marker.draggable,
2237+
flat: marker.flat,
2238+
icon: marker.icon,
2239+
infoWindow: marker.infoWindow,
2240+
position: marker.position,
2241+
rotation: marker.rotation,
2242+
visible: marker.visible,
2243+
zIndex: marker.zIndex,
2244+
onTap: marker.onTap,
2245+
onDragStart: marker.onDragStart,
2246+
onDrag: marker.onDrag,
2247+
onDragEnd: marker.onDragEnd,
2248+
clusterManagerId: clusterManagerId,
2249+
collisionBehavior: marker.collisionBehavior,
2250+
);
2251+
}

packages/google_maps_flutter/google_maps_flutter_ios/example/ios14/integration_test/google_maps_test.dart

Lines changed: 147 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1130,6 +1130,97 @@ void main() {
11301130
}
11311131
});
11321132

1133+
testWidgets('advanced markers clustering', (WidgetTester tester) async {
1134+
final Key key = GlobalKey();
1135+
const int clusterManagersAmount = 2;
1136+
const int markersPerClusterManager = 5;
1137+
final Map<MarkerId, AdvancedMarker> markers = <MarkerId, AdvancedMarker>{};
1138+
final Set<ClusterManager> clusterManagers = <ClusterManager>{};
1139+
1140+
for (int i = 0; i < clusterManagersAmount; i++) {
1141+
final ClusterManagerId clusterManagerId =
1142+
ClusterManagerId('cluster_manager_$i');
1143+
final ClusterManager clusterManager =
1144+
ClusterManager(clusterManagerId: clusterManagerId);
1145+
clusterManagers.add(clusterManager);
1146+
}
1147+
1148+
for (final ClusterManager cm in clusterManagers) {
1149+
for (int i = 0; i < markersPerClusterManager; i++) {
1150+
final MarkerId markerId =
1151+
MarkerId('${cm.clusterManagerId.value}_marker_$i');
1152+
final AdvancedMarker marker = AdvancedMarker(
1153+
markerId: markerId,
1154+
clusterManagerId: cm.clusterManagerId,
1155+
position: LatLng(
1156+
_kInitialMapCenter.latitude + i,
1157+
_kInitialMapCenter.longitude,
1158+
),
1159+
);
1160+
markers[markerId] = marker;
1161+
}
1162+
}
1163+
1164+
final Completer<ExampleGoogleMapController> controllerCompleter =
1165+
Completer<ExampleGoogleMapController>();
1166+
1167+
final GoogleMapsInspectorPlatform inspector =
1168+
GoogleMapsInspectorPlatform.instance!;
1169+
1170+
await tester.pumpWidget(
1171+
Directionality(
1172+
textDirection: TextDirection.ltr,
1173+
child: ExampleGoogleMap(
1174+
key: key,
1175+
initialCameraPosition: _kInitialCameraPosition,
1176+
clusterManagers: clusterManagers,
1177+
markerType: MarkerType.advanced,
1178+
markers: Set<Marker>.of(markers.values),
1179+
onMapCreated: (ExampleGoogleMapController googleMapController) {
1180+
controllerCompleter.complete(googleMapController);
1181+
},
1182+
),
1183+
),
1184+
);
1185+
1186+
final ExampleGoogleMapController controller =
1187+
await controllerCompleter.future;
1188+
1189+
for (final ClusterManager cm in clusterManagers) {
1190+
final List<Cluster> clusters = await inspector.getClusters(
1191+
mapId: controller.mapId, clusterManagerId: cm.clusterManagerId);
1192+
final int markersAmountForClusterManager = clusters
1193+
.map<int>((Cluster cluster) => cluster.count)
1194+
.reduce((int value, int element) => value + element);
1195+
expect(markersAmountForClusterManager, markersPerClusterManager);
1196+
}
1197+
1198+
// Remove markers from clusterManagers and test that clusterManagers are empty.
1199+
for (final MapEntry<MarkerId, AdvancedMarker> entry in markers.entries) {
1200+
markers[entry.key] =
1201+
_copyAdvancedMarkerWithClusterManagerId(entry.value, null);
1202+
}
1203+
await tester.pumpWidget(
1204+
Directionality(
1205+
textDirection: TextDirection.ltr,
1206+
child: ExampleGoogleMap(
1207+
key: key,
1208+
initialCameraPosition: _kInitialCameraPosition,
1209+
clusterManagers: clusterManagers,
1210+
markers: Set<Marker>.of(markers.values),
1211+
),
1212+
),
1213+
);
1214+
1215+
for (final ClusterManager cm in clusterManagers) {
1216+
final List<Cluster> clusters = await inspector.getClusters(
1217+
mapId: controller.mapId,
1218+
clusterManagerId: cm.clusterManagerId,
1219+
);
1220+
expect(clusters.length, 0);
1221+
}
1222+
});
1223+
11331224
testWidgets('testSetStyleMapId', (WidgetTester tester) async {
11341225
final Key key = GlobalKey();
11351226

@@ -1791,6 +1882,33 @@ void main() {
17911882
// Hanging in CI, https://github.com/flutter/flutter/issues/166139
17921883
skip: true,
17931884
);
1885+
1886+
testWidgets('markerWithPinConfig', (WidgetTester tester) async {
1887+
final Set<AdvancedMarker> markers = <AdvancedMarker>{
1888+
AdvancedMarker(
1889+
markerId: const MarkerId('1'),
1890+
icon: BitmapDescriptor.pinConfig(
1891+
backgroundColor: Colors.green,
1892+
borderColor: Colors.greenAccent,
1893+
glyph: Glyph.text('A', textColor: Colors.white),
1894+
),
1895+
),
1896+
};
1897+
1898+
await tester.pumpWidget(
1899+
Directionality(
1900+
textDirection: ui.TextDirection.ltr,
1901+
child: ExampleGoogleMap(
1902+
initialCameraPosition: const CameraPosition(
1903+
target: LatLng(10.0, 20.0),
1904+
),
1905+
markers: markers,
1906+
markerType: MarkerType.advanced,
1907+
),
1908+
),
1909+
);
1910+
await tester.pumpAndSettle();
1911+
});
17941912
}
17951913

17961914
class _DebugTileProvider implements TileProvider {
@@ -1838,7 +1956,9 @@ class _DebugTileProvider implements TileProvider {
18381956
}
18391957

18401958
Marker _copyMarkerWithClusterManagerId(
1841-
Marker marker, ClusterManagerId? clusterManagerId) {
1959+
Marker marker,
1960+
ClusterManagerId? clusterManagerId,
1961+
) {
18421962
return Marker(
18431963
markerId: marker.markerId,
18441964
alpha: marker.alpha,
@@ -1945,3 +2065,29 @@ Future<void> _checkCameraUpdateByType(
19452065
expect(currentPosition.zoom, wrapMatcher(equals(_kInitialZoomLevel - 1)));
19462066
}
19472067
}
2068+
2069+
AdvancedMarker _copyAdvancedMarkerWithClusterManagerId(
2070+
AdvancedMarker marker,
2071+
ClusterManagerId? clusterManagerId,
2072+
) {
2073+
return AdvancedMarker(
2074+
markerId: marker.markerId,
2075+
alpha: marker.alpha,
2076+
anchor: marker.anchor,
2077+
consumeTapEvents: marker.consumeTapEvents,
2078+
draggable: marker.draggable,
2079+
flat: marker.flat,
2080+
icon: marker.icon,
2081+
infoWindow: marker.infoWindow,
2082+
position: marker.position,
2083+
rotation: marker.rotation,
2084+
visible: marker.visible,
2085+
zIndex: marker.zIndex,
2086+
onTap: marker.onTap,
2087+
onDragStart: marker.onDragStart,
2088+
onDrag: marker.onDrag,
2089+
onDragEnd: marker.onDragEnd,
2090+
clusterManagerId: clusterManagerId,
2091+
collisionBehavior: marker.collisionBehavior,
2092+
);
2093+
}

0 commit comments

Comments
 (0)