blob: 7ccf51b9a112015777cfbdbfd1ba2b68e58b7763 [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 bool contains(Object element)
/// Some types of iterable may have a different equality used for its elements.
/// For example, a [Set] may have a custom equality (see [Set.identical]) that
/// its [contains] uses. Likewise the [Iterable] returned by a [Map.keys] call
/// should use the same equality that the [Map] uses for keys.
/// @description Checks that [true] is returned if collection contains [element]
/// and [false] is returned otherwise for set.
/// @author iarkh@unipro.ru
import "../../../Utils/expect.dart";
import "dart:collection";
class MyIterable extends Object with IterableMixin {
Set _content;
MyIterable(Set set): _content = set;
Iterator get iterator {
return _content.iterator;
}
}
check(HashSet set, List list1, List list2) {
MyIterable iterable = new MyIterable(set);
list1.forEach((element) => Expect.isTrue(iterable.contains(element)));
list2.forEach((element) => Expect.isFalse(iterable.contains(element)));
}
main() {
HashSet set = new HashSet(
equals: (var key1, var key2) => key1 % 3 == key2 % 3,
hashCode: (var e) => e % 3);
set.add(0);
check(set, [0], [1, 2, 4, 5, 7, 8]);
set.add(3);
check(set, [0], [1, 2, 4, 5, 7, 8]);
set.add(7);
check(set, [0, 7], [2, 5, 8]);
set.add(4);
check(set, [0, 7], [2, 5, 8]);
set.add(14);
check(set, [0, 7, 14], []);
}