blob: f622ca5213effd53bdc9856037f3d308dfb804fb [file] [log] [blame]
// Copyright 2017 The Chromium 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 'dart:ui' show hashValues, hashList;
import 'package:flutter_test/flutter_test.dart';
import 'package:google_maps_flutter_platform_interface/src/types/utils/tile_overlay.dart';
import 'package:google_maps_flutter_platform_interface/src/types/tile_overlay_updates.dart';
import 'package:google_maps_flutter_platform_interface/src/types/tile_overlay.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('tile overlay updates tests', () {
test('Correctly set toRemove, toAdd and toChange', () async {
final TileOverlay to1 = TileOverlay(tileOverlayId: TileOverlayId('id1'));
final TileOverlay to2 = TileOverlay(tileOverlayId: TileOverlayId('id2'));
final TileOverlay to3 = TileOverlay(tileOverlayId: TileOverlayId('id3'));
final TileOverlay to3Changed =
TileOverlay(tileOverlayId: TileOverlayId('id3'), transparency: 0.5);
final TileOverlay to4 = TileOverlay(tileOverlayId: TileOverlayId('id4'));
final Set<TileOverlay> previous = Set.from(<TileOverlay>[to1, to2, to3]);
final Set<TileOverlay> current =
Set.from(<TileOverlay>[to2, to3Changed, to4]);
final TileOverlayUpdates updates =
TileOverlayUpdates.from(previous, current);
final Set<TileOverlayId> toRemove =
Set.from(<TileOverlayId>[TileOverlayId('id1')]);
expect(updates.tileOverlayIdsToRemove, toRemove);
final Set<TileOverlay> toAdd = Set.from(<TileOverlay>[to4]);
expect(updates.tileOverlaysToAdd, toAdd);
final Set<TileOverlay> toChange = Set.from(<TileOverlay>[to3Changed]);
expect(updates.tileOverlaysToChange, toChange);
});
test('toJson', () async {
final TileOverlay to1 = TileOverlay(tileOverlayId: TileOverlayId('id1'));
final TileOverlay to2 = TileOverlay(tileOverlayId: TileOverlayId('id2'));
final TileOverlay to3 = TileOverlay(tileOverlayId: TileOverlayId('id3'));
final TileOverlay to3Changed =
TileOverlay(tileOverlayId: TileOverlayId('id3'), transparency: 0.5);
final TileOverlay to4 = TileOverlay(tileOverlayId: TileOverlayId('id4'));
final Set<TileOverlay> previous = Set.from(<TileOverlay>[to1, to2, to3]);
final Set<TileOverlay> current =
Set.from(<TileOverlay>[to2, to3Changed, to4]);
final TileOverlayUpdates updates =
TileOverlayUpdates.from(previous, current);
final Object json = updates.toJson();
expect(json, <String, Object>{
'tileOverlaysToAdd': serializeTileOverlaySet(updates.tileOverlaysToAdd),
'tileOverlaysToChange':
serializeTileOverlaySet(updates.tileOverlaysToChange),
'tileOverlayIdsToRemove': updates.tileOverlayIdsToRemove
.map<String>((TileOverlayId m) => m.value)
.toList()
});
});
test('equality', () async {
final TileOverlay to1 = TileOverlay(tileOverlayId: TileOverlayId('id1'));
final TileOverlay to2 = TileOverlay(tileOverlayId: TileOverlayId('id2'));
final TileOverlay to3 = TileOverlay(tileOverlayId: TileOverlayId('id3'));
final TileOverlay to3Changed =
TileOverlay(tileOverlayId: TileOverlayId('id3'), transparency: 0.5);
final TileOverlay to4 = TileOverlay(tileOverlayId: TileOverlayId('id4'));
final Set<TileOverlay> previous = Set.from(<TileOverlay>[to1, to2, to3]);
final Set<TileOverlay> current1 =
Set.from(<TileOverlay>[to2, to3Changed, to4]);
final Set<TileOverlay> current2 =
Set.from(<TileOverlay>[to2, to3Changed, to4]);
final Set<TileOverlay> current3 = Set.from(<TileOverlay>[to2, to4]);
final TileOverlayUpdates updates1 =
TileOverlayUpdates.from(previous, current1);
final TileOverlayUpdates updates2 =
TileOverlayUpdates.from(previous, current2);
final TileOverlayUpdates updates3 =
TileOverlayUpdates.from(previous, current3);
expect(updates1, updates2);
expect(updates1, isNot(updates3));
});
test('hashCode', () async {
final TileOverlay to1 = TileOverlay(tileOverlayId: TileOverlayId('id1'));
final TileOverlay to2 = TileOverlay(tileOverlayId: TileOverlayId('id2'));
final TileOverlay to3 = TileOverlay(tileOverlayId: TileOverlayId('id3'));
final TileOverlay to3Changed =
TileOverlay(tileOverlayId: TileOverlayId('id3'), transparency: 0.5);
final TileOverlay to4 = TileOverlay(tileOverlayId: TileOverlayId('id4'));
final Set<TileOverlay> previous = Set.from(<TileOverlay>[to1, to2, to3]);
final Set<TileOverlay> current =
Set.from(<TileOverlay>[to2, to3Changed, to4]);
final TileOverlayUpdates updates =
TileOverlayUpdates.from(previous, current);
expect(
updates.hashCode,
hashValues(
hashList(updates.tileOverlaysToAdd),
hashList(updates.tileOverlayIdsToRemove),
hashList(updates.tileOverlaysToChange)));
});
test('toString', () async {
final TileOverlay to1 = TileOverlay(tileOverlayId: TileOverlayId('id1'));
final TileOverlay to2 = TileOverlay(tileOverlayId: TileOverlayId('id2'));
final TileOverlay to3 = TileOverlay(tileOverlayId: TileOverlayId('id3'));
final TileOverlay to3Changed =
TileOverlay(tileOverlayId: TileOverlayId('id3'), transparency: 0.5);
final TileOverlay to4 = TileOverlay(tileOverlayId: TileOverlayId('id4'));
final Set<TileOverlay> previous = Set.from(<TileOverlay>[to1, to2, to3]);
final Set<TileOverlay> current =
Set.from(<TileOverlay>[to2, to3Changed, to4]);
final TileOverlayUpdates updates =
TileOverlayUpdates.from(previous, current);
expect(
updates.toString(),
'TileOverlayUpdates(add: ${updates.tileOverlaysToAdd}, '
'remove: ${updates.tileOverlayIdsToRemove}, '
'change: ${updates.tileOverlaysToChange})');
});
});
}