Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Side by Side Diff: pkg/collection/test/canonicalized_map_test.dart

Issue 350183010: Add a CanonicalizedMap class to pkg/collection. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/collection/pubspec.yaml ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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>(int.parse,
13 isValidKey: new RegExp(r"^\d+$").hasMatch);
14 });
15
16 test("canonicalizes keys on set and get", () {
17 map["1"] = "value";
18 expect(map["01"], equals("value"));
19 });
20
21 test("get returns null for uncanonicalizable key", () {
22 expect(map["foo"], isNull);
23 });
24
25 test("canonicalizes keys for addAll", () {
26 map.addAll({
27 "1": "value 1",
28 "2": "value 2",
29 "3": "value 3"
30 });
31 expect(map["01"], equals("value 1"));
32 expect(map["02"], equals("value 2"));
33 expect(map["03"], equals("value 3"));
34 });
35
36 test("uses the final value for addAll collisions", () {
37 map.addAll({
38 "1": "value 1",
39 "01": "value 2",
40 "001": "value 3"
41 });
42 expect(map.length, equals(1));
43 expect(map["0001"], equals("value 3"));
44 });
45
46 test("clear clears the map", () {
47 map.addAll({
48 "1": "value 1",
49 "2": "value 2",
50 "3": "value 3"
51 });
52 expect(map, isNot(isEmpty));
53 map.clear();
54 expect(map, isEmpty);
55 });
56
57 test("canonicalizes keys for containsKey", () {
58 map["1"] = "value";
59 expect(map.containsKey("01"), isTrue);
60 expect(map.containsKey("2"), isFalse);
61 });
62
63 test("containsKey returns false for uncanonicalizable key", () {
64 expect(map.containsKey("foo"), isFalse);
65 });
66
67 test("canonicalizes keys for putIfAbsent", () {
68 map["1"] = "value";
69 expect(map.putIfAbsent("01", () => throw "shouldn't run"),
70 equals("value"));
71 expect(map.putIfAbsent("2", () => "new value"), equals("new value"));
72 });
73
74 test("canonicalizes keys for remove", () {
75 map["1"] = "value";
76 expect(map.remove("2"), isNull);
77 expect(map.remove("01"), equals("value"));
78 expect(map, isEmpty);
79 });
80
81 test("remove returns null for uncanonicalizable key", () {
82 expect(map.remove("foo"), isNull);
83 });
84
85 test("containsValue returns whether a value is in the map", () {
86 map["1"] = "value";
87 expect(map.containsValue("value"), isTrue);
88 expect(map.containsValue("not value"), isFalse);
89 });
90
91 test("isEmpty returns whether the map is empty", () {
92 expect(map.isEmpty, isTrue);
93 map["1"] = "value";
94 expect(map.isEmpty, isFalse);
95 map.remove("01");
96 expect(map.isEmpty, isTrue);
97 });
98
99 test("isNotEmpty returns whether the map isn't empty", () {
100 expect(map.isNotEmpty, isFalse);
101 map["1"] = "value";
102 expect(map.isNotEmpty, isTrue);
103 map.remove("01");
104 expect(map.isNotEmpty, isFalse);
105 });
106
107 test("length returns the number of pairs in the map", () {
108 expect(map.length, equals(0));
109 map["1"] = "value 1";
110 expect(map.length, equals(1));
111 map["01"] = "value 01";
112 expect(map.length, equals(1));
113 map["02"] = "value 02";
114 expect(map.length, equals(2));
115 });
116
117 test("uses original keys for keys", () {
118 map["001"] = "value 1";
119 map["02"] = "value 2";
120 expect(map.keys, equals(["001", "02"]));
121 });
122
123 test("uses original keys for forEach", () {
124 map["001"] = "value 1";
125 map["02"] = "value 2";
126
127 var keys = [];
128 map.forEach((key, value) => keys.add(key));
129 expect(keys, equals(["001", "02"]));
130 });
131
132 test("values returns all values in the map", () {
133 map.addAll({
134 "1": "value 1",
135 "01": "value 01",
136 "2": "value 2",
137 "03": "value 03"
138 });
139
140 expect(map.values, equals(["value 01", "value 2", "value 03"]));
141 });
142 });
143
144 group("CanonicalizedMap.from", () {
145 test("canonicalizes its keys", () {
146 var map = new CanonicalizedMap.from({
147 "1": "value 1",
148 "2": "value 2",
149 "3": "value 3"
150 }, int.parse);
151 expect(map["01"], equals("value 1"));
152 expect(map["02"], equals("value 2"));
153 expect(map["03"], equals("value 3"));
154 });
155
156 test("uses the final value for collisions", () {
157 var map = new CanonicalizedMap.from({
158 "1": "value 1",
159 "01": "value 2",
160 "001": "value 3"
161 }, int.parse);
162 expect(map.length, equals(1));
163 expect(map["0001"], equals("value 3"));
164 });
165 });
166 }
OLDNEW
« no previous file with comments | « pkg/collection/pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698