| 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 |