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