blob: 0db7aab648047d8da6f711650a84d0233eb29d30 [file] [log] [blame]
// Copyright (c) 2016, 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.
/**
* @assertion LinkedHashMap({bool equals(K key1, K key2), int hashCode(K key),
* bool isValidKey(potentialKey)})
* Creates an insertion-ordered hash-table based [Map].
* @description Checks that [inkedHashMap] preserves insertion order if [addAll]
* is used to add elements to the map.
* @author sgrekhov@unipro.ru
*/
import "../../../Utils/expect.dart";
import "dart:collection";
checkOrder(Map map, List keyOrder, List valuesOrder) {
int idx = 0;
for(var k in map.keys) {
Expect.equals(keyOrder[idx++], k);
}
idx = 0;
for(var v in map.values) {
Expect.equals(valuesOrder[idx++], v);
}
}
main() {
LinkedHashMap map = new LinkedHashMap();
map["1"] = 1;
map["2"] = 2;
map["3"] = 3;
checkOrder(map, ["1", "2", "3"], [1, 2, 3]);
map.addAll(new LinkedHashMap.fromIterables(["4", "5", "6"], [4, 5, 6]));
checkOrder(map, ["1", "2", "3", "4", "5", "6"], [1, 2, 3, 4, 5, 6]);
map.addAll(new LinkedHashMap.fromIterables(["1", "2", "3"], [11, 22, 33]));
checkOrder(map, ["1", "2", "3", "4", "5", "6"], [11, 22, 33, 4, 5, 6]);
map.addAll(new LinkedHashMap.fromIterables(["1", "2", "0"], [1, 2, 0]));
checkOrder(map, ["1", "2", "3", "4", "5", "6", "0"], [1, 2, 33, 4, 5, 6, 0]);
}