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

Unified Diff: mojo/dart/test/interface_test.dart

Issue 996923003: Dart: Better handle leak checks. close() is async. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/dart/test/bindings_generation_test.dart ('k') | mojo/dart/test/validation_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/dart/test/interface_test.dart
diff --git a/mojo/dart/test/interface_test.dart b/mojo/dart/test/interface_test.dart
deleted file mode 100644
index 76f28ec6a8f2db0286cf945fd36db5ae4dc36929..0000000000000000000000000000000000000000
--- a/mojo/dart/test/interface_test.dart
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright 2014 The Chromium Authors. 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:async';
-import 'dart:isolate';
-import 'dart:typed_data';
-import 'dart:mojo.bindings' as bindings;
-import 'dart:mojo.core' as core;
-
-import 'package:mojo/dart/testing/expect.dart';
-
-const int kEchoesCount = 100;
-
-class EchoString extends bindings.Struct {
- static const int kStructSize = 16;
- static const bindings.StructDataHeader kDefaultStructInfo =
- const bindings.StructDataHeader(kStructSize, 1);
- String a = null;
-
- EchoString() : super(kStructSize);
-
- static EchoString deserialize(bindings.Message message) {
- return decode(new bindings.Decoder(message));
- }
-
- static EchoString decode(bindings.Decoder decoder0) {
- if (decoder0 == null) {
- return null;
- }
- EchoString result = new EchoString();
- var mainDataHeader = decoder0.decodeStructDataHeader();
- if (mainDataHeader.version > 0) {
- result.a = decoder0.decodeString(8, false);
- }
- return result;
- }
-
- void encode(bindings.Encoder encoder) {
- var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo);
- encoder0.encodeString(a, 8, false);
- }
-}
-
-class EchoStringResponse extends bindings.Struct {
- static const int kStructSize = 16;
- static const bindings.StructDataHeader kDefaultStructInfo =
- const bindings.StructDataHeader(kStructSize, 1);
- String a = null;
-
- EchoStringResponse() : super(kStructSize);
-
- static EchoStringResponse deserialize(bindings.Message message) {
- return decode(new bindings.Decoder(message));
- }
-
- static EchoStringResponse decode(bindings.Decoder decoder0) {
- if (decoder0 == null) {
- return null;
- }
- EchoStringResponse result = new EchoStringResponse();
- var mainDataHeader = decoder0.decodeStructDataHeader();
- if (mainDataHeader.version > 0) {
- result.a = decoder0.decodeString(8, false);
- }
- return result;
- }
-
- void encode(bindings.Encoder encoder) {
- var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo);
- encoder0.encodeString(a, 8, false);
- }
-}
-
-const int kEchoString_name = 0;
-const int kEchoStringResponse_name = 1;
-
-class EchoStub extends bindings.Stub {
- EchoStub(core.MojoMessagePipeEndpoint endpoint)
- : super.fromEndpoint(endpoint);
-
- Future<EchoStringResponse> echoString(EchoString es) {
- var response = new EchoStringResponse();
- response.a = es.a;
- return new Future.value(response);
- }
-
- Future<bindings.Message> handleMessage(bindings.ServiceMessage message) {
- switch (message.header.type) {
- case kEchoString_name:
- var es = EchoString.deserialize(message.payload);
- return echoString(es).then((response) {
- if (response != null) {
- return buildResponseWithId(response, kEchoStringResponse_name,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
- });
- break;
- default:
- throw new Exception("Unexpected case");
- break;
- }
- return null;
- }
-}
-
-class EchoProxy extends bindings.Proxy {
- EchoProxy(core.MojoMessagePipeEndpoint endpoint)
- : super.fromEndpoint(endpoint);
-
- Future<EchoStringResponse> echoString(String a) {
- // compose message.
- var es = new EchoString();
- es.a = a;
- return sendMessageWithRequestId(es, kEchoString_name, -1,
- bindings.MessageHeader.kMessageExpectsResponse);
- }
-
- void handleResponse(bindings.ServiceMessage message) {
- switch (message.header.type) {
- case kEchoStringResponse_name:
- var esr = EchoStringResponse.deserialize(message.payload);
- Completer c = completerMap[message.header.requestId];
- completerMap[message.header.requestId] = null;
- c.complete(esr);
- break;
- default:
- throw new Exception("Unexpected case");
- break;
- }
- }
-}
-
-void providerIsolate(core.MojoMessagePipeEndpoint endpoint) {
- new EchoStub(endpoint);
-}
-
-Future<int> runTest() async {
- var testCompleter = new Completer();
-
- var pipe = new core.MojoMessagePipe();
- var proxy = new EchoProxy(pipe.endpoints[0]);
- await Isolate.spawn(providerIsolate, pipe.endpoints[1]);
-
- int n = kEchoesCount;
- int count = 0;
- for (int i = 0; i < n; i++) {
- proxy.echoString("hello").then((response) {
- Expect.equals("hello", response.a);
- count++;
- if (i == (n - 1)) {
- proxy.close();
- testCompleter.complete(count);
- }
- });
- }
-
- return testCompleter.future;
-}
-
-Future runAwaitTest() async {
- var pipe = new core.MojoMessagePipe();
- var proxy = new EchoProxy(pipe.endpoints[0]);
- await Isolate.spawn(providerIsolate, pipe.endpoints[1]);
-
- int n = kEchoesCount;
- for (int i = 0; i < n; i++) {
- var response = await proxy.echoString("Hello");
- Expect.equals("Hello", response.a);
- }
- proxy.close();
-}
-
-void closingProviderIsolate(core.MojoMessagePipeEndpoint endpoint) {
- var provider = new EchoStub(endpoint);
- provider.close();
-}
-
-Future<bool> runOnClosedTest() async {
- var testCompleter = new Completer();
-
- var pipe = new core.MojoMessagePipe();
- var proxy = new EchoProxy(pipe.endpoints[0]);
- proxy.onError = () => testCompleter.complete(true);
- await Isolate.spawn(closingProviderIsolate, pipe.endpoints[1]);
- return testCompleter.future.timeout(new Duration(seconds: 1),
- onTimeout: () => false);
-}
-
-main() async {
- Expect.equals(kEchoesCount, await runTest());
- await runAwaitTest();
- Expect.isTrue(await runOnClosedTest());
-}
« no previous file with comments | « mojo/dart/test/bindings_generation_test.dart ('k') | mojo/dart/test/validation_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698