Chromium Code Reviews| Index: tests/isolate/checked_test.dart |
| diff --git a/tests/isolate/checked_test.dart b/tests/isolate/checked_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..14dd1a43b2dafd58706dd01fd77e0f4c037a2a0b |
| --- /dev/null |
| +++ b/tests/isolate/checked_test.dart |
| @@ -0,0 +1,49 @@ |
| +// Copyright (c) 2014, 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 "dart:isolate"; |
| +import "dart:async"; |
| +import "package:expect/expect.dart"; |
| +import "package:async_helper/async_helper.dart"; |
| + |
| +void main([args, message]) { |
|
kevmoo
2015/06/02 17:42:55
How will this be marked in the status file for dar
Lasse Reichstein Nielsen
2015/06/03 06:55:25
Yes, thanks for reminding me :)
|
| + if (message != null) return isolateMain(message); |
| + |
| + bool isChecked = false; |
| + assert((isChecked = true)); |
| + if (isChecked) return; // Skip this test in checked mode. |
|
kevmoo
2015/06/02 17:42:55
should this 'check' happen in the status file?
Lasse Reichstein Nielsen
2015/06/03 06:55:25
I'd prefer to not have it at all, but that require
|
| + |
| + var responses = {}; |
| + var port = new RawReceivePort(); |
| + port.handler = (pair) { |
| + responses[pair[0]] = pair[1]; |
| + if (responses.length == 3) { |
| + port.close(); |
| + Expect.isTrue(responses[true], "true @ $isChecked"); |
| + Expect.isTrue(responses[false], "false @ $isChecked"); |
| + Expect.isTrue(responses[null], "null @ $isChecked"); |
| + } |
| + }; |
| + test(checked) { |
| + Isolate.spawnUri(Uri.parse("checked_test.dart"), [], |
| + [checked, isChecked, port.sendPort], |
| + checked: checked) |
| + .catchError(print); |
| + } |
| + test(true); |
| + test(false); |
| + test(null); |
| +} |
| + |
| + |
| +void isolateMain(args) { |
| + var checkedFlag = args[0]; |
| + var parentIsChecked = args[1]; |
| + var responsePort = args[2]; |
| + bool isChecked = false; |
| + assert((isChecked = true)); |
| + bool expected = checkedFlag; |
| + if (checkedFlag == null) expected = parentIsChecked; |
| + responsePort.send([checkedFlag, expected == isChecked]); |
| +} |