| // 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) }) |
| /// Likewise, if [equals] is [identical], [hashCode] is [identityHashCode] and |
| /// [isValidKey] is omitted, the resulting map is identity based, and the |
| /// [isValidKey] defaults to accepting all keys. Such a map can be created |
| /// directly using [HashMap.identity]. |
| /// @description Checks that default [isValidKey] function accepts all the keys |
| /// if [equals] and [hashCode] functions are not provided for [HashMap.identity]. |
| /// @author iarkh@unipro.ru |
| |
| import "../../../Utils/expect.dart"; |
| import "dart:collection"; |
| |
| main() { |
| main() { |
| String aString = "string"; |
| Object anObject = new Object(); |
| Error anError = new Error(); |
| Map aMap = {0 : 1}; |
| List aList = [1, 2, 3]; |
| |
| Map map = {0 : 0, null : "null", aString : null, anObject : -3, |
| anError : "error", aMap : 6, aList : 1}; |
| |
| List notIdentical = [2, -5, "null", "str" + "ing", "string", new Object(), |
| new Error(), {0 : 1}, {}, [], [1, 2, 3]]; |
| |
| HashMap hashmap = new HashMap.identity(); |
| hashmap.addAll(map); |
| map.forEach((key, value) { |
| Expect.isTrue(hashmap.containsKey(key)); |
| Expect.equals(value, hashmap[key]); |
| }); |
| |
| notIdentical.forEach((element) => |
| Expect.isFalse(hashmap.containsKey(element))); |
| } |
| |
| } |