Index: test/codegen/corelib/iterable_length_test.dart |
diff --git a/test/codegen/corelib/iterable_length_test.dart b/test/codegen/corelib/iterable_length_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..20c9663c62aa8af49c381c4114975f867e100ec3 |
--- /dev/null |
+++ b/test/codegen/corelib/iterable_length_test.dart |
@@ -0,0 +1,44 @@ |
+// 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); |
+} |