// Copyright (c) 2016, 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:collection/collection.dart';
import 'package:test/test.dart';

void main() {
  test("uses the given equality", () {
    var map = new EqualityMap(const IterableEquality());
    expect(map, isEmpty);

    map[[1, 2, 3]] = 1;
    expect(map, containsPair([1, 2, 3], 1));

    map[[1, 2, 3]] = 2;
    expect(map, containsPair([1, 2, 3], 2));

    map[[2, 3, 4]] = 3;
    expect(map, containsPair([1, 2, 3], 2));
    expect(map, containsPair([2, 3, 4], 3));
  });

  test("EqualityMap.from() prefers the lattermost equivalent key", () {
    var map = new EqualityMap.from(const IterableEquality(), {
      [1, 2, 3]: 1,
      [2, 3, 4]: 2,
      [1, 2, 3]: 3,
      [2, 3, 4]: 4,
      [1, 2, 3]: 5,
      [1, 2, 3]: 6,
    });

    expect(map, containsPair([1, 2, 3], 6));
    expect(map, containsPair([2, 3, 4], 4));
  });
}
