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

Side by Side Diff: test/stream_queue_test.dart

Issue 1238503004: Alternative implementation of StreamQueue.fork which has no impact if it Base URL: https://github.com/dart-lang/async@master
Patch Set: Created 5 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
« no previous file with comments | « lib/src/subscription_fork.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 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
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
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
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
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 }
OLDNEW
« no previous file with comments | « lib/src/subscription_fork.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698