// Copyright (c) 2012, 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. import "dart:collection"; import "package:expect/expect.dart"; class A extends IterableBase { int count; A(this.count); Iterator get iterator { return new AIterator(count); } } class AIterator implements Iterator { int _count; int? _current; AIterator(this._count); bool moveNext() { if (_count > 0) { _current = _count; _count--; return true; } _current = null; return false; } get current => _current; } main() { var a = new A(10); Expect.equals(10, a.length); a = new A(0); Expect.equals(0, a.length); a = new A(5); Expect.equals(5, a.map((e) => e + 1).length); Expect.equals(3, a.where((e) => e >= 3).length); }