| // 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); |
| } |