Index: test/codegen/corelib/for_in_test.dart |
diff --git a/test/codegen/corelib/for_in_test.dart b/test/codegen/corelib/for_in_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..616d7211c284114f6c248c8d8102f7c0104d7556 |
--- /dev/null |
+++ b/test/codegen/corelib/for_in_test.dart |
@@ -0,0 +1,96 @@ |
+// 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. |
+ |
+import "package:expect/expect.dart"; |
+ |
+class ForInTest { |
+ static testMain() { |
+ testSimple(); |
+ testBreak(); |
+ testContinue(); |
+ testClosure(); |
+ } |
+ |
+ static Set<int> getSmallSet() { |
+ Set<int> set = new Set<int>(); |
+ set.add(1); |
+ set.add(2); |
+ set.add(4); |
+ return set; |
+ } |
+ |
+ static void testSimple() { |
+ Set<int> set = getSmallSet(); |
+ int count = 0; |
+ for (final i in set) { |
+ count += i; |
+ } |
+ Expect.equals(7, count); |
+ |
+ count = 0; |
+ for (var i in set) { |
+ count += i; |
+ } |
+ Expect.equals(7, count); |
+ |
+ count = 0; |
+ for (int i in set) { |
+ count += i; |
+ } |
+ Expect.equals(7, count); |
+ |
+ count = 0; |
+ for (final int i in set) { |
+ count += i; |
+ } |
+ Expect.equals(7, count); |
+ |
+ count = 0; |
+ int i = 0; |
+ Expect.equals(false, set.contains(i)); // Used to test [i] after loop. |
+ for (i in set) { |
+ count += i; |
+ } |
+ Expect.equals(7, count); |
+ Expect.equals(true, set.contains(i)); |
+ // The default implementation of [Set] preserves order. |
+ Expect.equals(4, i); |
+ } |
+ |
+ static void testBreak() { |
+ Set<int> set = getSmallSet(); |
+ int count = 0; |
+ for (final i in set) { |
+ if (i == 4) break; |
+ count += i; |
+ } |
+ Expect.equals(true, count < 4); |
+ } |
+ |
+ static void testContinue() { |
+ Set<int> set = getSmallSet(); |
+ int count = 0; |
+ for (final i in set) { |
+ if (i < 4) continue; |
+ count += i; |
+ } |
+ Expect.equals(4, count); |
+ } |
+ |
+ static void testClosure() { |
+ Set<int> set = getSmallSet(); |
+ List<Function> closures = new List(set.length); |
+ int index = 0; |
+ for (var i in set) { |
+ closures[index++] = () => i; |
+ } |
+ |
+ Expect.equals(index, set.length); |
+ Expect.equals(7, closures[0]() + closures[1]() + closures[2]()); |
+ } |
+} |
+ |
+main() { |
+ ForInTest.testMain(); |
+} |