blob: 6e2d4107dabb45d424c197a8f32875f75d2b4ada [file] [log] [blame]
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/**
* @assertion If sE is an asynchronous for loop, its associated
* stream subscription is canceled.
*
* @description Check that break cancels subscription to the stream associated
* with the asynchronous loop
*
* @author a.semenov@unipro.ru
*/
import 'dart:async';
import '../../../Utils/expect.dart';
Future test1() async {
bool streamCanceled = false;
StreamController<String> streamController = new StreamController<String>();
streamController.add('a');
streamController.add('b');
streamController.onCancel = () { streamCanceled = true; };
await for (String s in streamController.stream) {
break;
}
Expect.isTrue(streamCanceled);
}
Future test2() async {
bool streamCanceled = false;
StreamController<String> streamController = new StreamController<String>();
streamController.add('a');
streamController.add('b');
streamController.onCancel = () { streamCanceled = true; };
L: await for (String s in streamController.stream) {
break L;
}
Expect.isTrue(streamCanceled);
}
main() {
asyncStart();
Future.wait([test1(), test2()]).then((v) => asyncEnd());
}