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

Side by Side Diff: mojo/dart/apptests/dart_apptests/lib/src/echo_apptests.dart

Issue 1998433002: Dart: Adds Interface and InterfaceRequest interfaces. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge Created 4 years, 7 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 library echo_apptests; 5 library echo_apptests;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:mojo_apptest/apptest.dart'; 9 import 'package:mojo_apptest/apptest.dart';
10 import 'package:mojo/application.dart'; 10 import 'package:mojo/application.dart';
11 import 'package:mojo/bindings.dart'; 11 import 'package:mojo/bindings.dart';
12 import 'package:mojo/core.dart'; 12 import 'package:mojo/core.dart';
13 import 'package:_mojo_for_test_only/test/echo_service.mojom.dart'; 13 import 'package:_mojo_for_test_only/test/echo_service.mojom.dart';
14 14
15 echoApptests(Application application, String url) { 15 echoApptests(Application application, String url) {
16 group('Echo Service Apptests', () { 16 group('Echo Service Apptests', () {
17 test('String', () async { 17 test('String', () async {
18 var echoProxy = 18 var echo = EchoService.connectToService(application, "mojo:dart_echo");
19 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
20 19
21 var v = await echoProxy.echoString("foo"); 20 var v = await echo.echoString("foo");
22 expect(v.value, equals("foo")); 21 expect(v.value, equals("foo"));
23 22
24 var q = await echoProxy.echoString("quit"); 23 var q = await echo.echoString("quit");
25 expect(q.value, equals("quit")); 24 expect(q.value, equals("quit"));
26 25
27 await echoProxy.close(); 26 await echo.close();
28 }); 27 });
29 28
30 test('Empty String', () async { 29 test('Empty String', () async {
31 var echoProxy = 30 var echo = EchoService.connectToService(application, "mojo:dart_echo");
32 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
33 31
34 var v = await echoProxy.echoString(""); 32 var v = await echo.echoString("");
35 expect(v.value, equals("")); 33 expect(v.value, equals(""));
36 34
37 var q = await echoProxy.echoString("quit"); 35 var q = await echo.echoString("quit");
38 expect(q.value, equals("quit")); 36 expect(q.value, equals("quit"));
39 37
40 await echoProxy.close(); 38 await echo.close();
41 }); 39 });
42 40
43 test('Null String', () async { 41 test('Null String', () async {
44 var echoProxy = 42 var echo = EchoService.connectToService(application, "mojo:dart_echo");
45 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
46 43
47 var v = await echoProxy.echoString(null); 44 var v = await echo.echoString(null);
48 expect(v.value, equals(null)); 45 expect(v.value, equals(null));
49 46
50 var q = await echoProxy.echoString("quit"); 47 var q = await echo.echoString("quit");
51 expect(q.value, equals("quit")); 48 expect(q.value, equals("quit"));
52 49
53 await echoProxy.close(); 50 await echo.close();
54 }); 51 });
55 52
56 test('Delayed Success', () async { 53 test('Delayed Success', () async {
57 var echoProxy = 54 var echo = EchoService.connectToService(application, "mojo:dart_echo");
58 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
59 55
60 var milliseconds = 100; 56 var milliseconds = 100;
61 var watch = new Stopwatch()..start(); 57 var watch = new Stopwatch()..start();
62 var v = await echoProxy.delayedEchoString("foo", milliseconds); 58 var v = await echo.delayedEchoString("foo", milliseconds);
63 var elapsed = watch.elapsedMilliseconds; 59 var elapsed = watch.elapsedMilliseconds;
64 expect(v.value, equals("foo")); 60 expect(v.value, equals("foo"));
65 expect(elapsed, greaterThanOrEqualTo(milliseconds)); 61 expect(elapsed, greaterThanOrEqualTo(milliseconds));
66 62
67 var q = await echoProxy.echoString("quit"); 63 var q = await echo.echoString("quit");
68 expect(q.value, equals("quit")); 64 expect(q.value, equals("quit"));
69 65
70 await echoProxy.close(); 66 await echo.close();
71 }); 67 });
72 68
73 test('Delayed Close', () { 69 test('Delayed Close', () {
74 var echoProxy = 70 var echo = EchoService.connectToService(application, "mojo:dart_echo");
75 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
76 71
77 var milliseconds = 100; 72 var milliseconds = 100;
78 echoProxy.responseOrError(echoProxy.delayedEchoString( 73 echo.responseOrError(echo.delayedEchoString(
79 "quit", milliseconds)).then((result) { 74 "quit", milliseconds)).then((result) {
80 fail('This future should not complete.'); 75 fail('This future should not complete.');
81 }, onError: (e) { 76 }, onError: (e) {
82 expect(e is ProxyError, isTrue); 77 expect(e is ProxyError, isTrue);
83 }); 78 });
84 79
85 return new Future.delayed( 80 return new Future.delayed(
86 new Duration(milliseconds: 10), () => echoProxy.close()); 81 new Duration(milliseconds: 10), () => echo.close());
87 }); 82 });
88 83
89 test('Swap', () async { 84 test('Swap', () async {
90 var echoProxy = 85 var echo = EchoService.connectToService(application, "mojo:dart_echo");
91 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
92 86
93 for (int i = 0; i < 10; i++) { 87 for (int i = 0; i < 10; i++) {
94 var v = 88 var v = await echo.responseOrError(echo.echoString("foo"));
95 await echoProxy.responseOrError(echoProxy.echoString("foo"));
96 expect(v.value, equals("foo")); 89 expect(v.value, equals("foo"));
97 } 90 }
98 91
99 echoProxy.ctrl.errorFuture.then((e) { 92 echo.ctrl.errorFuture.then((e) {
100 fail("echoProxy: $e"); 93 fail("echo: $e");
101 }); 94 });
102 95
103 // Trigger an implementation swap in the echo server. 96 // Trigger an implementation swap in the echo server.
104 echoProxy.swap(); 97 echo.swap();
105 98
106 expect(echoProxy.ctrl.isBound, isTrue); 99 expect(echo.ctrl.isBound, isTrue);
107 100
108 for (int i = 0; i < 10; i++) { 101 for (int i = 0; i < 10; i++) {
109 var v = 102 var v = await echo.responseOrError(echo.echoString("foo"));
110 await echoProxy.responseOrError(echoProxy.echoString("foo"));
111 expect(v.value, equals("foo")); 103 expect(v.value, equals("foo"));
112 } 104 }
113 105
114 var q = await echoProxy.responseOrError(echoProxy.echoString("quit")); 106 var q = await echo.responseOrError(echo.echoString("quit"));
115 expect(q.value, equals("quit")); 107 expect(q.value, equals("quit"));
116 108
117 await echoProxy.close(); 109 await echo.close();
118 }); 110 });
119 111
120 test('Multiple Error Checks Success', () { 112 test('Multiple Error Checks Success', () {
121 var echoProxy = 113 var echo = EchoService.connectToService(application, "mojo:dart_echo");
122 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
123 114
124 List<Future> futures = []; 115 List<Future> futures = [];
125 for (int i = 0; i < 100; i++) { 116 for (int i = 0; i < 100; i++) {
126 var f = echoProxy.responseOrError(echoProxy.echoString("foo")) 117 var f = echo.responseOrError(echo.echoString("foo")).then((r) {
127 .then((r) {
128 expect(r.value, equals("foo")); 118 expect(r.value, equals("foo"));
129 }, onError: (e) { 119 }, onError: (e) {
130 fail('There should be no errors'); 120 fail('There should be no errors');
131 }); 121 });
132 futures.add(f); 122 futures.add(f);
133 } 123 }
134 return Future.wait(futures).whenComplete(() => echoProxy.close()); 124 return Future.wait(futures).whenComplete(() => echo.close());
135 }); 125 });
136 126
137 test('Multiple Error Checks Fail', () { 127 test('Multiple Error Checks Fail', () {
138 var echoProxy = 128 var echo = EchoService.connectToService(application, "mojo:dart_echo");
139 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
140 129
141 List<Future> futures = []; 130 List<Future> futures = [];
142 var milliseconds = 100; 131 var milliseconds = 100;
143 for (int i = 0; i < 100; i++) { 132 for (int i = 0; i < 100; i++) {
144 var f = echoProxy.responseOrError( 133 var f = echo.responseOrError(
145 echoProxy.delayedEchoString("foo", milliseconds)).then((_) { 134 echo.delayedEchoString("foo", milliseconds)).then((_) {
146 fail('This call should fail'); 135 fail('This call should fail');
147 }, onError: (e) { 136 }, onError: (e) {
148 expect(e is ProxyError, isTrue); 137 expect(e is ProxyError, isTrue);
149 }); 138 });
150 futures.add(f); 139 futures.add(f);
151 } 140 }
152 return echoProxy.close().then((_) => Future.wait(futures)); 141 return echo.close().then((_) => Future.wait(futures));
153 }); 142 });
154 143
155 test('Uncaught Call Closed', () async { 144 test('Uncaught Call Closed', () async {
156 var echoProxy = 145 var echo = EchoService.connectToService(application, "mojo:dart_echo");
157 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
158 146
159 // Do a normal call. 147 // Do a normal call.
160 var v = await echoProxy.echoString("foo"); 148 var v = await echo.echoString("foo");
161 expect(v.value, equals("foo")); 149 expect(v.value, equals("foo"));
162 150
163 // Close the proxy. 151 // Close the proxy.
164 await echoProxy.close(); 152 await echo.close();
165 153
166 // Try to do another call, which should not return. 154 // Try to do another call, which should not return.
167 echoProxy.echoString("foo").then((_) { 155 echo.echoString("foo").then((_) {
168 fail('This should be unreachable'); 156 fail('This should be unreachable');
169 }); 157 });
170 }); 158 });
171 159
172 test('Catch Call Closed', () async { 160 test('Catch Call Closed', () async {
173 var echoProxy = 161 var echo = EchoService.connectToService(application, "mojo:dart_echo");
174 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
175 162
176 // Do a normal call. 163 // Do a normal call.
177 var v = await echoProxy.echoString("foo"); 164 var v = await echo.echoString("foo");
178 expect(v.value, equals("foo")); 165 expect(v.value, equals("foo"));
179 166
180 // Close the proxy. 167 // Close the proxy.
181 await echoProxy.close(); 168 await echo.close();
182 169
183 // Try to do another call, which should fail. 170 // Try to do another call, which should fail.
184 bool caughtException = false; 171 bool caughtException = false;
185 try { 172 try {
186 v = await echoProxy.responseOrError(echoProxy.echoString("foo")); 173 v = await echo.responseOrError(echo.echoString("foo"));
187 fail('This should be unreachable'); 174 fail('This should be unreachable');
188 } on ProxyError catch (e) { 175 } on ProxyError catch (e) {
189 caughtException = true; 176 caughtException = true;
190 } 177 }
191 expect(caughtException, isTrue); 178 expect(caughtException, isTrue);
192 }); 179 });
193 180
194 test('Catch Call Sequence Closed Twice', () async { 181 test('Catch Call Sequence Closed Twice', () async {
195 var echoProxy = 182 var echo = EchoService.connectToService(application, "mojo:dart_echo");
196 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
197 183
198 // Do a normal call. 184 // Do a normal call.
199 var v = await echoProxy.echoString("foo"); 185 var v = await echo.echoString("foo");
200 expect(v.value, equals("foo")); 186 expect(v.value, equals("foo"));
201 187
202 // Close the proxy. 188 // Close the proxy.
203 await echoProxy.close(); 189 await echo.close();
204 190
205 // Try to do another call, which should fail. 191 // Try to do another call, which should fail.
206 bool caughtException = false; 192 bool caughtException = false;
207 try { 193 try {
208 v = await echoProxy.responseOrError(echoProxy.echoString("foo")); 194 v = await echo.responseOrError(echo.echoString("foo"));
209 fail('This should be unreachable'); 195 fail('This should be unreachable');
210 } on ProxyError catch (e) { 196 } on ProxyError catch (e) {
211 caughtException = true; 197 caughtException = true;
212 } 198 }
213 expect(caughtException, isTrue); 199 expect(caughtException, isTrue);
214 200
215 // Make sure we can catch an error more than once. 201 // Make sure we can catch an error more than once.
216 caughtException = false; 202 caughtException = false;
217 try { 203 try {
218 v = await echoProxy.responseOrError(echoProxy.echoString("foo")); 204 v = await echo.responseOrError(echo.echoString("foo"));
219 fail('This should be unreachable'); 205 fail('This should be unreachable');
220 } on ProxyError catch (e) { 206 } on ProxyError catch (e) {
221 caughtException = true; 207 caughtException = true;
222 } 208 }
223 expect(caughtException, isTrue); 209 expect(caughtException, isTrue);
224 }); 210 });
225 211
226 test('Catch Call Parallel Closed Twice', () async { 212 test('Catch Call Parallel Closed Twice', () async {
227 var echoProxy = 213 var echo = EchoService.connectToService(application, "mojo:dart_echo");
228 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
229 214
230 // Do a normal call. 215 // Do a normal call.
231 var v = await echoProxy.echoString("foo"); 216 var v = await echo.echoString("foo");
232 expect(v.value, equals("foo")); 217 expect(v.value, equals("foo"));
233 218
234 // Close the proxy. 219 // Close the proxy.
235 await echoProxy.close(); 220 await echo.close();
236 221
237 // Queue up two calls after the close, and make sure they both fail. 222 // Queue up two calls after the close, and make sure they both fail.
238 var f1 = echoProxy.responseOrError(echoProxy.echoString("foo")) 223 var f1 = echo.responseOrError(echo.echoString("foo")).then((_) {
239 .then((_) {
240 fail('This should be unreachable'); 224 fail('This should be unreachable');
241 }, onError: (e) { 225 }, onError: (e) {
242 expect(e is ProxyError, isTrue); 226 expect(e is ProxyError, isTrue);
243 }); 227 });
244 228
245 var f2 = echoProxy.responseOrError(echoProxy.echoString("foo")) 229 var f2 = echo.responseOrError(echo.echoString("foo")).then((_) {
246 .then((_) {
247 fail('This should be unreachable'); 230 fail('This should be unreachable');
248 }, onError: (e) { 231 }, onError: (e) {
249 expect(e is ProxyError, isTrue); 232 expect(e is ProxyError, isTrue);
250 }); 233 });
251 234
252 return Future.wait([f1, f2]); 235 return Future.wait([f1, f2]);
253 }); 236 });
254 237
255 test('Unbind, close', () async { 238 test('Unbind, close', () async {
256 var echoProxy = 239 var echo = EchoService.connectToService(application, "mojo:dart_echo");
257 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
258 240
259 var r = await echoProxy.responseOrError(echoProxy.echoString("foo")); 241 var r = await echo.responseOrError(echo.echoString("foo"));
260 expect(r.value, equals("foo")); 242 expect(r.value, equals("foo"));
261 243
262 var endpoint = echoProxy.ctrl.unbind(); 244 var endpoint = echo.ctrl.unbind();
263 await echoProxy.close(); 245 await echo.close();
264 endpoint.close(); 246 endpoint.close();
265 }); 247 });
266 248
267 test('Unbind, rebind to same', () async { 249 test('Unbind, rebind to same', () async {
268 var echoProxy = 250 var echo = EchoService.connectToService(application, "mojo:dart_echo");
269 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
270 251
271 var r = await echoProxy.responseOrError(echoProxy.echoString("foo")); 252 var r = await echo.responseOrError(echo.echoString("foo"));
272 expect(r.value, equals("foo")); 253 expect(r.value, equals("foo"));
273 254
274 var endpoint = echoProxy.ctrl.unbind(); 255 var endpoint = echo.ctrl.unbind();
275 echoProxy.ctrl.bind(endpoint); 256 echo.ctrl.bind(endpoint);
276 257
277 r = await echoProxy.responseOrError(echoProxy.echoString("foo")); 258 r = await echo.responseOrError(echo.echoString("foo"));
278 expect(r.value, equals("foo")); 259 expect(r.value, equals("foo"));
279 260
280 await echoProxy.close(); 261 await echo.close();
281 }); 262 });
282 263
283 test('Unbind, rebind to different', () async { 264 test('Unbind, rebind to different', () async {
284 var echoProxy = 265 var echo = EchoService.connectToService(application, "mojo:dart_echo");
285 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
286 266
287 var r = await echoProxy.responseOrError(echoProxy.echoString("foo")); 267 var r = await echo.responseOrError(echo.echoString("foo"));
288 expect(r.value, equals("foo")); 268 expect(r.value, equals("foo"));
289 269
290 var endpoint = echoProxy.ctrl.unbind(); 270 var endpoint = echo.ctrl.unbind();
291 var differentEchoProxy = new EchoServiceProxy.fromEndpoint(endpoint); 271 var differentEchoProxy = new EchoServiceProxy.fromEndpoint(endpoint);
292 272
293 r = await differentEchoProxy.responseOrError( 273 r = await differentEchoProxy.responseOrError(
294 differentEchoProxy.echoString("foo")); 274 differentEchoProxy.echoString("foo"));
295 expect(r.value, equals("foo")); 275 expect(r.value, equals("foo"));
296 276
297 await differentEchoProxy.close(); 277 await differentEchoProxy.close();
298 }); 278 });
299 279
300 test('Unbind, rebind to different, close original', () async { 280 test('Unbind, rebind to different, close original', () async {
301 var echoProxy = 281 var echo = EchoService.connectToService(application, "mojo:dart_echo");
302 new EchoServiceProxy.connectToService(application, "mojo:dart_echo");
303 282
304 var r = await echoProxy.responseOrError(echoProxy.echoString("foo")); 283 var r = await echo.responseOrError(echo.echoString("foo"));
305 expect(r.value, equals("foo")); 284 expect(r.value, equals("foo"));
306 285
307 var endpoint = echoProxy.ctrl.unbind(); 286 var endpoint = echo.ctrl.unbind();
308 var differentEchoProxy = new EchoServiceProxy.fromEndpoint(endpoint); 287 var differentEchoProxy = new EchoServiceProxy.fromEndpoint(endpoint);
309 await echoProxy.close(); 288 await echo.close();
310 289
311 r = await differentEchoProxy.responseOrError( 290 r = await differentEchoProxy.responseOrError(
312 differentEchoProxy.echoString("foo")); 291 differentEchoProxy.echoString("foo"));
313 expect(r.value, equals("foo")); 292 expect(r.value, equals("foo"));
314 293
315 await differentEchoProxy.close(); 294 await differentEchoProxy.close();
316 }); 295 });
317 }); 296 });
318 } 297 }
OLDNEW
« no previous file with comments | « examples/dart/wget/lib/main.dart ('k') | mojo/dart/apptests/dart_apptests/lib/src/pingpong_apptests.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698