// 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 The [HasNextIterator] class wraps an [Iterator] and provides
/// methods to iterate over an object using [hasNext] and [next].
/// @description Checks that created object works as specified.
/// @author kaigorodov

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

void check (Iterable list) {
  HasNextIterator hnit = new HasNextIterator(list.iterator);
  Iterator it = list.iterator;
  for (;;) {
    bool hNext = hnit.hasNext;
    bool mNext = it.moveNext();
    Expect.equals(hNext, mNext);
    if (!mNext) {
      break;
    }
    Expect.equals(it.current, hnit.next());
  }
}
     
main() {
  check([]);
  check([1, 2, 3, 4, 0, 9, -1]);
  check(new Iterable.generate(0, (int index) => index * 5));
  check(new Iterable.generate(100, (int index) => index * 5));
}
