OLD | NEW |
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 filevents. | 3 // BSD-style license that can be found in the LICENSE filevents. |
4 | 4 |
5 import "dart:async"; | 5 import "dart:async"; |
6 | 6 |
7 import "package:async/async.dart" show StreamQueue; | 7 import "package:async/async.dart" show StreamQueue; |
8 import "package:test/test.dart"; | 8 import "package:test/test.dart"; |
9 | 9 |
10 import "utils.dart"; | 10 import "utils.dart"; |
(...skipping 19 matching lines...) Expand all Loading... |
30 next = events.next; | 30 next = events.next; |
31 expect(controller.hasListener, isTrue); | 31 expect(controller.hasListener, isTrue); |
32 expect(controller.isPaused, isFalse); | 32 expect(controller.isPaused, isFalse); |
33 | 33 |
34 controller.add(2); | 34 controller.add(2); |
35 | 35 |
36 expect(await next, 2); | 36 expect(await next, 2); |
37 expect(controller.hasListener, isTrue); | 37 expect(controller.hasListener, isTrue); |
38 expect(controller.isPaused, isTrue); | 38 expect(controller.isPaused, isTrue); |
39 | 39 |
40 var cancel = events.cancel(); | 40 events.cancel(); |
41 expect(controller.hasListener, isFalse); | 41 expect(controller.hasListener, isFalse); |
42 }); | 42 }); |
43 }); | 43 }); |
44 | 44 |
45 group("next operation", () { | 45 group("next operation", () { |
46 test("simple sequence of requests", () async { | 46 test("simple sequence of requests", () async { |
47 var events = new StreamQueue<int>(createStream()); | 47 var events = new StreamQueue<int>(createStream()); |
48 for (int i = 1; i <= 4; i++) { | 48 for (int i = 1; i <= 4; i++) { |
49 expect(await events.next, i); | 49 expect(await events.next, i); |
50 } | 50 } |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 }); | 276 }); |
277 | 277 |
278 test("closes the events, prevents other operations", () async { | 278 test("closes the events, prevents other operations", () async { |
279 var events = new StreamQueue<int>(createStream()); | 279 var events = new StreamQueue<int>(createStream()); |
280 var stream = events.rest; | 280 var stream = events.rest; |
281 expect(() => events.next, throwsStateError); | 281 expect(() => events.next, throwsStateError); |
282 expect(() => events.skip(1), throwsStateError); | 282 expect(() => events.skip(1), throwsStateError); |
283 expect(() => events.take(1), throwsStateError); | 283 expect(() => events.take(1), throwsStateError); |
284 expect(() => events.rest, throwsStateError); | 284 expect(() => events.rest, throwsStateError); |
285 expect(() => events.cancel(), throwsStateError); | 285 expect(() => events.cancel(), throwsStateError); |
| 286 expect(stream.toList(), completion([1, 2, 3, 4])); |
286 }); | 287 }); |
287 | 288 |
288 test("forwards to underlying stream", () async { | 289 test("forwards to underlying stream", () async { |
289 var cancel = new Completer(); | 290 var cancel = new Completer(); |
290 var controller = new StreamController(onCancel: () => cancel.future); | 291 var controller = new StreamController(onCancel: () => cancel.future); |
291 var events = new StreamQueue<int>(controller.stream); | 292 var events = new StreamQueue<int>(controller.stream); |
292 expect(controller.hasListener, isFalse); | 293 expect(controller.hasListener, isFalse); |
293 var next = events.next; | 294 var next = events.next; |
294 expect(controller.hasListener, isTrue); | 295 expect(controller.hasListener, isTrue); |
295 expect(controller.isPaused, isFalse); | 296 expect(controller.isPaused, isFalse); |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 var events = new StreamQueue<int>(createStream()); | 448 var events = new StreamQueue<int>(createStream()); |
448 expect(await events.next, 1); | 449 expect(await events.next, 1); |
449 expect(await events.hasNext, true); | 450 expect(await events.hasNext, true); |
450 expect(await events.next, 2); | 451 expect(await events.next, 2); |
451 expect(await events.next, 3); | 452 expect(await events.next, 3); |
452 }); | 453 }); |
453 | 454 |
454 test("- next after true, enqueued", () async { | 455 test("- next after true, enqueued", () async { |
455 var events = new StreamQueue<int>(createStream()); | 456 var events = new StreamQueue<int>(createStream()); |
456 var responses = []; | 457 var responses = []; |
457 var first = events.next.then(responses.add); | 458 events.next.then(responses.add); |
458 var hasSecond = events.hasNext.then(responses.add); | 459 events.hasNext.then(responses.add); |
459 var second = events.next.then(responses.add); | 460 events.next.then(responses.add); |
460 do { | 461 do { |
461 await flushMicrotasks(); | 462 await flushMicrotasks(); |
462 } while (responses.length < 3); | 463 } while (responses.length < 3); |
463 expect(responses, [1, true, 2]); | 464 expect(responses, [1, true, 2]); |
464 }); | 465 }); |
465 | 466 |
466 test("- skip 0 after true", () async { | 467 test("- skip 0 after true", () async { |
467 var events = new StreamQueue<int>(createStream()); | 468 var events = new StreamQueue<int>(createStream()); |
468 expect(await events.next, 1); | 469 expect(await events.next, 1); |
469 expect(await events.hasNext, true); | 470 expect(await events.hasNext, true); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 controller.add(4); | 623 controller.add(4); |
623 await flushMicrotasks(); | 624 await flushMicrotasks(); |
624 controller.close(); | 625 controller.close(); |
625 }(); | 626 }(); |
626 return controller.stream; | 627 return controller.stream; |
627 } | 628 } |
628 | 629 |
629 Stream<int> createLongStream(int eventCount) async* { | 630 Stream<int> createLongStream(int eventCount) async* { |
630 for (int i = 0; i < eventCount; i++) yield i; | 631 for (int i = 0; i < eventCount; i++) yield i; |
631 } | 632 } |
OLD | NEW |