blob: 55c0e56e10035cb46b9a1863c4a61f708e82baea [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) })
* The [isValidKey] function defaults to just testing if the object is a [K]
* instance.
* @description Checks that default [isValidKey] function checks if the object
* is a [K] instance. This means that [equals] and [hashCode] functions are
* never called when trying to call [containsKey] or [remove] for unsupported
* keys.
* @author iarkh@unipro.ru
*/
import "../../../Utils/expect.dart";
import "dart:collection";
int i = 0;
bool equals(dynamic key1, dynamic key2) {
i++;
return key1 == key2;
}
int hashCode(dynamic key) {
i++;
return key;
}
main() {
HashMap<int, int> map =
new HashMap<int, int>(equals: equals, hashCode: hashCode);
map.addAll({0: 0, 1: 0, 2: 12, -3: 0, -4: 0});
i = 0;
bool j = map.containsKey(null);
Expect.equals(0, i);
j = map.containsKey("string");
Expect.equals(0, i);
int? k = map["abcd"];
Expect.equals(0, i);
map.remove([]);
Expect.equals(0, i);
}