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

Side by Side Diff: packages/pool/test/pool_test.dart

Issue 3014633002: Roll to pickup pool changes (Closed)
Patch Set: Created 3 years, 2 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
« no previous file with comments | « packages/pool/pubspec.yaml ('k') | packages/stack_trace/.travis.yml » ('j') | 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) 2014, the Dart project authors. Please see the AUTHORS file 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 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 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:fake_async/fake_async.dart'; 7 import 'package:fake_async/fake_async.dart';
8 import 'package:pool/pool.dart'; 8 import 'package:pool/pool.dart';
9 import 'package:stack_trace/stack_trace.dart'; 9 import 'package:stack_trace/stack_trace.dart';
10 import 'package:test/test.dart'; 10 import 'package:test/test.dart';
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 group("close()", () { 292 group("close()", () {
293 test("disallows request() and withResource()", () { 293 test("disallows request() and withResource()", () {
294 var pool = new Pool(1)..close(); 294 var pool = new Pool(1)..close();
295 expect(pool.request, throwsStateError); 295 expect(pool.request, throwsStateError);
296 expect(() => pool.withResource(() {}), throwsStateError); 296 expect(() => pool.withResource(() {}), throwsStateError);
297 }); 297 });
298 298
299 test("pending requests are fulfilled", () async { 299 test("pending requests are fulfilled", () async {
300 var pool = new Pool(1); 300 var pool = new Pool(1);
301 var resource1 = await pool.request(); 301 var resource1 = await pool.request();
302 expect(pool.request().then((resource2) { 302 expect(
303 resource2.release(); 303 pool.request().then((resource2) {
304 }), completes); 304 resource2.release();
305 }),
306 completes);
305 expect(pool.done, completes); 307 expect(pool.done, completes);
306 expect(pool.close(), completes); 308 expect(pool.close(), completes);
307 resource1.release(); 309 resource1.release();
308 }); 310 });
309 311
310 test("pending requests are fulfilled with allowRelease", () async { 312 test("pending requests are fulfilled with allowRelease", () async {
311 var pool = new Pool(1); 313 var pool = new Pool(1);
312 var resource1 = await pool.request(); 314 var resource1 = await pool.request();
313 315
314 var completer = new Completer(); 316 var completer = new Completer();
315 expect(pool.request().then((resource2) { 317 expect(
316 expect(completer.isCompleted, isTrue); 318 pool.request().then((resource2) {
317 resource2.release(); 319 expect(completer.isCompleted, isTrue);
318 }), completes); 320 resource2.release();
321 }),
322 completes);
319 expect(pool.close(), completes); 323 expect(pool.close(), completes);
320 324
321 resource1.allowRelease(() => completer.future); 325 resource1.allowRelease(() => completer.future);
322 await new Future.delayed(Duration.ZERO); 326 await new Future.delayed(Duration.ZERO);
323 327
324 completer.complete(); 328 completer.complete();
325 }); 329 });
326 330
327 test("doesn't complete until all resources are released", () async { 331 test("doesn't complete until all resources are released", () async {
328 var pool = new Pool(2); 332 var pool = new Pool(2);
329 var resource1 = await pool.request(); 333 var resource1 = await pool.request();
330 var resource2 = await pool.request(); 334 var resource2 = await pool.request();
331 var resource3Future = pool.request(); 335 var resource3Future = pool.request();
332 336
333 var resource1Released = false; 337 var resource1Released = false;
334 var resource2Released = false; 338 var resource2Released = false;
335 var resource3Released = false; 339 var resource3Released = false;
336 expect(pool.close().then((_) { 340 expect(
337 expect(resource1Released, isTrue); 341 pool.close().then((_) {
338 expect(resource2Released, isTrue); 342 expect(resource1Released, isTrue);
339 expect(resource3Released, isTrue); 343 expect(resource2Released, isTrue);
340 }), completes); 344 expect(resource3Released, isTrue);
345 }),
346 completes);
341 347
342 resource1Released = true; 348 resource1Released = true;
343 resource1.release(); 349 resource1.release();
344 await new Future.delayed(Duration.ZERO); 350 await new Future.delayed(Duration.ZERO);
345 351
346 resource2Released = true; 352 resource2Released = true;
347 resource2.release(); 353 resource2.release();
348 await new Future.delayed(Duration.ZERO); 354 await new Future.delayed(Duration.ZERO);
349 355
350 var resource3 = await resource3Future; 356 var resource3 = await resource3Future;
351 resource3Released = true; 357 resource3Released = true;
352 resource3.release(); 358 resource3.release();
353 }); 359 });
354 360
355 test("active onReleases complete as usual", () async { 361 test("active onReleases complete as usual", () async {
356 var pool = new Pool(1); 362 var pool = new Pool(1);
357 var resource = await pool.request(); 363 var resource = await pool.request();
358 364
359 // Set up an onRelease callback whose completion is controlled by 365 // Set up an onRelease callback whose completion is controlled by
360 // [completer]. 366 // [completer].
361 var completer = new Completer(); 367 var completer = new Completer();
362 resource.allowRelease(() => completer.future); 368 resource.allowRelease(() => completer.future);
363 expect(pool.request().then((_) { 369 expect(
364 expect(completer.isCompleted, isTrue); 370 pool.request().then((_) {
365 }), completes); 371 expect(completer.isCompleted, isTrue);
372 }),
373 completes);
366 374
367 await new Future.delayed(Duration.ZERO); 375 await new Future.delayed(Duration.ZERO);
368 pool.close(); 376 pool.close();
369 377
370 await new Future.delayed(Duration.ZERO); 378 await new Future.delayed(Duration.ZERO);
371 completer.complete(); 379 completer.complete();
372 }); 380 });
373 381
374 test("inactive onReleases fire", () async { 382 test("inactive onReleases fire", () async {
375 var pool = new Pool(2); 383 var pool = new Pool(2);
376 var resource1 = await pool.request(); 384 var resource1 = await pool.request();
377 var resource2 = await pool.request(); 385 var resource2 = await pool.request();
378 386
379 var completer1 = new Completer(); 387 var completer1 = new Completer();
380 resource1.allowRelease(() => completer1.future); 388 resource1.allowRelease(() => completer1.future);
381 var completer2 = new Completer(); 389 var completer2 = new Completer();
382 resource2.allowRelease(() => completer2.future); 390 resource2.allowRelease(() => completer2.future);
383 391
384 expect(pool.close().then((_) { 392 expect(
385 expect(completer1.isCompleted, isTrue); 393 pool.close().then((_) {
386 expect(completer2.isCompleted, isTrue); 394 expect(completer1.isCompleted, isTrue);
387 }), completes); 395 expect(completer2.isCompleted, isTrue);
396 }),
397 completes);
388 398
389 await new Future.delayed(Duration.ZERO); 399 await new Future.delayed(Duration.ZERO);
390 completer1.complete(); 400 completer1.complete();
391 401
392 await new Future.delayed(Duration.ZERO); 402 await new Future.delayed(Duration.ZERO);
393 completer2.complete(); 403 completer2.complete();
394 }); 404 });
395 405
396 test("new allowReleases fire immediately", () async { 406 test("new allowReleases fire immediately", () async {
397 var pool = new Pool(1); 407 var pool = new Pool(1);
398 var resource = await pool.request(); 408 var resource = await pool.request();
399 409
400 var completer = new Completer(); 410 var completer = new Completer();
401 expect(pool.close().then((_) { 411 expect(
402 expect(completer.isCompleted, isTrue); 412 pool.close().then((_) {
403 }), completes); 413 expect(completer.isCompleted, isTrue);
414 }),
415 completes);
404 416
405 await new Future.delayed(Duration.ZERO); 417 await new Future.delayed(Duration.ZERO);
406 resource.allowRelease(() => completer.future); 418 resource.allowRelease(() => completer.future);
407 419
408 await new Future.delayed(Duration.ZERO); 420 await new Future.delayed(Duration.ZERO);
409 completer.complete(); 421 completer.complete();
410 }); 422 });
411 423
412 test("an onRelease error is piped to the return value", () async { 424 test("an onRelease error is piped to the return value", () async {
413 var pool = new Pool(1); 425 var pool = new Pool(1);
(...skipping 17 matching lines...) Expand all
431 Function expectNoAsync() { 443 Function expectNoAsync() {
432 var stack = new Trace.current(1); 444 var stack = new Trace.current(1);
433 return () => registerException( 445 return () => registerException(
434 new TestFailure("Expected function not to be called."), stack); 446 new TestFailure("Expected function not to be called."), stack);
435 } 447 }
436 448
437 /// A matcher for Futures that asserts that they don't complete. 449 /// A matcher for Futures that asserts that they don't complete.
438 /// 450 ///
439 /// This should only be called within a [FakeAsync.run] zone. 451 /// This should only be called within a [FakeAsync.run] zone.
440 Matcher get doesNotComplete => predicate((future) { 452 Matcher get doesNotComplete => predicate((future) {
441 expect(future, new isInstanceOf<Future>()); 453 expect(future, new isInstanceOf<Future>());
442 454
443 var stack = new Trace.current(1); 455 var stack = new Trace.current(1);
444 future.then((_) => registerException( 456 future.then((_) => registerException(
445 new TestFailure("Expected future not to complete."), stack)); 457 new TestFailure("Expected future not to complete."), stack));
446 return true; 458 return true;
447 }); 459 });
OLDNEW
« no previous file with comments | « packages/pool/pubspec.yaml ('k') | packages/stack_trace/.travis.yml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698