blob: a381d6ed3b634a558dcee2828d376bb09b66c9f0 [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) })
* 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)));
}
}