Chromium Code Reviews| Index: tests/standalone/io/async_catch_errors_test.dart |
| diff --git a/tests/standalone/io/async_catch_errors_test.dart b/tests/standalone/io/async_catch_errors_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..68ebec0790c15169c53671aa15694c178da6eaaf |
| --- /dev/null |
| +++ b/tests/standalone/io/async_catch_errors_test.dart |
| @@ -0,0 +1,49 @@ |
| +// Copyright (c) 2013, 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. |
| + |
| +import "package:expect/expect.dart"; |
| +import 'dart:async'; |
| +import 'dart:isolate'; |
| +import 'dart:io'; |
| + |
| +var events = []; |
| + |
| +void testSocketException() { |
| + var completer = new Completer(); |
| + runZonedExperimental(() { |
| + Socket.connect("4", 1).then((Socket s) { |
| + Expect.fail("Socket should not be able to connect"); |
| + }); |
| + }, onError: (err) { |
| + if (err is! SocketException) Expect.fail("Not expected error: $err"); |
| + completer.complete("socket test, ok."); |
| + events.add("SocketException"); |
| + }); |
| + return completer.future; |
| +} |
| + |
| +void testFileException() { |
| + var completer = new Completer(); |
| + runZonedExperimental(() { |
| + new File("lol it's not a file\n").openRead().listen(null); |
| + }, onError: (err) { |
| + if (err is! FileException) Expect.fail("Not expected error: $err"); |
| + completer.complete("file test, ok."); |
| + events.add("FileException"); |
| + }); |
| + return completer.future; |
| +} |
| + |
| +main() { |
| + // We keep a ReceivePort open until all tests are done. This way the VM will |
| + // hang if the callbacks are not invoked and the test will time out. |
| + var timeOutPort = new ReceivePort(); |
| + testSocketException() |
|
Anders Johnsen
2013/07/11 13:43:37
Just an idea, but you could remove events and chan
floitsch
2013/07/11 14:06:22
Yes. But frequently I add events at other location
|
| + .then((_) => testFileException()) |
| + .then((_) { |
| + timeOutPort.close(); |
| + Expect.listEquals(["SocketException", "FileException"], |
| + events); |
| + }); |
| +} |