Files
sdk/tests/corelib/iterable_length_test.dart
T
lrn@google.com 485c8a5999 Move Iterable implementation to collection.
Add IterableMixin and IterableBase to dart:collection.
For now, the implementation is duplicated, because mixins and const
constructors don't mix. We hope that mixins will be improved in the
future to allow using the mixin to define the base class.

Review URL: https://codereview.chromium.org//14022007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21457 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-15 14:32:16 +00:00

45 lines
911 B
Dart

// 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);
}