| // 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 interface HashSet<E> |
| /// HashSet({bool equals(E e1, E e2), int hashCode(E e), |
| /// bool isValidKey(potentialKey) }) |
| /// If [equals] or [hashCode] are omitted, the set uses the elements' intrinsic |
| /// [Object.operator==] and [Object.hashCode]. ... |
| /// If neither [equals], [hashCode], nor [isValidKey] is provided, the default |
| /// [isValidKey] instead accepts all values. The default equality and hashcode |
| /// operations are assumed to work on all objects. |
| /// @description Checks that default [HashSet] implementation can contain |
| /// elements of different types including [null], and [Object.equals], |
| /// [Object.hashCode] functions are used for the comparison. |
| /// @author iarkh@unipro.ru |
| |
| import "../../../Utils/expect.dart"; |
| import "dart:collection"; |
| |
| check(HashSet set, List list1, List list2, List list3) { |
| list1.forEach((element) => Expect.isTrue(set.contains(element))); |
| list2.forEach((element) => Expect.isFalse(set.contains(element))); |
| } |
| |
| main() { |
| HashSet set = new HashSet(); |
| List aList = [-1, 0, 1, 2, 3, null, "test", "", [], [1, 2, null], |
| {0 : 15, 1 : -9, 123 : "I am here"}, new Error()]; |
| set.addAll(aList); |
| Expect.equals(aList.length, set.length); |
| aList.forEach((element) => Expect.isTrue(set.contains(element))); |
| } |