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 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
865 expect(await queue2.hasNext, isFalse); | 865 expect(await queue2.hasNext, isFalse); |
866 }); | 866 }); |
867 | 867 |
868 test("the underlying stream is only canceled once all forks are canceled", | 868 test("the underlying stream is only canceled once all forks are canceled", |
869 () async { | 869 () async { |
870 var controller = new StreamController(); | 870 var controller = new StreamController(); |
871 var queue1 = new StreamQueue<int>(controller.stream); | 871 var queue1 = new StreamQueue<int>(controller.stream); |
872 var queue2 = queue1.fork(); | 872 var queue2 = queue1.fork(); |
873 | 873 |
874 await flushMicrotasks(); | 874 await flushMicrotasks(); |
875 expect(controller.hasListener, isFalse); | 875 expect(controller.hasListener, isTrue); |
876 | 876 |
877 expect(queue1.next, completion(1)); | 877 expect(queue1.next, completion(1)); |
878 await flushMicrotasks(); | 878 await flushMicrotasks(); |
879 expect(controller.hasListener, isTrue); | 879 expect(controller.hasListener, isTrue); |
880 | 880 |
881 queue2.cancel(); | 881 queue2.cancel(); |
882 await flushMicrotasks(); | 882 await flushMicrotasks(); |
883 expect(controller.hasListener, isTrue); | 883 expect(controller.hasListener, isTrue); |
884 | 884 |
885 controller.add(1); | 885 controller.add(1); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
935 expect(await queue2.hasNext, isFalse); | 935 expect(await queue2.hasNext, isFalse); |
936 }); | 936 }); |
937 | 937 |
938 test("the underlying stream is only canceled once all forks are " | 938 test("the underlying stream is only canceled once all forks are " |
939 "canceled", () async { | 939 "canceled", () async { |
940 var controller = new StreamController(); | 940 var controller = new StreamController(); |
941 var queue1 = new StreamQueue<int>(controller.stream); | 941 var queue1 = new StreamQueue<int>(controller.stream); |
942 var queue2 = queue1.fork(); | 942 var queue2 = queue1.fork(); |
943 | 943 |
944 await flushMicrotasks(); | 944 await flushMicrotasks(); |
945 expect(controller.hasListener, isFalse); | 945 expect(controller.hasListener, isTrue); |
946 | 946 |
947 expect(queue1.next, throwsStateError); | 947 expect(queue1.next, throwsStateError); |
948 await flushMicrotasks(); | 948 await flushMicrotasks(); |
949 expect(controller.hasListener, isTrue); | 949 expect(controller.hasListener, isTrue); |
950 | 950 |
951 queue2.cancel(immediate: true); | 951 queue2.cancel(immediate: true); |
952 await flushMicrotasks(); | 952 await flushMicrotasks(); |
953 expect(controller.hasListener, isTrue); | 953 expect(controller.hasListener, isTrue); |
954 | 954 |
955 queue1.cancel(immediate: true); | 955 queue1.cancel(immediate: true); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1016 expect(await queue2.hasNext, isFalse); | 1016 expect(await queue2.hasNext, isFalse); |
1017 }); | 1017 }); |
1018 | 1018 |
1019 test("the underlying stream is only paused when all forks are paused", | 1019 test("the underlying stream is only paused when all forks are paused", |
1020 () async { | 1020 () async { |
1021 var controller = new StreamController(); | 1021 var controller = new StreamController(); |
1022 var queue1 = new StreamQueue<int>(controller.stream); | 1022 var queue1 = new StreamQueue<int>(controller.stream); |
1023 var queue2 = queue1.fork(); | 1023 var queue2 = queue1.fork(); |
1024 | 1024 |
1025 await flushMicrotasks(); | 1025 await flushMicrotasks(); |
1026 expect(controller.hasListener, isFalse); | 1026 expect(controller.hasListener, isTrue); |
1027 | 1027 |
1028 var sub1 = queue1.rest.listen(null); | 1028 var sub1 = queue1.rest.listen(null); |
1029 await flushMicrotasks(); | 1029 await flushMicrotasks(); |
1030 expect(controller.hasListener, isTrue); | 1030 expect(controller.hasListener, isTrue); |
1031 expect(controller.isPaused, isFalse); | 1031 expect(controller.isPaused, isFalse); |
1032 | 1032 |
1033 sub1.pause(); | 1033 sub1.pause(); |
1034 await flushMicrotasks(); | 1034 await flushMicrotasks(); |
1035 expect(controller.isPaused, isTrue); | 1035 expect(controller.isPaused, isTrue); |
1036 | 1036 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 controller.add(4); | 1122 controller.add(4); |
1123 await flushMicrotasks(); | 1123 await flushMicrotasks(); |
1124 controller.close(); | 1124 controller.close(); |
1125 }(); | 1125 }(); |
1126 return controller.stream; | 1126 return controller.stream; |
1127 } | 1127 } |
1128 | 1128 |
1129 Stream<int> createLongStream(int eventCount) async* { | 1129 Stream<int> createLongStream(int eventCount) async* { |
1130 for (int i = 0; i < eventCount; i++) yield i; | 1130 for (int i = 0; i < eventCount; i++) yield i; |
1131 } | 1131 } |
OLD | NEW |