blob: 8d59d8cc8d5a76ce8b6d632974b4d25beb3e362c [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 HashMap({bool equals(K key1, K key2), int hashCode(K key),
/// bool isValidKey(potentialKey) })
/// If [equals] is provided, it is used to compare the keys in the table with new
/// keys. Similar, if [hashCode] is provided, it is used to produce a hash
/// value for keys in order to place them in the hash table.
/// @description This test checks [equals] method which always returns [true]: it
/// means that only zero or one element can be in the map.
/// @author iarkh@unipro.ru
import "../../../Utils/expect.dart";
import "dart:collection";
check(HashMap map, Map expected, List unexistent) {
expected.forEach((key, value) {
Expect.isTrue(map.containsKey(key));
Expect.equals(value, map[key]);
});
}
main() {
Map aMap = {0 : 0, 1 : 0, 2 : 0, -3 : 0, -4 : 0, "testme" : 0, null : 0};
HashMap<Object?, Object> map = new HashMap(
equals: (Object? key1, Object? key2) => true,
hashCode: (dynamic e) => 12345);
map.putIfAbsent(0, () => 0);
check(map, aMap, []);
map.putIfAbsent(3, () => -23);
check(map, aMap, []);
map.putIfAbsent(null, () => -23);
check(map, aMap, []);
}