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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 expect(await events.next, 4); | 135 expect(await events.next, 4); |
136 await events.cancel(); | 136 await events.cancel(); |
137 }); | 137 }); |
138 | 138 |
139 test("of events with error, and skip again after", () async { | 139 test("of events with error, and skip again after", () async { |
140 var events = new StreamQueue<int>(createErrorStream()); | 140 var events = new StreamQueue<int>(createErrorStream()); |
141 expect(events.skip(4), throwsA("To err is divine!")); | 141 expect(events.skip(4), throwsA("To err is divine!")); |
142 expect(events.skip(2), completion(1)); | 142 expect(events.skip(2), completion(1)); |
143 await events.cancel(); | 143 await events.cancel(); |
144 }); | 144 }); |
145 | |
146 test("multiple skips at same time complete in order.", () async { | 145 test("multiple skips at same time complete in order.", () async { |
147 var events = new StreamQueue<int>(createStream()); | 146 var events = new StreamQueue<int>(createStream()); |
148 var skip1 = events.skip(1); | 147 var skip1 = events.skip(1); |
149 var skip2 = events.skip(0); | 148 var skip2 = events.skip(0); |
150 var skip3 = events.skip(4); | 149 var skip3 = events.skip(4); |
151 var skip4 = events.skip(1); | 150 var skip4 = events.skip(1); |
152 var index = 0; | 151 var index = 0; |
153 // Check that futures complete in order. | 152 // Check that futures complete in order. |
154 sequence(expectedValue, sequenceIndex) => (value) { | 153 sequence(expectedValue, sequenceIndex) => (value) { |
155 expect(value, expectedValue); | 154 expect(value, expectedValue); |
156 expect(index, sequenceIndex); | 155 expect(index, sequenceIndex); |
157 index++; | 156 index++; |
158 } | 157 }; |
159 await Future.wait([skip1.then(sequence(0, 0)), | 158 await Future.wait([skip1.then(sequence(0, 0)), |
160 skip2.then(sequence(0, 1)), | 159 skip2.then(sequence(0, 1)), |
161 skip3.then(sequence(1, 2)), | 160 skip3.then(sequence(1, 2)), |
162 skip4.then(sequence(1, 3))]); | 161 skip4.then(sequence(1, 3))]); |
163 await events.cancel(); | 162 await events.cancel(); |
164 }); | 163 }); |
165 }); | 164 }); |
166 | 165 |
167 group("take operation", () { | 166 group("take operation", () { |
168 test("as simple take of events", () async { | 167 test("as simple take of events", () async { |
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 controller.add(4); | 622 controller.add(4); |
624 await flushMicrotasks(); | 623 await flushMicrotasks(); |
625 controller.close(); | 624 controller.close(); |
626 }(); | 625 }(); |
627 return controller.stream; | 626 return controller.stream; |
628 } | 627 } |
629 | 628 |
630 Stream<int> createLongStream(int eventCount) async* { | 629 Stream<int> createLongStream(int eventCount) async* { |
631 for (int i = 0; i < eventCount; i++) yield i; | 630 for (int i = 0; i < eventCount; i++) yield i; |
632 } | 631 } |
OLD | NEW |