| // 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. |
| |
| // @dart = 2.9 |
| |
| 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); |
| } |