// Copyright (c) 2013, 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 Iterator<E> iterator
/// Returns a new [Iterator] that allows iterating the elements of this
/// [Iterable].
/// @description Checks that the returned [Iterator] iterates over
/// all elements of this [Iterable] object.
/// @author msyabro


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

void checkIterator(List<double> list) {
  var l = new Float32List.fromList(list);
  var it = l.iterator;
  var i = 0;
  while (it.moveNext()) {
    Expect.equals(l[i++], it.current);
  }
  Expect.equals(l.length, i);
}

main() {
  checkIterator([]);
  checkIterator([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]);

  var a = List<double>.filled(255, 0.0);
  for (var i = 0; i < a.length; i++) {
    a[i] = i * 1.0;
  }
  checkIterator(a);
}
