Index: frog/tests/leg_only/for_in_test.dart |
=================================================================== |
--- frog/tests/leg_only/for_in_test.dart (revision 8644) |
+++ frog/tests/leg_only/for_in_test.dart (working copy) |
@@ -1,80 +0,0 @@ |
-// Copyright (c) 2011, 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. |
- |
-// Test foreach (aka. for-in) functionality. |
- |
-testIterator(List expect, Iterable input) { |
- int i = 0; |
- for (var value in input) { |
- Expect.isTrue(i < expect.length); |
- Expect.equals(expect[i], value); |
- i += 1; |
- } |
- Expect.equals(expect.length, i); |
- |
- i = 0; |
- var value2; |
- for (value2 in input) { |
- Expect.isTrue(i < expect.length); |
- Expect.equals(expect[i], value2); |
- i += 1; |
- } |
- Expect.equals(expect.length, i); |
-} |
- |
-class MyIterable<T> implements Iterable<T> { |
- final List<T> values; |
- MyIterable(List<T> values) : this.values = values; |
- Iterator iterator() { |
- return new MyListIterator(values); |
- } |
-} |
- |
-class MyListIterator<T> implements Iterator<T> { |
- final List<T> values; |
- int index; |
- MyListIterator(List<T> values) : this.values = values, index = 0; |
- bool hasNext() => index < values.length; |
- T next() => values[index++]; |
-} |
- |
-void main() { |
- testIterator([], []); |
- testIterator([], new MyIterable([])); |
- testIterator([1], [1]); |
- testIterator([1], new MyIterable([1])); |
- testIterator([1,2,3], [1,2,3]); |
- testIterator([1,2,3], new MyIterable([1,2,3])); |
- testIterator(["a","b","c"], ["a","b","c"]); |
- testIterator(["a","b","c"], new MyIterable(["a","b","c"])); |
- |
- // Several nested for-in's. |
- for (var x in [[["a"]]]) { |
- for (var y in x) { |
- for (var z in y) { |
- Expect.equals("a", z); |
- } |
- } |
- } |
- |
- // Simultaneous iteration of the same iterable. |
- for (var iterable in [[1,2,3], new MyIterable([1,2,3])]) { |
- int result = 0; |
- for (var x in iterable) { |
- for (var y in iterable) { |
- result += x * y; |
- } |
- } |
- Expect.equals(36, result); |
- } |
- |
- // Using the same variable (showing that the expression is evaluated |
- // in the outer scope). |
- int result = 0; |
- var x = [1,2,3]; |
- for (var x in x) { |
- result += x; |
- } |
- Expect.equals(6, result); |
-} |