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

Side by Side Diff: mojo/dart/test/handle_watcher_test.dart

Issue 1027603002: Dart: Removes all but native calls and the handle watcher from the snapshot. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Hoist application interface dependence Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « mojo/dart/test/handle_finalizer_test.dart ('k') | mojo/dart/test/import_mojo.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:isolate'; 6 import 'dart:isolate';
7 import 'dart:typed_data'; 7 import 'dart:typed_data';
8 import 'dart:mojo.core';
9 8
10 import 'package:mojo/dart/testing/expect.dart'; 9 import 'package:mojo/dart/testing/expect.dart';
10 import 'package:mojo/public/dart/core.dart';
11 11
12 void simpleTest() { 12 void simpleTest() {
13 var pipe = new MojoMessagePipe(); 13 var pipe = new MojoMessagePipe();
14 Expect.isNotNull(pipe); 14 Expect.isNotNull(pipe);
15 15
16 var endpoint = pipe.endpoints[0]; 16 var endpoint = pipe.endpoints[0];
17 Expect.isTrue(endpoint.handle.isValid); 17 Expect.isTrue(endpoint.handle.isValid);
18 18
19 var eventStream = new MojoEventStream(endpoint.handle); 19 var eventStream = new MojoEventStream(endpoint.handle);
20 var completer = new Completer(); 20 var completer = new Completer();
21 int numEvents = 0; 21 int numEvents = 0;
22 22
23 eventStream.listen((_) { 23 eventStream.listen((_) {
24 numEvents++; 24 numEvents++;
25 eventStream.close(); 25 eventStream.close();
26 }, onDone: () { 26 }, onDone: () {
27 completer.complete(numEvents); 27 completer.complete(numEvents);
28 }); 28 });
29 eventStream.enableWriteEvents(); 29 eventStream.enableWriteEvents();
30 30
31 completer.future.then((int numEvents) { 31 completer.future.then((int numEvents) {
32 Expect.equals(1, numEvents); 32 Expect.equals(1, numEvents);
33 }); 33 });
34 } 34 }
35 35
36
37 Future simpleAsyncAwaitTest() async { 36 Future simpleAsyncAwaitTest() async {
38 var pipe = new MojoMessagePipe(); 37 var pipe = new MojoMessagePipe();
39 Expect.isNotNull(pipe); 38 Expect.isNotNull(pipe);
40 39
41 var endpoint = pipe.endpoints[0]; 40 var endpoint = pipe.endpoints[0];
42 Expect.isTrue(endpoint.handle.isValid); 41 Expect.isTrue(endpoint.handle.isValid);
43 42
44 var eventStream = 43 var eventStream =
45 new MojoEventStream(endpoint.handle, MojoHandleSignals.READWRITE); 44 new MojoEventStream(endpoint.handle, MojoHandleSignals.READWRITE);
46 45
47 int numEvents = 0; 46 int numEvents = 0;
48 await for (List<int> event in eventStream) { 47 await for (List<int> event in eventStream) {
49 numEvents++; 48 numEvents++;
50 eventStream.close(); 49 eventStream.close();
51 } 50 }
52 Expect.equals(1, numEvents); 51 Expect.equals(1, numEvents);
53 } 52 }
54 53
55
56 ByteData byteDataOfString(String s) { 54 ByteData byteDataOfString(String s) {
57 return new ByteData.view((new Uint8List.fromList(s.codeUnits)).buffer); 55 return new ByteData.view((new Uint8List.fromList(s.codeUnits)).buffer);
58 } 56 }
59 57
60
61 String stringOfByteData(ByteData bytes) { 58 String stringOfByteData(ByteData bytes) {
62 return new String.fromCharCodes(bytes.buffer.asUint8List().toList()); 59 return new String.fromCharCodes(bytes.buffer.asUint8List().toList());
63 } 60 }
64 61
65 62 void expectStringFromEndpoint(
66 void expectStringFromEndpoint(String expected, 63 String expected, MojoMessagePipeEndpoint endpoint) {
67 MojoMessagePipeEndpoint endpoint) {
68 // Query how many bytes are available. 64 // Query how many bytes are available.
69 var result = endpoint.query(); 65 var result = endpoint.query();
70 Expect.isNotNull(result); 66 Expect.isNotNull(result);
71 int size = result.bytesRead; 67 int size = result.bytesRead;
72 Expect.isTrue(size > 0); 68 Expect.isTrue(size > 0);
73 69
74 // Read the data. 70 // Read the data.
75 ByteData bytes = new ByteData(size); 71 ByteData bytes = new ByteData(size);
76 result = endpoint.read(bytes); 72 result = endpoint.read(bytes);
77 Expect.isNotNull(result); 73 Expect.isNotNull(result);
78 Expect.equals(size, result.bytesRead); 74 Expect.equals(size, result.bytesRead);
79 75
80 // Convert to a string and check. 76 // Convert to a string and check.
81 String msg = stringOfByteData(bytes); 77 String msg = stringOfByteData(bytes);
82 Expect.equals(expected, msg); 78 Expect.equals(expected, msg);
83 } 79 }
84 80
85
86 Future pingPongIsolate(MojoMessagePipeEndpoint endpoint) async { 81 Future pingPongIsolate(MojoMessagePipeEndpoint endpoint) async {
87 int pings = 0; 82 int pings = 0;
88 int pongs = 0; 83 int pongs = 0;
89 var eventStream = new MojoEventStream(endpoint.handle); 84 var eventStream = new MojoEventStream(endpoint.handle);
90 await for (List<int> event in eventStream) { 85 await for (List<int> event in eventStream) {
91 var mojoSignals = new MojoHandleSignals(event[1]); 86 var mojoSignals = new MojoHandleSignals(event[1]);
92 if (mojoSignals.isReadWrite) { 87 if (mojoSignals.isReadWrite) {
93 // We are either sending or receiving. 88 // We are either sending or receiving.
94 throw new Exception("Unexpected event"); 89 throw new Exception("Unexpected event");
95 } else if (mojoSignals.isReadable) { 90 } else if (mojoSignals.isReadable) {
96 expectStringFromEndpoint("Ping", endpoint); 91 expectStringFromEndpoint("Ping", endpoint);
97 pings++; 92 pings++;
98 eventStream.enableWriteEvents(); 93 eventStream.enableWriteEvents();
99 } else if (mojoSignals.isWritable) { 94 } else if (mojoSignals.isWritable) {
100 endpoint.write(byteDataOfString("Pong")); 95 endpoint.write(byteDataOfString("Pong"));
101 pongs++; 96 pongs++;
102 eventStream.enableReadEvents(); 97 eventStream.enableReadEvents();
103 } 98 }
104 } 99 }
105 eventStream.close(); 100 eventStream.close();
106 Expect.equals(10, pings); 101 Expect.equals(10, pings);
107 Expect.equals(10, pongs); 102 Expect.equals(10, pongs);
108 } 103 }
109 104
110
111 Future pingPongTest() async { 105 Future pingPongTest() async {
112 var pipe = new MojoMessagePipe(); 106 var pipe = new MojoMessagePipe();
113 var isolate = await Isolate.spawn(pingPongIsolate, pipe.endpoints[0]); 107 var isolate = await Isolate.spawn(pingPongIsolate, pipe.endpoints[0]);
114 var endpoint = pipe.endpoints[1]; 108 var endpoint = pipe.endpoints[1];
115 var eventStream = 109 var eventStream =
116 new MojoEventStream(endpoint.handle, MojoHandleSignals.READWRITE); 110 new MojoEventStream(endpoint.handle, MojoHandleSignals.READWRITE);
117 111
118 int pings = 0; 112 int pings = 0;
119 int pongs = 0; 113 int pongs = 0;
120 await for (List<int> event in eventStream) { 114 await for (List<int> event in eventStream) {
121 var mojoSignals = new MojoHandleSignals(event[1]); 115 var mojoSignals = new MojoHandleSignals(event[1]);
122 if (mojoSignals.isReadWrite) { 116 if (mojoSignals.isReadWrite) {
123 // We are either sending or receiving. 117 // We are either sending or receiving.
124 throw new Exception("Unexpected event"); 118 throw new Exception("Unexpected event");
125 } else if (mojoSignals.isReadable) { 119 } else if (mojoSignals.isReadable) {
126 expectStringFromEndpoint("Pong", endpoint); 120 expectStringFromEndpoint("Pong", endpoint);
127 pongs++; 121 pongs++;
128 if (pongs == 10) { 122 if (pongs == 10) {
129 eventStream.close(); 123 eventStream.close();
130 } 124 }
131 eventStream.enableWriteEvents(); // Now it is our turn to send. 125 eventStream.enableWriteEvents(); // Now it is our turn to send.
132 } else if (mojoSignals.isWritable) { 126 } else if (mojoSignals.isWritable) {
133 if (pings < 10) { 127 if (pings < 10) {
134 endpoint.write(byteDataOfString("Ping")); 128 endpoint.write(byteDataOfString("Ping"));
135 pings++; 129 pings++;
136 } 130 }
137 eventStream.enableReadEvents(); // Don't send while waiting for reply. 131 eventStream.enableReadEvents(); // Don't send while waiting for reply.
138 } 132 }
139 } 133 }
140 Expect.equals(10, pings); 134 Expect.equals(10, pings);
141 Expect.equals(10, pongs); 135 Expect.equals(10, pongs);
142 } 136 }
143 137
144
145 main() async { 138 main() async {
146 simpleTest(); 139 simpleTest();
147 await simpleAsyncAwaitTest(); 140 await simpleAsyncAwaitTest();
148 await pingPongTest(); 141 await pingPongTest();
149 } 142 }
OLDNEW
« no previous file with comments | « mojo/dart/test/handle_finalizer_test.dart ('k') | mojo/dart/test/import_mojo.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698