Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1197)

Unified Diff: tests/isolate/issue_21398_parent_isolate_test.dart

Issue 834233003: Fix for issue 21398 (only send "literal like" objects across isolates spawned using spawnURI (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/isolate/issue_21398_parent_isolate1_test.dart ('k') | tests/lib/mirrors/invocation_fuzz_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/isolate/issue_21398_parent_isolate_test.dart
===================================================================
--- tests/isolate/issue_21398_parent_isolate_test.dart (revision 0)
+++ tests/isolate/issue_21398_parent_isolate_test.dart (working copy)
@@ -0,0 +1,65 @@
+// 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.
+
+import 'dart:isolate';
+import 'dart:async';
+import "package:expect/expect.dart";
+
+class FromMainIsolate {
+ String toString() => 'from main isolate';
+ int get fld => 10;
+}
+
+funcChild(args) {
+ var reply = args[1];
+ var obj = args[0];
+ Expect.isTrue(obj is FromMainIsolate);
+ Expect.equals(10, obj.fld);
+ reply.send(new FromMainIsolate());
+}
+
+main() {
+ var receive1 = new ReceivePort();
+ var receive2 = new ReceivePort();
+
+ // First spawn an isolate using spawnURI and have it
+ // send back a "non-literal" like object.
+ Isolate.spawnUri(Uri.parse('issue_21398_child_isolate.dart'),
+ [],
+ [new FromMainIsolate(), receive1.sendPort]).catchError(
+ (error) {
+ Expect.isTrue(error is ArgumentError);
+ }
+ );
+ Isolate.spawnUri(Uri.parse('issue_21398_child_isolate.dart'),
+ [],
+ receive1.sendPort).then(
+ (isolate) {
+ receive1.listen(
+ (msg) {
+ Expect.stringEquals(msg, "Invalid Argument(s).");
+ receive1.close();
+ },
+ onError: (e) => print('$e')
+ );
+ }
+ );
+
+ // Now spawn an isolate using spawnFunction and send it a "non-literal"
+ // like object and also have the child isolate send back a "non-literal"
+ // like object.
+ Isolate.spawn(funcChild,
+ [new FromMainIsolate(), receive2.sendPort]).then(
+ (isolate) {
+ receive2.listen(
+ (msg) {
+ Expect.isTrue(msg is FromMainIsolate);
+ Expect.equals(10, msg.fld);
+ receive2.close();
+ },
+ onError: (e) => print('$e')
+ );
+ }
+ );
+}
« no previous file with comments | « tests/isolate/issue_21398_parent_isolate1_test.dart ('k') | tests/lib/mirrors/invocation_fuzz_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698