OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |