blob: 1f6e99f8bfc35bfc3d2bccd489bceca73c2c4ccd [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 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]);
}