// 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 void retainWhere(bool test(E element))
/// Removes all elements of this set that fail to satisfy test.
/// @description Checks that all elements that satisfy test are retained, and
/// elements that don't satisfy not
/// @author sgrekhov@unipro.ru

library retainWhere_A01_t01;
import "set.lib.dart";
import "../../../Utils/expect.dart";

void check(Set source, bool test(var element)) {
  Set copy = create(source);
  copy.retainWhere(test);
  int j = 0;
  for (int i = 0; i < source.length; i++) {
    if (test(source.elementAt(i))) {
      Expect.identical(source.elementAt(i), copy.elementAt(j));
      j++;
    }
  }
  Expect.equals(j, copy.length);
}

test(Set create([Iterable content])) {
  Set set = create([1, 3, 3, 4, 5, 6]);
  check(set, (var element) => true);
  check(set, (var element) => false);
  check(set, (var element) => element > 4);
  check(set, (var element)=> element < 4);
  check(set, (var element)=> element == 4);
}

main() {
  test(create);
}
