// 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.

import "package:expect/expect.dart";

main() {
  dynamic a = {1: 'a', 2: 'b', 3: 'c'};
  dynamic b = {1: 'a', 2: 'b', 3: 'c'};
  Expect.equals(false, a == b);

  a = const {1: 'a', 2: 'b', 3: 'c'};
  b = const {1: 'a', 2: 'b', 3: 'c'};
  Expect.equals(true, a == b);

  a = const <int, String>{1: 'a', 2: 'b', 3: 'c'};
  b = const {1: 'a', 2: 'b', 3: 'c'};
  Expect.equals(true, a == b);

  a = const <num, String>{1: 'a', 2: 'b', 3: 'c'};
  b = const {1: 'a', 2: 'b', 3: 'c'};
  Expect.equals(false, a == b);

  a = const <dynamic, dynamic>{1: 'a', 2: 'b', 3: 'c'};
  b = const {1: 'a', 2: 'b', 3: 'c'};
  Expect.equals(false, a == b);
}
