blob: aa0c5380ec625a25a588d6b2650cece328947024 [file] [log] [blame]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart=2.9
void useAddAll() {
dynamic dynamicMap1 = <int, int>{0: 100, 1: 101, 2: 102};
dynamic dynamicMap2 = <num, num>{3: 103, 4: 104, 5: 105};
Map<int, int> intMap = <int, int>{6: 106, 7: 107, 8: 108};
Map<num, num> numMap1 = <int, int>{9: 109, 10: 110, 11: 111};
Map<num, num> numMap2 = <num, num>{12: 112, 13: 113, 14: 114};
var map1 = <int, int>{
...dynamicMap1,
...dynamicMap2,
...intMap,
...numMap1,
...numMap2
};
expect(
new Map<int, int>.fromIterables(new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map1);
var map2 = <num, num>{
...dynamicMap1,
...dynamicMap2,
...intMap,
...numMap1,
...numMap2
};
expect(
new Map<num, num>.fromIterables(new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map2);
var map3 = <int, int>{
...?dynamicMap1,
...?dynamicMap2,
...?intMap,
...?numMap1,
...?numMap2
};
expect(
new Map<int, int>.fromIterables(new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map3);
var map4 = <num, num>{
...?dynamicMap1,
...?dynamicMap2,
...?intMap,
...?numMap1,
...?numMap2
};
expect(
new Map<num, num>.fromIterables(new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map4);
Map<int, int> map5 = {
...dynamicMap1,
...dynamicMap2,
...intMap,
...numMap1,
...numMap2
};
expect(
new Map<int, int>.fromIterables(new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map5);
var map6 = {
...dynamicMap1,
...dynamicMap2,
...intMap,
...numMap1,
...numMap2
};
expect(
new Map<dynamic, dynamic>.fromIterables(
new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map6);
Map<int, int> map7 = {
...?dynamicMap1,
...?dynamicMap2,
...?intMap,
...?numMap1,
...?numMap2
};
expect(
new Map<int, int>.fromIterables(new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map7);
var map8 = {
...?dynamicMap1,
...?dynamicMap2,
...?intMap,
...?numMap1,
...?numMap2
};
expect(
new Map<dynamic, dynamic>.fromIterables(
new List<int>.generate(15, (int i) => i),
new List<int>.generate(15, (int i) => 100 + i)),
map8);
{
Map<int, int> intMap1 = {0: 100, 1: 101, 2: 102};
Map<int, int> intMap2 = {3: 103, 4: 104, 5: 105};
var map = {...intMap1, ...intMap2};
expect(
new Map<int, int>.fromIterables(new List<int>.generate(6, (int i) => i),
new List<int>.generate(6, (int i) => 100 + i)),
map);
}
}
main() {
useAddAll();
}
void expect(Map map1, Map map2) {
if (map1.length != map2.length) {
throw 'Unexpected length. Expected ${map1.length}, actual ${map2.length}.';
}
for (MapEntry entry in map1.entries) {
if (!map2.containsKey(entry.key)) {
throw 'Key ${entry.key} not found. Expected $map1, actual $map2.';
}
if (map2[entry.key] != entry.value) {
throw 'Found value ${map2[entry.key]} expected ${entry.value} for key ${entry.key}.';
}
}
if (map1.runtimeType.toString() != map2.runtimeType.toString()) {
throw "Runtime time difference: "
"${map1.runtimeType.toString()} vs ${map2.runtimeType.toString()}";
}
}