@@ -148,6 +148,76 @@ void main() {
148
148
});
149
149
}
150
150
});
151
+
152
+ group ('subscriptionStream error callback' , () {
153
+ test ('binary typed' , () async {
154
+ var completer = Completer <void >();
155
+ var stream = createErrorStream ();
156
+ var sourceSubscription = stream.listen (null , cancelOnError: true );
157
+ var subscriptionStream = SubscriptionStream (sourceSubscription);
158
+
159
+ void f (Object error, StackTrace stackTrace) {
160
+ completer.complete ();
161
+ }
162
+
163
+ subscriptionStream.listen ((_) {},
164
+ onError: f,
165
+ onDone: () => throw 'should not happen' ,
166
+ cancelOnError: true );
167
+ await completer.future;
168
+ await flushMicrotasks ();
169
+ });
170
+
171
+ test ('binary dynamic' , () async {
172
+ var completer = Completer <void >();
173
+ var stream = createErrorStream ();
174
+ var sourceSubscription = stream.listen (null , cancelOnError: true );
175
+ var subscriptionStream = SubscriptionStream (sourceSubscription);
176
+
177
+ subscriptionStream.listen ((_) {},
178
+ onError: (error, stackTrace) {
179
+ completer.complete ();
180
+ },
181
+ onDone: () => throw 'should not happen' ,
182
+ cancelOnError: true );
183
+ await completer.future;
184
+ await flushMicrotasks ();
185
+ });
186
+
187
+ test ('unary typed' , () async {
188
+ var completer = Completer <void >();
189
+ var stream = createErrorStream ();
190
+ var sourceSubscription = stream.listen (null , cancelOnError: true );
191
+ var subscriptionStream = SubscriptionStream (sourceSubscription);
192
+
193
+ void f (Object error) {
194
+ completer.complete ();
195
+ }
196
+
197
+ subscriptionStream.listen ((_) {},
198
+ onError: f,
199
+ onDone: () => throw 'should not happen' ,
200
+ cancelOnError: true );
201
+ await completer.future;
202
+ await flushMicrotasks ();
203
+ });
204
+
205
+ test ('unary dynamic' , () async {
206
+ var completer = Completer <void >();
207
+ var stream = createErrorStream ();
208
+ var sourceSubscription = stream.listen (null , cancelOnError: true );
209
+ var subscriptionStream = SubscriptionStream (sourceSubscription);
210
+
211
+ subscriptionStream.listen ((_) {},
212
+ onError: (error) {
213
+ completer.complete ();
214
+ },
215
+ onDone: () => throw 'should not happen' ,
216
+ cancelOnError: true );
217
+ await completer.future;
218
+ await flushMicrotasks ();
219
+ });
220
+ });
151
221
}
152
222
153
223
Stream <int > createStream () async * {
0 commit comments