blob: abf13100464ab6af9323d7bcebb03cdcb9edfd2c [file] [log] [blame]
// 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();
}