|  | // Copyright (c) 2019, 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:async_helper/async_helper.dart"; | 
|  | import 'package:expect/expect.dart'; | 
|  |  | 
|  | final list = [1, 2, 3]; | 
|  | final map = {1: 1, 2: 2, 3: 3}; | 
|  | final set = {1, 2, 3}; | 
|  |  | 
|  | void main() { | 
|  | asyncTest(() async { | 
|  | await testList(); | 
|  | await testMap(); | 
|  | await testSet(); | 
|  | }); | 
|  | } | 
|  |  | 
|  | Future<void> testList() async { | 
|  | var future123 = Future.value([1, 2, 3]); | 
|  | var future1 = Future.value(1); | 
|  |  | 
|  | // Await in iterable. | 
|  | Expect.listEquals(list, [for (var i in await future123) i]); | 
|  |  | 
|  | // Await in for-in body. | 
|  | Expect.listEquals(list, [for (var i in [1, 2, 3]) await Future.value(i)]); | 
|  |  | 
|  | // Await in initializer. | 
|  | Expect.listEquals(list, [for (var i = await future1; i < 4; i++) i]); | 
|  |  | 
|  | // Await in condition. | 
|  | Expect.listEquals(list, | 
|  | [for (var i = 1; await Future.value(i < 4); i++) i]); | 
|  |  | 
|  | // Await in increment. | 
|  | Expect.listEquals(list, | 
|  | [for (var i = 1; i < 4; await Future(() => i++)) i]); | 
|  |  | 
|  | // Await in for body. | 
|  | Expect.listEquals(list, | 
|  | [for (var i = 1; i < 4; i++) await Future.value(i)]); | 
|  | } | 
|  |  | 
|  | Future<void> testMap() async { | 
|  | var future123 = Future.value([1, 2, 3]); | 
|  | var future1 = Future.value(1); | 
|  |  | 
|  | // Await in iterable. | 
|  | Expect.mapEquals(map, {for (var i in await future123) i: i}); | 
|  |  | 
|  | // Await in for-in body key. | 
|  | Expect.mapEquals(map, | 
|  | {for (var i in [1, 2, 3]) await Future.value(i): i}); | 
|  |  | 
|  | // Await in for-in body value. | 
|  | Expect.mapEquals(map, | 
|  | {for (var i in [1, 2, 3]) i: await Future.value(i)}); | 
|  |  | 
|  | // Await in initializer. | 
|  | Expect.mapEquals(map, {for (var i = await future1; i < 4; i++) i: i}); | 
|  |  | 
|  | // Await in condition. | 
|  | Expect.mapEquals(map, | 
|  | {for (var i = 1; await Future.value(i < 4); i++) i: i}); | 
|  |  | 
|  | // Await in increment. | 
|  | Expect.mapEquals(map, | 
|  | {for (var i = 1; i < 4; await Future(() => i++)) i: i}); | 
|  |  | 
|  | // Await in for body key. | 
|  | Expect.mapEquals(map, | 
|  | {for (var i = 1; i < 4; i++) await Future.value(i): i}); | 
|  |  | 
|  | // Await in for body value. | 
|  | Expect.mapEquals(map, | 
|  | {for (var i = 1; i < 4; i++) i: await Future.value(i)}); | 
|  | } | 
|  |  | 
|  | Future<void> testSet() async { | 
|  | var future123 = Future.value([1, 2, 3]); | 
|  | var future1 = Future.value(1); | 
|  |  | 
|  | // Await in iterable. | 
|  | Expect.setEquals(set, {for (var i in await future123) i}); | 
|  |  | 
|  | // Await in for-in body. | 
|  | Expect.setEquals(set, {for (var i in [1, 2, 3]) await Future.value(i)}); | 
|  |  | 
|  | // Await in initializer. | 
|  | Expect.setEquals(set, {for (var i = await future1; i < 4; i++) i}); | 
|  |  | 
|  | // Await in condition. | 
|  | Expect.setEquals(set, | 
|  | {for (var i = 1; await Future.value(i < 4); i++) i}); | 
|  |  | 
|  | // Await in increment. | 
|  | Expect.setEquals(set, | 
|  | {for (var i = 1; i < 4; await Future(() => i++)) i}); | 
|  |  | 
|  | // Await in for body. | 
|  | Expect.setEquals(set, | 
|  | {for (var i = 1; i < 4; i++) await Future.value(i)}); | 
|  | } |