Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 import "package:collection/collection.dart"; | |
| 6 import "package:unittest/unittest.dart"; | |
| 7 | |
| 8 void main() { | |
| 9 group("with an empty canonicalized map", () { | |
| 10 var map; | |
| 11 setUp(() { | |
| 12 map = new CanonicalizedMap<int, String, String>((key) => int.parse(key)); | |
|
Lasse Reichstein Nielsen
2014/07/01 09:18:15
"(key) => int.parse(key)" could be just "int.parse
nweiz
2014/07/01 21:21:44
Done.
| |
| 13 }); | |
| 14 | |
| 15 test("canonicalizes keys on set and get", () { | |
| 16 map["1"] = "value"; | |
| 17 expect(map["01"], equals("value")); | |
| 18 }); | |
| 19 | |
| 20 test("canonicalizes keys for addAll", () { | |
| 21 map.addAll({ | |
| 22 "1": "value 1", | |
| 23 "2": "value 2", | |
| 24 "3": "value 3" | |
| 25 }); | |
| 26 expect(map["01"], equals("value 1")); | |
| 27 expect(map["02"], equals("value 2")); | |
| 28 expect(map["03"], equals("value 3")); | |
| 29 }); | |
| 30 | |
| 31 test("uses the final value for addAll collisions", () { | |
| 32 map.addAll({ | |
| 33 "1": "value 1", | |
| 34 "01": "value 2", | |
| 35 "001": "value 3" | |
| 36 }); | |
| 37 expect(map.length, equals(1)); | |
| 38 expect(map["0001"], equals("value 3")); | |
| 39 }); | |
| 40 | |
| 41 test("clear clears the map", () { | |
| 42 map.addAll({ | |
| 43 "1": "value 1", | |
| 44 "2": "value 2", | |
| 45 "3": "value 3" | |
| 46 }); | |
| 47 expect(map, isNot(isEmpty)); | |
| 48 map.clear(); | |
| 49 expect(map, isEmpty); | |
| 50 }); | |
| 51 | |
| 52 test("canonicalizes keys for containsKey", () { | |
| 53 map["1"] = "value"; | |
| 54 expect(map.containsKey("01"), isTrue); | |
| 55 expect(map.containsKey("2"), isFalse); | |
| 56 }); | |
| 57 | |
| 58 test("canonicalizes keys for putIfAbsent", () { | |
| 59 map["1"] = "value"; | |
| 60 expect(map.putIfAbsent("01", () => throw "shouldn't run"), | |
| 61 equals("value")); | |
|
Lasse Reichstein Nielsen
2014/07/01 09:18:15
indent to '('?
nweiz
2014/07/01 21:21:44
Done.
| |
| 62 expect(map.putIfAbsent("2", () => "new value"), equals("new value")); | |
| 63 }); | |
| 64 | |
| 65 test("canonicalizes keys for remove", () { | |
| 66 map["1"] = "value"; | |
| 67 expect(map.remove("2"), isNull); | |
| 68 expect(map.remove("01"), equals("value")); | |
| 69 expect(map, isEmpty); | |
| 70 }); | |
| 71 | |
| 72 test("containsValue returns whether a value is in the map", () { | |
| 73 map["1"] = "value"; | |
| 74 expect(map.containsValue("value"), isTrue); | |
| 75 expect(map.containsValue("not value"), isFalse); | |
| 76 }); | |
| 77 | |
| 78 test("isEmpty returns whether the map is empty", () { | |
| 79 expect(map.isEmpty, isTrue); | |
| 80 map["1"] = "value"; | |
| 81 expect(map.isEmpty, isFalse); | |
| 82 map.remove("01"); | |
| 83 expect(map.isEmpty, isTrue); | |
| 84 }); | |
| 85 | |
| 86 test("isNotEmpty returns whether the map isn't empty", () { | |
| 87 expect(map.isNotEmpty, isFalse); | |
| 88 map["1"] = "value"; | |
| 89 expect(map.isNotEmpty, isTrue); | |
| 90 map.remove("01"); | |
| 91 expect(map.isNotEmpty, isFalse); | |
| 92 }); | |
| 93 | |
| 94 test("length returns the number of pairs in the map", () { | |
| 95 expect(map.length, equals(0)); | |
| 96 map["1"] = "value 1"; | |
| 97 expect(map.length, equals(1)); | |
| 98 map["01"] = "value 01"; | |
| 99 expect(map.length, equals(1)); | |
| 100 map["02"] = "value 02"; | |
| 101 expect(map.length, equals(2)); | |
| 102 }); | |
| 103 | |
| 104 test("uses original keys for keys", () { | |
| 105 map["001"] = "value 1"; | |
| 106 map["02"] = "value 2"; | |
| 107 expect(map.keys, equals(["001", "02"])); | |
| 108 }); | |
| 109 | |
| 110 test("uses original keys for forEach", () { | |
| 111 map["001"] = "value 1"; | |
| 112 map["02"] = "value 2"; | |
| 113 | |
| 114 var keys = []; | |
| 115 map.forEach((key, value) => keys.add(key)); | |
| 116 expect(keys, equals(["001", "02"])); | |
| 117 }); | |
| 118 | |
| 119 test("values returns all values in the map", () { | |
| 120 map.addAll({ | |
| 121 "1": "value 1", | |
| 122 "01": "value 01", | |
| 123 "2": "value 2", | |
| 124 "03": "value 03" | |
| 125 }); | |
| 126 | |
| 127 expect(map.values, equals(["value 01", "value 2", "value 03"])); | |
| 128 }); | |
| 129 }); | |
| 130 | |
| 131 group("CanonicalizedMap.from", () { | |
| 132 test("canonicalizes its keys", () { | |
| 133 var map = new CanonicalizedMap.from({ | |
| 134 "1": "value 1", | |
| 135 "2": "value 2", | |
| 136 "3": "value 3" | |
| 137 }, (key) => int.parse(key)); | |
| 138 expect(map["01"], equals("value 1")); | |
| 139 expect(map["02"], equals("value 2")); | |
| 140 expect(map["03"], equals("value 3")); | |
| 141 }); | |
| 142 | |
| 143 test("uses the final value for collisions", () { | |
| 144 var map = new CanonicalizedMap.from({ | |
| 145 "1": "value 1", | |
| 146 "01": "value 2", | |
| 147 "001": "value 3" | |
| 148 }, (key) => int.parse(key)); | |
| 149 expect(map.length, equals(1)); | |
| 150 expect(map["0001"], equals("value 3")); | |
| 151 }); | |
| 152 }); | |
| 153 } | |
| OLD | NEW |