// Copyright (c) 2011, 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.

// Tests map literals.

class MapLiteralTest {
  MapLiteralTest() {}

  static testMain() {
    var test = new MapLiteralTest();
    test.testStaticInit();
    test.testConstInit();
  }

  testStaticInit() {
    var testClass = new StaticInit();
    testClass.test();
  }

  testConstInit() {
    var testClass = new ConstInit();
    testClass.test();
  }

  testLocalInit() {
    // Test construction of static final map literals
    var map1 = {"a":1, "b":2};
    // Test construction of static final map literals, with numbers
    var map2 = {"1":1, "2":2};

    Expect.equals(1, map1["a"]);
    Expect.equals(2, map1["b"]);

    Expect.equals(1, map2["1"]);
    Expect.equals(2, map2["2"]);
  }
}

class StaticInit  {
  StaticInit() {}

  // Test construction of static final map literals
  static final map1 = const {"a":1, "b":2};
  // Test construction of static final map literals, with numbers
  static final map2 = const {"1":1, "2":2};

  test() {
    Expect.equals(1, map1["a"]);
    Expect.equals(2, map1["b"]);

    Expect.equals(1, map2["1"]);
    Expect.equals(2, map2["2"]);
  }
}

class ConstInit {

  final map1;
  final map2;

  ConstInit() : this.map1 = {"a":1, "b":2}, this.map2 = {"1":1, "2":2} {
  }

  test() {
    Expect.equals(1, map1["a"]);
    Expect.equals(2, map1["b"]);

    Expect.equals(1, map2["1"]);
    Expect.equals(2, map2["2"]);
  }
}

main() {
  MapLiteralTest.testMain();
}
