| /* |
| * 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.from(Iterable elements) |
| * All the [elements] should be assignable to [E]. [The elements] iterable |
| * itself may have any element type, so this constructor can be used to |
| * down-cast a [Set], for example as: |
| * Set<SuperType> superSet = ...; |
| * Set<SubType> subSet = |
| * new HashSet<SubType>.from(superSet.where((e) => e is SubType)); |
| * @description Checks that provided down-cast example works as expected |
| * @author iarkh@unipro.ru |
| */ |
| |
| import "../../../Utils/expect.dart"; |
| import "dart:collection"; |
| |
| check(HashSet set, List list1, List list2) { |
| Expect.equals(list1. length, set.length); |
| list1.forEach((element) => Expect.isTrue(set.contains(element))); |
| list2.forEach((element) => Expect.isFalse(set.contains(element))); |
| } |
| |
| main() { |
| List list = ["testme", 1, 2, 3, null, "", [], [1, 2, 3], {}, new Error(), |
| -1, -2, "string1", "string2", "string3", 'a', 'b', 'c']; |
| |
| HashSet set = new HashSet<int>.from(list.where((e) => e is int)); |
| check(set, [1, 2, 3, -1, -2], |
| ["testme", null, "", [], [1, 2, 3], {}, new Error(), "string1", "string2", |
| "string3", 'a', 'b', 'c']); |
| |
| set = new HashSet<String>.from(list.where((e) => e is String)); |
| check(set, ["testme", "", "string1", "string2", "string3", 'a', 'b', 'c'], |
| [1, 2, 3, null, [], [1, 2, 3], {}, new Error(), -1, -2]); |
| |
| set = new HashSet.from(list.where((e) => e is Object)); |
| check(set, list, ["unexist", 0 -5]); |
| } |