// 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.

// @dart = 2.9

/// @assertion bool every(bool f(E element))
/// Checks whether every element of this iterable satisfies test.
/// Checks every [element] in iteration order, and returns [false] if any of them
/// make [test] return [false], otherwise returns [true].
/// @description Checks that [true] is returned if every element of this iterable
/// satisfies [test]
/// @author iarkh@unipro.ru

import "../../../Utils/expect.dart";
import "dart:collection";

class MyIterable extends Object with IterableMixin {
  List _content;
  MyIterable(List list): _content = list;

  Iterator get iterator {
    return _content.iterator;
  }
}

main() {
  MyIterable iterable = new MyIterable([1, 2, 3, 4, 5, 6, 7, 8, 9]);
  Expect.isTrue(iterable.every((var element) { return true; }));
  Expect.isTrue(iterable.every((var element) { return element > 0; }));
  Expect.isFalse(iterable.every((var element) { return false; }));
  Expect.isFalse(iterable.every((var element) { return element < 0; }));
  Expect.isFalse(iterable.every((var element) { return element > 4; }));
}
