| #!/usr/bin/env dart |
| // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library client_generator_test; |
| |
| import 'package:protoc_plugin/indenting_writer.dart'; |
| import 'package:protoc_plugin/protoc.dart'; |
| import 'package:test/test.dart'; |
| |
| import 'service_util.dart'; |
| |
| void main() { |
| test('testClientGenerator', () { |
| // NOTE: Below > 80 cols because it is matching generated code > 80 cols. |
| String expected = r''' |
| class TestApi { |
| RpcClient _client; |
| TestApi(this._client); |
| |
| Future<SomeReply> aMethod(ClientContext ctx, SomeRequest request) { |
| var emptyResponse = new SomeReply(); |
| return _client.invoke(ctx, 'Test', 'AMethod', request, emptyResponse); |
| } |
| Future<foo$bar.AnotherReply> anotherMethod(ClientContext ctx, foo$bar.EmptyMessage request) { |
| var emptyResponse = new foo$bar.AnotherReply(); |
| return _client.invoke(ctx, 'Test', 'AnotherMethod', request, emptyResponse); |
| } |
| } |
| |
| '''; |
| var options = new GenerationOptions(); |
| var fd = buildFileDescriptor("testpkg", ["SomeRequest", "SomeReply"]); |
| fd.service.add(buildServiceDescriptor()); |
| var fg = new FileGenerator(fd, options); |
| |
| var fd2 = buildFileDescriptor("foo.bar", ["EmptyMessage", "AnotherReply"]); |
| var fg2 = new FileGenerator(fd2, options); |
| |
| link(new GenerationOptions(), [fg, fg2]); |
| |
| ClientApiGenerator cag = fg.clientApiGenerators[0]; |
| |
| IndentingWriter writer = new IndentingWriter(); |
| cag.generate(writer); |
| expect(writer.toString(), expected); |
| }); |
| } |