| Index: tests/corelib/map_test.dart
|
| diff --git a/tests/corelib/map_test.dart b/tests/corelib/map_test.dart
|
| index c9ba29f56329d5406b11c94a27b1a1c71b5b1919..4f48be4a085d1f8d7cfaa25425faad4b11042de6 100644
|
| --- a/tests/corelib/map_test.dart
|
| +++ b/tests/corelib/map_test.dart
|
| @@ -29,25 +29,8 @@ void main() {
|
| testNumericKeys(new Map<num, String>());
|
| testNumericKeys(new HashMap());
|
| testNumericKeys(new HashMap<num, String>());
|
| - testNumericKeys(new HashMap(equals: identical));
|
| - testNumericKeys(new HashMap<num, String>(equals: identical));
|
| testNumericKeys(new LinkedHashMap());
|
| testNumericKeys(new LinkedHashMap<num, String>());
|
| -
|
| - testNaNKeys(new Map());
|
| - testNaNKeys(new Map<num, String>());
|
| - testNaNKeys(new HashMap());
|
| - testNaNKeys(new HashMap<num, String>());
|
| - testNaNKeys(new LinkedHashMap());
|
| - testNaNKeys(new LinkedHashMap<num, String>());
|
| - // Identity maps fail the NaN-keys tests because the test assumes that
|
| - // NaN is not equal to NaN.
|
| -
|
| - testIdentityMap(new HashMap(equals: identical));
|
| -
|
| - testCustomMap(new HashMap(equals: myEquals, hashCode: myHashCode));
|
| -
|
| - testIterationOrder(new LinkedHashMap());
|
| }
|
|
|
|
|
| @@ -390,10 +373,7 @@ void testNumericKeys(Map map) {
|
| Expect.equals(null, map[key]);
|
| }
|
| Expect.isTrue(map.isEmpty);
|
| -}
|
|
|
| -void testNaNKeys(Map map) {
|
| - Expect.isTrue(map.isEmpty);
|
| // Test NaN.
|
| var nan = double.NAN;
|
| Expect.isFalse(map.containsKey(nan));
|
| @@ -427,224 +407,3 @@ void testLength(int length, Map map) {
|
| (length == 0 ? Expect.isTrue : Expect.isFalse)(map.isEmpty);
|
| (length != 0 ? Expect.isTrue : Expect.isFalse)(map.isNotEmpty);
|
| }
|
| -
|
| -
|
| -testIdentityMap(Map map) {
|
| - Expect.isTrue(map.isEmpty);
|
| -
|
| - var nan = double.NAN;
|
| - // TODO(11551): Remove guard when dart2js makes identical(NaN, NaN) true.
|
| - if (identical(nan, nan)) {
|
| - map[nan] = 42;
|
| - testLength(1, map);
|
| - Expect.isTrue(map.containsKey(nan));
|
| - Expect.equals(42, map[nan]);
|
| - map[nan] = 37;
|
| - testLength(1, map);
|
| - Expect.equals(37, map[nan]);
|
| - Expect.equals(37, map.remove(nan));
|
| - testLength(0, map);
|
| - }
|
| -
|
| - Vampire v1 = const Vampire(1);
|
| - Vampire v2 = const Vampire(2);
|
| - Expect.isFalse(v1 == v1);
|
| - Expect.isFalse(v2 == v2);
|
| - Expect.isTrue(v2 == v1); // Snob!
|
| -
|
| - map[v1] = 1;
|
| - map[v2] = 2;
|
| - testLength(2, map);
|
| -
|
| - Expect.isTrue(map.containsKey(v1));
|
| - Expect.isTrue(map.containsKey(v2));
|
| -
|
| - Expect.equals(1, map[v1]);
|
| - Expect.equals(2, map[v2]);
|
| -
|
| - Expect.equals(1, map.remove(v1));
|
| - testLength(1, map);
|
| - Expect.isFalse(map.containsKey(v1));
|
| - Expect.isTrue(map.containsKey(v2));
|
| -
|
| - Expect.isNull(map.remove(v1));
|
| - Expect.equals(2, map.remove(v2));
|
| - testLength(0, map);
|
| -
|
| - var eq01 = new Equalizer(0);
|
| - var eq02 = new Equalizer(0);
|
| - var eq11 = new Equalizer(1);
|
| - var eq12 = new Equalizer(1);
|
| - // Sanity.
|
| - Expect.equals(eq01, eq02);
|
| - Expect.equals(eq02, eq01);
|
| - Expect.equals(eq11, eq12);
|
| - Expect.equals(eq12, eq11);
|
| - Expect.notEquals(eq01, eq11);
|
| - Expect.notEquals(eq01, eq12);
|
| - Expect.notEquals(eq02, eq11);
|
| - Expect.notEquals(eq02, eq12);
|
| - Expect.notEquals(eq11, eq01);
|
| - Expect.notEquals(eq11, eq02);
|
| - Expect.notEquals(eq12, eq01);
|
| - Expect.notEquals(eq12, eq02);
|
| -
|
| - map[eq01] = 0;
|
| - map[eq02] = 1;
|
| - map[eq11] = 2;
|
| - map[eq12] = 3;
|
| - testLength(4, map);
|
| -
|
| - Expect.equals(0, map[eq01]);
|
| - Expect.equals(1, map[eq02]);
|
| - Expect.equals(2, map[eq11]);
|
| - Expect.equals(3, map[eq12]);
|
| -
|
| - Expect.isTrue(map.containsKey(eq01));
|
| - Expect.isTrue(map.containsKey(eq02));
|
| - Expect.isTrue(map.containsKey(eq11));
|
| - Expect.isTrue(map.containsKey(eq12));
|
| -
|
| - Expect.equals(1, map.remove(eq02));
|
| - Expect.equals(3, map.remove(eq12));
|
| - testLength(2, map);
|
| - Expect.isTrue(map.containsKey(eq01));
|
| - Expect.isFalse(map.containsKey(eq02));
|
| - Expect.isTrue(map.containsKey(eq11));
|
| - Expect.isFalse(map.containsKey(eq12));
|
| -
|
| - Expect.equals(0, map[eq01]);
|
| - Expect.equals(null, map[eq02]);
|
| - Expect.equals(2, map[eq11]);
|
| - Expect.equals(null, map[eq12]);
|
| -
|
| - Expect.equals(0, map.remove(eq01));
|
| - Expect.equals(2, map.remove(eq11));
|
| - testLength(0, map);
|
| -
|
| - map[eq01] = 0;
|
| - map[eq02] = 1;
|
| - map[eq11] = 2;
|
| - map[eq12] = 3;
|
| - testLength(4, map);
|
| -
|
| - // Transfer to equality-based map will collapse elements.
|
| - Map eqMap = new HashMap();
|
| - eqMap.addAll(map);
|
| - testLength(2, eqMap);
|
| - Expect.isTrue(eqMap.containsKey(eq01));
|
| - Expect.isTrue(eqMap.containsKey(eq02));
|
| - Expect.isTrue(eqMap.containsKey(eq11));
|
| - Expect.isTrue(eqMap.containsKey(eq12));
|
| -}
|
| -
|
| -/** Class of objects that are equal if they hold the same id. */
|
| -class Equalizer {
|
| - int id;
|
| - Equalizer(this.id);
|
| - int get hashCode => id;
|
| - bool operator==(Object other) =>
|
| - other is Equalizer && id == (other as Equalizer).id;
|
| -}
|
| -
|
| -/**
|
| - * Objects that are not reflexive.
|
| - *
|
| - * They think they are better than their equals.
|
| - */
|
| -class Vampire {
|
| - final int generation;
|
| - const Vampire(this.generation);
|
| -
|
| - int get hashCode => generation;
|
| -
|
| - // The double-fang operator falsely claims that a vampire is equal to
|
| - // any of its sire's generation.
|
| - bool operator==(Object other) =>
|
| - other is Vampire && generation - 1 == (other as Vampire).generation;
|
| -}
|
| -
|
| -void testCustomMap(Map map) {
|
| - testLength(0, map);
|
| - var c11 = const Customer(1, 1);
|
| - var c12 = const Customer(1, 2);
|
| - var c21 = const Customer(2, 1);
|
| - var c22 = const Customer(2, 2);
|
| - // Sanity.
|
| - Expect.equals(c11, c12);
|
| - Expect.notEquals(c11, c21);
|
| - Expect.notEquals(c11, c22);
|
| - Expect.equals(c21, c22);
|
| - Expect.notEquals(c21, c11);
|
| - Expect.notEquals(c21, c12);
|
| -
|
| - Expect.isTrue(myEquals(c11, c21));
|
| - Expect.isFalse(myEquals(c11, c12));
|
| - Expect.isFalse(myEquals(c11, c22));
|
| - Expect.isTrue(myEquals(c12, c22));
|
| - Expect.isFalse(myEquals(c12, c11));
|
| - Expect.isFalse(myEquals(c12, c21));
|
| -
|
| - map[c11] = 42;
|
| - testLength(1, map);
|
| - Expect.isTrue(map.containsKey(c11));
|
| - Expect.isTrue(map.containsKey(c21));
|
| - Expect.isFalse(map.containsKey(c12));
|
| - Expect.isFalse(map.containsKey(c22));
|
| - Expect.equals(42, map[c11]);
|
| - Expect.equals(42, map[c21]);
|
| -
|
| - map[c21] = 37;
|
| - testLength(1, map);
|
| - Expect.isTrue(map.containsKey(c11));
|
| - Expect.isTrue(map.containsKey(c21));
|
| - Expect.isFalse(map.containsKey(c12));
|
| - Expect.isFalse(map.containsKey(c22));
|
| - Expect.equals(37, map[c11]);
|
| - Expect.equals(37, map[c21]);
|
| -
|
| - map[c22] = 42;
|
| - testLength(2, map);
|
| - Expect.isTrue(map.containsKey(c11));
|
| - Expect.isTrue(map.containsKey(c21));
|
| - Expect.isTrue(map.containsKey(c12));
|
| - Expect.isTrue(map.containsKey(c22));
|
| - Expect.equals(37, map[c11]);
|
| - Expect.equals(37, map[c21]);
|
| - Expect.equals(42, map[c12]);
|
| - Expect.equals(42, map[c22]);
|
| -
|
| - Expect.equals(42, map.remove(c12));
|
| - testLength(1, map);
|
| - Expect.isTrue(map.containsKey(c11));
|
| - Expect.isTrue(map.containsKey(c21));
|
| - Expect.isFalse(map.containsKey(c12));
|
| - Expect.isFalse(map.containsKey(c22));
|
| - Expect.equals(37, map[c11]);
|
| - Expect.equals(37, map[c21]);
|
| -
|
| - Expect.equals(37, map.remove(c11));
|
| - testLength(0, map);
|
| -}
|
| -
|
| -class Customer {
|
| - final int id;
|
| - final int secondId;
|
| - const Customer(this.id, this.secondId);
|
| - int get hashCode => id;
|
| - bool operator==(Object other) {
|
| - if (other is! Customer) return false;
|
| - Customer otherCustomer = other;
|
| - return id == otherCustomer.id;
|
| - }
|
| -}
|
| -
|
| -int myHashCode(Customer c) => c.secondId;
|
| -bool myEquals(Customer a, Customer b) => a.secondId == b.secondId;
|
| -
|
| -testIterationOrder(Map map) {
|
| - var order = [0, 6, 4, 2, 7, 9, 7, 1, 2, 5, 3];
|
| - for (int i = 0; i < order.length; i++) map[order[i]] = i;
|
| - Expect.listEquals(map.keys.toList(), [0, 6, 4, 2, 7, 9, 1, 5, 3]);
|
| - Expect.listEquals(map.values.toList(), [0, 1, 2, 8, 6, 5, 7, 9, 10]);
|
| -}
|
|
|