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

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

Issue 2006093002: Dart: Futures -> Callbacks. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge Created 4 years, 6 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 service_describer_apptests; 5 library service_describer_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';
(...skipping 21 matching lines...) Expand all
32 var serviceDescription = 32 var serviceDescription =
33 new service_describer.ServiceDescriptionInterfaceRequest(); 33 new service_describer.ServiceDescriptionInterfaceRequest();
34 serviceDescription.ctrl.errorFuture.then( 34 serviceDescription.ctrl.errorFuture.then(
35 (v) => fail('There was an error $v')); 35 (v) => fail('There was an error $v'));
36 36
37 serviceDescriber.describeService( 37 serviceDescriber.describeService(
38 "test::PingPongService", serviceDescription); 38 "test::PingPongService", serviceDescription);
39 39
40 // Compare the service description obtained by the service describer and 40 // Compare the service description obtained by the service describer and
41 // the expected description taken from the pingpong service import. 41 // the expected description taken from the pingpong service import.
42 var serviceDescription2 = pingpong_service.PingPongService. 42 var serviceDescription2 =
43 serviceDescription; 43 pingpong_service.PingPongService.serviceDescription;
44 44
45 Function identity = (v) => v; 45 Object sdValue;
46 Function sdValueAssign = (v) => sdValue = v;
46 47
47 // Top-level Mojom Interfaces must match. 48 // Top-level Mojom Interfaces must match.
49 var c = new Completer();
50 serviceDescription.getTopLevelInterface(
51 (mojom_types.MojomInterface iface) {
52 c.complete(iface);
53 });
54
48 mojom_types.MojomInterface interfaceA = 55 mojom_types.MojomInterface interfaceA =
49 (await serviceDescription.responseOrError( 56 (await serviceDescription.responseOrError(c.future));
50 serviceDescription.getTopLevelInterface())).mojomInterface;
51 57
52 mojom_types.MojomInterface interfaceB = serviceDescription2. 58 serviceDescription2.getTopLevelInterface(sdValueAssign);
53 getTopLevelInterface(identity); 59 mojom_types.MojomInterface interfaceB = sdValue;
54 _compare(interfaceA, interfaceB); 60 _compare(interfaceA, interfaceB);
55 61
56 // Get the type key for the type of the first parameter of the 62 // Get the type key for the type of the first parameter of the
57 // first method of the interface. 63 // first method of the interface.
58 mojom_types.MojomMethod setClientMethod = interfaceA.methods[0]; 64 mojom_types.MojomMethod setClientMethod = interfaceA.methods[0];
59 mojom_types.StructField firstParam = setClientMethod.parameters.fields[0]; 65 mojom_types.StructField firstParam = setClientMethod.parameters.fields[0];
60 String typeKey = firstParam.type.typeReference.typeKey; 66 String typeKey = firstParam.type.typeReference.typeKey;
61 67
62 // Use getTypeDefinition() to get the type and check that it 68 // Use getTypeDefinition() to get the type and check that it
63 // is named "PingPongClient". 69 // is named "PingPongClient".
70 c = new Completer();
71 serviceDescription.getTypeDefinition(typeKey,
72 (mojom_types.UserDefinedType type) {
73 c.complete(type);
74 });
64 mojom_types.MojomInterface pingPongClientInterface = 75 mojom_types.MojomInterface pingPongClientInterface =
65 (await serviceDescription.responseOrError( 76 (await serviceDescription.responseOrError(c.future)).interfaceType;
66 serviceDescription.getTypeDefinition(typeKey))).type.
67 interfaceType;
68 expect(pingPongClientInterface.declData.shortName, 77 expect(pingPongClientInterface.declData.shortName,
69 equals("PingPongClient")); 78 equals("PingPongClient"));
70 79
71 // Check that the mojom type definitions match between mappings. 80 // Check that the mojom type definitions match between mappings.
72 // For simplicity, check in a shallow manner. 81 // For simplicity, check in a shallow manner.
73 var actualDescriptions = (await serviceDescription.responseOrError( 82 c = new Completer();
74 serviceDescription.getAllTypeDefinitions())).definitions; 83 serviceDescription.getAllTypeDefinitions(
75 var expectedDescriptions = serviceDescription2. 84 (Map<String, mojom_types.UserDefinedType> definitions) {
76 getAllTypeDefinitions(identity); 85 c.complete(definitions);
86 });
87
88 var actualDescriptions =
89 (await serviceDescription.responseOrError(c.future));
90 serviceDescription2.getAllTypeDefinitions(sdValueAssign);
91 var expectedDescriptions = sdValue;
77 actualDescriptions.keys.forEach((String key) { 92 actualDescriptions.keys.forEach((String key) {
78 var a = actualDescriptions[key]; 93 var a = actualDescriptions[key];
79 var e = expectedDescriptions[key]; 94 var e = expectedDescriptions[key];
80 expect(e, isNotNull); 95 expect(e, isNotNull);
81 expect(a.runtimeType, equals(e.runtimeType)); 96 expect(a.runtimeType, equals(e.runtimeType));
82 }); 97 });
83 98
84 await serviceDescription.close(); 99 await serviceDescription.close();
85 await serviceDescriber.close(); 100 await serviceDescriber.close();
86 }); 101 });
(...skipping 25 matching lines...) Expand all
112 expect(methodA.parameters.fields.length, 127 expect(methodA.parameters.fields.length,
113 equals(methodB.parameters.fields.length)); 128 equals(methodB.parameters.fields.length));
114 mojom_types.MojomStruct responseA = methodA.responseParams; 129 mojom_types.MojomStruct responseA = methodA.responseParams;
115 mojom_types.MojomStruct responseB = methodB.responseParams; 130 mojom_types.MojomStruct responseB = methodB.responseParams;
116 expect(responseA == null, equals(responseB == null)); 131 expect(responseA == null, equals(responseB == null));
117 if (responseA != null) { 132 if (responseA != null) {
118 expect(responseA.fields.length, equals(responseB.fields.length)); 133 expect(responseA.fields.length, equals(responseB.fields.length));
119 } 134 }
120 }); 135 });
121 } 136 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698