// 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]) { if (message != null) return isolateMain(message); bool isChecked = false; assert((isChecked = true)); if (isChecked) return; // Skip this test in checked mode. 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); } 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]); }