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

Side by Side Diff: test/registry_test.dart

Issue 955053002: adding codereview file, formatting, adding gitignore (Closed) Base URL: https://github.com/dart-lang/isolate.git@master
Patch Set: Created 5 years, 10 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
« test/ports_test.dart ('K') | « test/ports_test.dart ('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
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart.pkg.isolate.test.registry; 5 library dart.pkg.isolate.test.registry;
6 6
7 import "package:isolate/isolaterunner.dart"; 7 import "package:isolate/isolaterunner.dart";
8 import "package:isolate/registry.dart"; 8 import "package:isolate/registry.dart";
9 import "dart:async"; 9 import "dart:async";
10 import "dart:isolate"; 10 import "dart:isolate";
(...skipping 16 matching lines...) Expand all
27 class Oddity { 27 class Oddity {
28 static const int EVEN = 0; 28 static const int EVEN = 0;
29 static const int ODD = 1; 29 static const int ODD = 1;
30 } 30 }
31 31
32 Future<List> waitAll(int n, Future action(int n)) { 32 Future<List> waitAll(int n, Future action(int n)) {
33 return Future.wait(new Iterable.generate(n, action)); 33 return Future.wait(new Iterable.generate(n, action));
34 } 34 }
35 35
36 void testLookup() { 36 void testLookup() {
37
38 test("lookupAll", () { 37 test("lookupAll", () {
39 RegistryManager regman = new RegistryManager(); 38 RegistryManager regman = new RegistryManager();
40 Registry registry = regman.registry; 39 Registry registry = regman.registry;
41 return waitAll(10, (i) { 40 return waitAll(10, (i) {
42 var element = new Element(i); 41 var element = new Element(i);
43 var tag = i.isEven ? Oddity.EVEN : Oddity.ODD; 42 var tag = i.isEven ? Oddity.EVEN : Oddity.ODD;
44 return registry.add(element, tags: [tag]); 43 return registry.add(element, tags: [tag]);
45 }) 44 }).then((_) => registry.lookup()).then((all) {
Lasse Reichstein Nielsen 2015/02/26 10:59:15 Less clear which operations are performed. The reg
46 .then((_) => registry.lookup())
47 .then((all) {
48 expect(all.length, 10); 45 expect(all.length, 10);
49 expect(all.map((v) => v.id).toList()..sort(), 46 expect(all.map((v) => v.id).toList()..sort(),
50 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 47 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
51 }) 48 }).then((_) {
52 .then((_) { regman.close(); }); 49 regman.close();
50 });
53 }); 51 });
54 52
55 test("lookupOdd", () { 53 test("lookupOdd", () {
56 RegistryManager regman = new RegistryManager(); 54 RegistryManager regman = new RegistryManager();
57 Registry registry = regman.registry; 55 Registry registry = regman.registry;
58 return waitAll(10, (i) { 56 return waitAll(10, (i) {
59 var element = new Element(i); 57 var element = new Element(i);
60 var tag = i.isEven ? Oddity.EVEN : Oddity.ODD; 58 var tag = i.isEven ? Oddity.EVEN : Oddity.ODD;
61 return registry.add(element, tags: [tag]); 59 return registry.add(element, tags: [tag]);
62 }) 60 }).then((_) => registry.lookup(tags: [Oddity.ODD])).then((all) {
63 .then((_) =>registry.lookup(tags:[Oddity.ODD]))
64 .then((all) {
65 expect(all.length, 5); 61 expect(all.length, 5);
66 expect(all.map((v) => v.id).toList()..sort(), 62 expect(all.map((v) => v.id).toList()..sort(), [1, 3, 5, 7, 9]);
67 [1, 3, 5, 7, 9]); 63 }).then((_) {
68 }) 64 regman.close();
69 .then((_) { regman.close(); }); 65 });
70 }); 66 });
71 67
72 test("lookupMax", () { 68 test("lookupMax", () {
73 RegistryManager regman = new RegistryManager(); 69 RegistryManager regman = new RegistryManager();
74 Registry registry = regman.registry; 70 Registry registry = regman.registry;
75 return waitAll(10, (i) { 71 return waitAll(10, (i) {
76 var element = new Element(i); 72 var element = new Element(i);
77 var tag = i.isEven ? Oddity.EVEN : Oddity.ODD; 73 var tag = i.isEven ? Oddity.EVEN : Oddity.ODD;
78 return registry.add(element, tags: [tag]); 74 return registry.add(element, tags: [tag]);
79 }) 75 }).then((_) => registry.lookup(max: 5)).then((all) {
80 .then((_) => registry.lookup(max: 5))
81 .then((all) {
82 expect(all.length, 5); 76 expect(all.length, 5);
83 }) 77 }).then((_) {
84 .then((_) { regman.close(); }); 78 regman.close();
79 });
85 }); 80 });
86 81
87 test("lookupMultiTag", () { 82 test("lookupMultiTag", () {
88 RegistryManager regman = new RegistryManager(); 83 RegistryManager regman = new RegistryManager();
89 Registry registry = regman.registry; 84 Registry registry = regman.registry;
90 return waitAll(25, (i) { 85 return waitAll(25, (i) {
91 var element = new Element(i); 86 var element = new Element(i);
92 // Collect all numbers dividing i. 87 // Collect all numbers dividing i.
93 var tags = [i]; 88 var tags = [i];
94 for (int j = 2; j < 25; j++) { 89 for (int j = 2; j < 25; j++) {
95 if (i % j == 0) tags.add(j); 90 if (i % j == 0) tags.add(j);
96 } 91 }
97 return registry.add(element, tags: tags); 92 return registry.add(element, tags: tags);
98 }) 93 }).then((_) => registry.lookup(tags: [2, 3])).then((all) {
99 .then((_) => registry.lookup(tags: [2, 3]))
100 .then((all) {
101 expect(all.length, 5); 94 expect(all.length, 5);
102 expect(all.map((v) => v.id).toList()..sort(), 95 expect(all.map((v) => v.id).toList()..sort(), [0, 6, 12, 18, 24]);
103 [0, 6, 12, 18, 24]); 96 }).then((_) {
104 }) 97 regman.close();
105 .then((_) { regman.close(); }); 98 });
106 }); 99 });
107 100
108 test("lookupMultiTagMax", () { 101 test("lookupMultiTagMax", () {
109 RegistryManager regman = new RegistryManager(); 102 RegistryManager regman = new RegistryManager();
110 Registry registry = regman.registry; 103 Registry registry = regman.registry;
111 return waitAll(25, (i) { 104 return waitAll(25, (i) {
112 var element = new Element(i); 105 var element = new Element(i);
113 // Collect all numbers dividing i. 106 // Collect all numbers dividing i.
114 var tags = [i]; 107 var tags = [i];
115 for (int j = 2; j < 25; j++) { 108 for (int j = 2; j < 25; j++) {
116 if (i % j == 0) tags.add(j); 109 if (i % j == 0) tags.add(j);
117 } 110 }
118 return registry.add(element, tags: tags); 111 return registry.add(element, tags: tags);
119 }) 112 }).then((_) => registry.lookup(tags: [2, 3], max: 3)).then((all) {
120 .then((_) => registry.lookup(tags: [2, 3], max: 3))
121 .then((all) {
122 expect(all.length, 3); 113 expect(all.length, 3);
123 expect(all.every((v) => (v.id % 6) == 0), isTrue); 114 expect(all.every((v) => (v.id % 6) == 0), isTrue);
124 }) 115 }).then((_) {
125 .then((_) { regman.close(); }); 116 regman.close();
117 });
126 }); 118 });
127 } 119 }
128 120
129 void testAddLookup() { 121 void testAddLookup() {
130 test("Add-lookup-identical", () { 122 test("Add-lookup-identical", () {
131 RegistryManager regman = new RegistryManager(); 123 RegistryManager regman = new RegistryManager();
132 Registry registry = regman.registry; 124 Registry registry = regman.registry;
133 var object = new Object(); 125 var object = new Object();
134 return registry.add(object).then((_) { 126 return registry.add(object).then((_) {
135 return registry.lookup().then((entries) { 127 return registry.lookup().then((entries) {
136 expect(entries, hasLength(1)); 128 expect(entries, hasLength(1));
137 expect(entries.first, same(object)); 129 expect(entries.first, same(object));
138 }); 130 });
139 }).whenComplete(regman.close); 131 }).whenComplete(regman.close);
140 }); 132 });
141 133
142 test("Add-multiple-identical", () { 134 test("Add-multiple-identical", () {
143 RegistryManager regman = new RegistryManager(); 135 RegistryManager regman = new RegistryManager();
144 Registry registry = regman.registry; 136 Registry registry = regman.registry;
145 var object1 = new Object(); 137 var object1 = new Object();
146 var object2 = new Object(); 138 var object2 = new Object();
147 var object3 = new Object(); 139 var object3 = new Object();
148 var objects = [object1, object2, object3]; 140 var objects = [object1, object2, object3];
149 return Future.wait(objects.map(registry.add)) 141 return Future.wait(objects.map(registry.add)).then((_) {
150 .then((_) {
151 return registry.lookup().then((entries) { 142 return registry.lookup().then((entries) {
152 expect(entries, hasLength(3)); 143 expect(entries, hasLength(3));
153 for (var entry in entries) { 144 for (var entry in entries) {
154 expect(entry, isIn(objects)); 145 expect(entry, isIn(objects));
155 } 146 }
156 }); 147 });
157 }).whenComplete(regman.close); 148 }).whenComplete(regman.close);
158 }); 149 });
159 150
160 test("Add-twice", () { 151 test("Add-twice", () {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 expect(entries.first, same(object)); 200 expect(entries.first, same(object));
210 }).whenComplete(regman.close); 201 }).whenComplete(regman.close);
211 }); 202 });
212 203
213 test("Add-multiple-tags", () { 204 test("Add-multiple-tags", () {
214 RegistryManager regman = new RegistryManager(); 205 RegistryManager regman = new RegistryManager();
215 Registry registry = regman.registry; 206 Registry registry = regman.registry;
216 var object1 = new Object(); 207 var object1 = new Object();
217 var object2 = new Object(); 208 var object2 = new Object();
218 var object3 = new Object(); 209 var object3 = new Object();
219 return registry.add(object1, tags: [1, 3, 5, 7]).then((_){ 210 return registry.add(object1, tags: [1, 3, 5, 7]).then((_) {
220 return registry.add(object2, tags: [2, 3, 6, 7]); 211 return registry.add(object2, tags: [2, 3, 6, 7]);
221 }).then((_) { 212 }).then((_) {
222 return registry.add(object3, tags: [4, 5, 6, 7]); 213 return registry.add(object3, tags: [4, 5, 6, 7]);
223 }).then((_) { 214 }).then((_) {
224 return registry.lookup(tags: [3]).then((entries) { 215 return registry.lookup(tags: [3]).then((entries) {
225 expect(entries, hasLength(2)); 216 expect(entries, hasLength(2));
226 expect(entries.first == object1 || entries.last == object1, isTrue); 217 expect(entries.first == object1 || entries.last == object1, isTrue);
227 expect(entries.first == object2 || entries.last == object2, isTrue); 218 expect(entries.first == object2 || entries.last == object2, isTrue);
228 }); 219 });
229 }).then((_) { 220 }).then((_) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 }).whenComplete(regman.close); 314 }).whenComplete(regman.close);
324 }); 315 });
325 316
326 test("Add-remove-multiple", () { 317 test("Add-remove-multiple", () {
327 RegistryManager regman = new RegistryManager(); 318 RegistryManager regman = new RegistryManager();
328 Registry registry = regman.registry; 319 Registry registry = regman.registry;
329 var object1 = new Object(); 320 var object1 = new Object();
330 var object2 = new Object(); 321 var object2 = new Object();
331 var object3 = new Object(); 322 var object3 = new Object();
332 var objects = [object1, object2, object3]; 323 var objects = [object1, object2, object3];
333 return Future.wait(objects.map(registry.add)).then((_){ 324 return Future.wait(objects.map(registry.add)).then((_) {
334 return registry.addTags([object1, object2], ["x", "y"]); 325 return registry.addTags([object1, object2], ["x", "y"]);
335 }).then((_) { 326 }).then((_) {
336 return registry.addTags([object1, object3], ["z", "w"]); 327 return registry.addTags([object1, object3], ["z", "w"]);
337 }).then((_) { 328 }).then((_) {
338 return registry.lookup(tags: ["x", "z"]); 329 return registry.lookup(tags: ["x", "z"]);
339 }).then((entries) { 330 }).then((entries) {
340 expect(entries, hasLength(1)); 331 expect(entries, hasLength(1));
341 expect(entries.first, same(object1)); 332 expect(entries.first, same(object1));
342 return registry.removeTags([object1, object2], ["x", "z"]); 333 return registry.removeTags([object1, object2], ["x", "z"]);
343 }).then((_) { 334 }).then((_) {
344 return registry.lookup(tags: ["z"]); 335 return registry.lookup(tags: ["z"]);
345 }).then((entries) { 336 }).then((entries) {
346 expect(entries, hasLength(1)); 337 expect(entries, hasLength(1));
347 expect(entries.first, same(object3)); 338 expect(entries.first, same(object3));
348 }).whenComplete(regman.close); 339 }).whenComplete(regman.close);
349 }); 340 });
350 341
351 test("Remove-wrong-object", () { 342 test("Remove-wrong-object", () {
352 RegistryManager regman = new RegistryManager(); 343 RegistryManager regman = new RegistryManager();
353 Registry registry = regman.registry; 344 Registry registry = regman.registry;
354 expect(() => registry.removeTags([new Object()], ["x"]), 345 expect(() => registry.removeTags([new Object()], ["x"]), throws);
355 throws);
356 regman.close(); 346 regman.close();
357 }); 347 });
358 } 348 }
359 349
360 var _regmen = {}; 350 var _regmen = {};
361 Registry createRegMan(id) { 351 Registry createRegMan(id) {
362 var regman = new RegistryManager(); 352 var regman = new RegistryManager();
363 _regmen[id] = regman; 353 _regmen[id] = regman;
364 return regman.registry; 354 return regman.registry;
365 } 355 }
366 void closeRegMan(id) { 356 void closeRegMan(id) {
367 _regmen.remove(id).close(); 357 _regmen.remove(id).close();
368 } 358 }
369 359
370 void testCrossIsolate() { 360 void testCrossIsolate() {
371 var object = new Object(); 361 var object = new Object();
372 test("regman-other-isolate", () { 362 test("regman-other-isolate", () {
373 // Add, lookup and remove object in other isolate. 363 // Add, lookup and remove object in other isolate.
374 return IsolateRunner.spawn().then((isolate) { 364 return IsolateRunner.spawn().then((isolate) {
375 isolate.run(createRegMan, 1).then((registry) { 365 isolate.run(createRegMan, 1).then((registry) {
376 return registry.add(object, tags: ["a", "b"]) 366 return registry.add(object, tags: ["a", "b"]).then((removeCapability) {
377 .then((removeCapability) {
378 return registry.lookup(tags: ["a"]).then((entries) { 367 return registry.lookup(tags: ["a"]).then((entries) {
379 expect(entries, hasLength(1)); 368 expect(entries, hasLength(1));
380 expect(entries.first, same(object)); 369 expect(entries.first, same(object));
381 return registry.remove(entries.first, removeCapability); 370 return registry.remove(entries.first, removeCapability);
382 }).then((removeSuccess) { 371 }).then((removeSuccess) {
383 expect(removeSuccess, isTrue); 372 expect(removeSuccess, isTrue);
384 }); 373 });
385 }); 374 });
386 }).whenComplete(() { 375 }).whenComplete(() {
387 return isolate.run(closeRegMan, 1); 376 return isolate.run(closeRegMan, 1);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 testObject(new Element(42)); 517 testObject(new Element(42));
529 testObject(#symbol); 518 testObject(#symbol);
530 testObject(#_privateSymbol); 519 testObject(#_privateSymbol);
531 testObject(new Capability()); 520 testObject(new Capability());
532 } 521 }
533 522
534 class Element { 523 class Element {
535 final int id; 524 final int id;
536 Element(this.id); 525 Element(this.id);
537 int get hashCode => id; 526 int get hashCode => id;
538 bool operator==(Object other) => other is Element && id == other.id; 527 bool operator ==(Object other) => other is Element && id == other.id;
539 } 528 }
OLDNEW
« test/ports_test.dart ('K') | « test/ports_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698