| // Copyright (c) 2012, 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 program for map literals. |
| |
| // @dart = 2.9 |
| |
| import "package:expect/expect.dart"; |
| |
| class MapLiteralTest { |
| static testMain() { |
| var map = <dynamic, dynamic>{"a": 1, "b": 2, "c": 3}; |
| |
| Expect.equals(map.length, 3); |
| Expect.equals(map["a"], 1); |
| Expect.equals(map["z"], null); |
| Expect.equals(map["c"], 3); |
| |
| map["foo"] = 42; |
| Expect.equals(map.length, 4); |
| Expect.equals(map["foo"], 42); |
| map["foo"] = 55; |
| Expect.equals(map.length, 4); |
| Expect.equals(map["foo"], 55); |
| |
| map.remove("foo"); |
| Expect.equals(map.length, 3); |
| Expect.equals(map["foo"], null); |
| |
| map["foo"] = "bar"; |
| Expect.equals(map.length, 4); |
| Expect.equals(map["foo"], "bar"); |
| |
| map.clear(); |
| Expect.equals(map.length, 0); |
| |
| var b = 22; |
| Expect.equals( |
| 22, |
| { |
| "a": 11, |
| "b": b, |
| }["b"]); |
| |
| var m = new Map(); |
| Expect.equals(m.length, 0); |
| for (var i = 1; i <= 16; i++) { |
| m[i.toString()] = i; |
| } |
| Expect.equals(16, m.length); |
| Expect.equals(1, m.remove("1")); |
| Expect.isNull(m.remove("1")); // Remove element twice. |
| Expect.equals(16, m.remove("16")); |
| Expect.equals(14, m.length); |
| |
| final cmap = const <String, num>{"a": 10, "b": 100, "a": 1000}; //# 01: compile-time error |
| final cmap2 = const <String, num>{"a": 10, "a": 100, "a": 1000}; //# 02: compile-time error |
| var mmap = <String, num>{"a": 10, "b": 100, "a": 1000}; //# 03: ok |
| var mmap = <String, num>{"a": ctr(), "b": ctr(), "a": ctr()}; //# 04: compile-time error |
| |
| Expect.equals(10, {"beta": 100, "alpha": 9 + 1}["alpha"]); |
| Expect.equals( |
| 10, |
| <String, Map>{ |
| "beta": {"delta": 10}, |
| "alpha": {"gamma": 10} |
| }["alpha"]["gamma"]); |
| |
| // Map literals at beginning of statement. |
| <String, num>{"pink": 100}; |
| const <String, num>{"floyd": 100}; |
| } |
| } |
| |
| main() { |
| MapLiteralTest.testMain(); |
| } |