| // Copyright (c) 2018, 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. |
| |
| /// @assertion Each element in a map can be one of a few things: |
| /// A normal expression. |
| /// An if element. |
| /// A for element. |
| /// The body of if and for elements use listElement, not expression, which |
| /// allows nesting. |
| /// |
| /// @description Checks that each element in the map can be a normal expression, |
| /// 'if' element or 'for' element |
| /// @author sgrekhov@unipro.ru |
| |
| import "../../Utils/expect.dart"; |
| |
| main() { |
| bool b = true; |
| Map<int, String> map1 = { |
| 0: "0", |
| if (b) 1: "1", |
| if (!b) 2 : "2", |
| for (int i = 5; i < 9; i++) i: "$i" |
| }; |
| Expect.mapEquals({0: "0", 1: "1", 5: "5", 6: "6", 7: "7", 8: "8"}, map1); |
| |
| Expect.mapEquals({}, { |
| if (false) 0: "x", |
| for (int i = 0; i < -1; i++) 1: "y" |
| }); |
| |
| Iterable<String> collection = ["not", "to", "be"]; |
| Map map2 = <String, String>{ |
| "0": "To", |
| "1": "be", |
| if (b) "2": "or", |
| if (!b) "3": "and", |
| for (var v in collection) v.substring(0, 1): v |
| }; |
| Expect.mapEquals({ |
| "0": "To", |
| "1": "be", |
| "2": "or", |
| "n": "not", |
| "t": "to", |
| "b": "be" |
| }, map2); |
| |
| const constMap = const <int, String>{ |
| 0: "0", |
| if (1 > 2) 1: "1", |
| if (2 > 1) 2: "2", |
| 3: "3" |
| }; |
| Expect.mapEquals({0: "0", 2: "2", 3: "3"}, constMap); |
| } |