| Index: mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
|
| diff --git a/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart b/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
|
| index ccafe587a1ebc3b73dfd978727c9a250073a79f9..e817722cae845b84359a7363741aa18b835b728e 100644
|
| --- a/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
|
| +++ b/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
|
| @@ -13,8 +13,8 @@ import 'package:mojo/core.dart';
|
| import 'package:mojo/mojo/bindings/types/mojom_types.mojom.dart' as mojom_types;
|
| import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart'
|
| as service_describer;
|
| -import 'package:_mojo_for_test_only/test/echo_service.mojom.dart'
|
| - as echo_service;
|
| +import 'package:_mojo_for_test_only/test/pingpong_service.mojom.dart'
|
| + as pingpong_service;
|
|
|
| // Tests that demonstrate that a service describer is able to obtain the same
|
| // mojom type information present in a service's service description.
|
| @@ -22,44 +22,60 @@ import 'package:_mojo_for_test_only/test/echo_service.mojom.dart'
|
| // described by a mojo application without importing any of their mojom files.
|
| tests(Application application, String url) {
|
| group('Service Describer Apptests', () {
|
| - test('Echo Service Verification', () async {
|
| - var serviceDescriberProxy =
|
| - new service_describer.ServiceDescriberProxy.connectToService(
|
| - application, "mojo:dart_echo_with_service_describer");
|
| + test('PingPong Service Verification', () async {
|
| + var serviceDescriberProxy = new service_describer.ServiceDescriberProxy.
|
| + unbound();
|
| + serviceDescriberProxy.errorFuture.then((v) =>
|
| + fail('There was an error $v'));
|
| + application.connectToService("mojo:dart_pingpong", serviceDescriberProxy);
|
|
|
| var serviceDescriptionProxy =
|
| new service_describer.ServiceDescriptionProxy.unbound();
|
| - await serviceDescriberProxy.ptr
|
| - .describeService("test::EchoService", serviceDescriptionProxy);
|
| + serviceDescriptionProxy.errorFuture.then(
|
| + (v) => fail('There was an error $v'));
|
|
|
| - expect(serviceDescriptionProxy.impl, isNotNull);
|
| - expect(serviceDescriptionProxy.ptr, isNotNull);
|
| + serviceDescriberProxy.ptr.describeService(
|
| + "test::PingPongService", serviceDescriptionProxy);
|
|
|
| // Compare the service description obtained by the service describer and
|
| - // the expected description taken from the echo service import.
|
| - var sd = serviceDescriptionProxy.ptr;
|
| - var ed = echo_service.EchoServiceStub.serviceDescription;
|
| + // the expected description taken from the pingpong service import.
|
| + var serviceDescription = serviceDescriptionProxy.ptr;
|
| + var serviceDescription2 = pingpong_service.PingPongServiceStub.
|
| + serviceDescription;
|
|
|
| Function identity = (v) => v;
|
|
|
| +
|
| // Top-level Mojom Interfaces must match.
|
| - mojom_types.MojomInterface a =
|
| - (await sd.getTopLevelInterface()).mojomInterface;
|
| - mojom_types.MojomInterface b = ed.getTopLevelInterface(identity);
|
| - _compare(a, b);
|
| -
|
| - String interfaceID = "echo_service_EchoService__";
|
| - mojom_types.MojomInterface c =
|
| - (await sd.getTypeDefinition(interfaceID)).type.interfaceType;
|
| - mojom_types.MojomInterface d =
|
| - ed.getTypeDefinition(interfaceID, identity).interfaceType;
|
| - _compare(a, c);
|
| - _compare(c, d);
|
| + mojom_types.MojomInterface interfaceA =
|
| + (await serviceDescriptionProxy.responseOrError(
|
| + serviceDescription.getTopLevelInterface())).mojomInterface;
|
| +
|
| + mojom_types.MojomInterface interfaceB = serviceDescription2.
|
| + getTopLevelInterface(identity);
|
| + _compare(interfaceA, interfaceB);
|
| +
|
| + // Get the type key for the type of the first parameter of the
|
| + // first method of the interface.
|
| + mojom_types.MojomMethod setClientMethod = interfaceA.methods[0];
|
| + mojom_types.StructField firstParam = setClientMethod.parameters.fields[0];
|
| + String typeKey = firstParam.type.typeReference.typeKey;
|
| +
|
| + // Use getTypeDefinition() to get the type and check that it
|
| + // is named "PingPongClient".
|
| + mojom_types.MojomInterface pingPongClientInterface =
|
| + (await serviceDescriptionProxy.responseOrError(
|
| + serviceDescription.getTypeDefinition(typeKey))).type.
|
| + interfaceType;
|
| + expect(pingPongClientInterface.declData.shortName,
|
| + equals("PingPongClient"));
|
|
|
| // Check that the mojom type definitions match between mappings.
|
| // For simplicity, check in a shallow manner.
|
| - var actualDescriptions = (await sd.getAllTypeDefinitions()).definitions;
|
| - var expectedDescriptions = ed.getAllTypeDefinitions(identity);
|
| + var actualDescriptions = (await serviceDescriptionProxy.responseOrError(
|
| + serviceDescription.getAllTypeDefinitions())).definitions;
|
| + var expectedDescriptions = serviceDescription2.
|
| + getAllTypeDefinitions(identity);
|
| actualDescriptions.keys.forEach((String key) {
|
| var a = actualDescriptions[key];
|
| var e = expectedDescriptions[key];
|
|
|