// 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. import "package:expect/expect.dart"; class MapLiteralTest { static testMain() { var map = {"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 {"a": 10, "b": 100, "a": 1000}; //# 01: compile-time error final cmap2 = const {"a": 10, "a": 100, "a": 1000}; //# 02: compile-time error var mmap = {"a": 10, "b": 100, "a": 1000}; //# 03: ok var mmap = {"a": ctr(), "b": ctr(), "a": ctr()}; //# 04: compile-time error Expect.equals(10, {"beta": 100, "alpha": 9 + 1}["alpha"]); Expect.equals( 10, { "beta": {"delta": 10}, "alpha": {"gamma": 10} }["alpha"]!["gamma"]); // Map literals at beginning of statement. {"pink": 100}; const {"floyd": 100}; } } main() { MapLiteralTest.testMain(); }