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

Side by Side Diff: test/file_generator_test.dart

Issue 2013343002: Move server-side service stubs to .pbserver.dart (Closed) Base URL: git@github.com:dart-lang/dart-protoc-plugin.git@cleanup
Patch Set: bump version 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 #!/usr/bin/env dart 1 #!/usr/bin/env dart
2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
3 // for details. All rights reserved. Use of this source code is governed by a 3 // for details. All rights reserved. Use of this source code is governed by a
4 // BSD-style license that can be found in the LICENSE file. 4 // BSD-style license that can be found in the LICENSE file.
5 5
6 library file_generator_test; 6 library file_generator_test;
7 7
8 import 'package:protoc_plugin/indenting_writer.dart'; 8 import 'package:protoc_plugin/indenting_writer.dart';
9 import 'package:protoc_plugin/src/descriptor.pb.dart'; 9 import 'package:protoc_plugin/src/descriptor.pb.dart';
10 import 'package:protoc_plugin/src/plugin.pb.dart'; 10 import 'package:protoc_plugin/src/plugin.pb.dart';
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 290 new CodeGeneratorRequest(), new CodeGeneratorResponse());
291 291
292 FileGenerator fg = new FileGenerator(fd); 292 FileGenerator fg = new FileGenerator(fd);
293 link(options, [fg]); 293 link(options, [fg]);
294 294
295 var writer = new IndentingWriter(); 295 var writer = new IndentingWriter();
296 fg.writeMainHeader(writer); 296 fg.writeMainHeader(writer);
297 expect(writer.toString(), expected); 297 expect(writer.toString(), expected);
298 }); 298 });
299 299
300 test('FileGenerator outputs extra imports for a service', () { 300 test('FileGenerator outputs files for a service', () {
301 String expected = r''' 301 String expectedClient = r'''
302 /// 302 ///
303 // Generated code. Do not modify. 303 // Generated code. Do not modify.
304 /// 304 ///
305 library test; 305 library test;
306 306
307 import 'dart:async'; 307 import 'dart:async';
308 308
309 import 'package:protobuf/protobuf.dart'; 309 import 'package:protobuf/protobuf.dart';
310 310
311 class Empty extends GeneratedMessage {
312 static final BuilderInfo _i = new BuilderInfo('Empty')
313 ..hasRequiredFields = false
314 ;
315
316 Empty() : super();
317 Empty.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : super.fromBuffer(i, r);
318 Empty.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : su per.fromJson(i, r);
319 Empty clone() => new Empty()..mergeFromMessage(this);
320 BuilderInfo get info_ => _i;
321 static Empty create() => new Empty();
322 static PbList<Empty> createRepeated() => new PbList<Empty>();
323 static Empty getDefault() {
324 if (_defaultInstance == null) _defaultInstance = new _ReadonlyEmpty();
325 return _defaultInstance;
326 }
327 static Empty _defaultInstance;
328 static void $checkItem(Empty v) {
329 if (v is !Empty) checkItemFailed(v, 'Empty');
330 }
331 }
332
333 class _ReadonlyEmpty extends Empty with ReadonlyMessageMixin {}
334
335 class TestApi {
Søren Gjesse 2016/05/27 07:34:35 Have you considered to also split out the client s
skybrian 2016/05/27 18:27:50 I considered it but I'm not sure it would accompli
336 RpcClient _client;
337 TestApi(this._client);
338
339 Future<Empty> ping(ClientContext ctx, Empty request) {
340 var emptyResponse = new Empty();
341 return _client.invoke(ctx, 'Test', 'Ping', request, emptyResponse);
342 }
343 }
344
345 ''';
346
347 String expectedServer = r'''
348 ///
349 // Generated code. Do not modify.
350 ///
351 library test_pbserver;
352
353 import 'dart:async';
354
355 import 'package:protobuf/protobuf.dart';
356
357 import 'test.pb.dart';
358
311 import 'test.pbjson.dart'; 359 import 'test.pbjson.dart';
312 360
361 abstract class TestServiceBase extends GeneratedService {
362 Future<Empty> ping(ServerContext ctx, Empty request);
363
364 GeneratedMessage createRequest(String method) {
365 switch (method) {
366 case 'Ping': return new Empty();
367 default: throw new ArgumentError('Unknown method: $method');
368 }
369 }
370
371 Future<GeneratedMessage> handleCall(ServerContext ctx, String method, Generate dMessage request) {
372 switch (method) {
373 case 'Ping': return ping(ctx, request);
374 default: throw new ArgumentError('Unknown method: $method');
375 }
376 }
377
378 Map<String, dynamic> get $json => Test$json;
379 Map<String, dynamic> get $messageJson => Test$messageJson;
380 }
381
313 '''; 382 ''';
383
384 DescriptorProto empty = new DescriptorProto()..name = "Empty";
385
386 ServiceDescriptorProto sd = new ServiceDescriptorProto()
387 ..name = 'Test'
388 ..method.add(new MethodDescriptorProto()
389 ..name = 'Ping'
390 ..inputType = '.Empty'
391 ..outputType = '.Empty');
392
314 FileDescriptorProto fd = new FileDescriptorProto() 393 FileDescriptorProto fd = new FileDescriptorProto()
315 ..name = 'test' 394 ..name = 'test'
316 ..service.add(new ServiceDescriptorProto()); 395 ..messageType.add(empty)
396 ..service.add(sd);
317 397
318 var options = parseGenerationOptions( 398 var options = parseGenerationOptions(
319 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 399 new CodeGeneratorRequest(), new CodeGeneratorResponse());
320 400
321 FileGenerator fg = new FileGenerator(fd); 401 FileGenerator fg = new FileGenerator(fd);
322 link(options, [fg]); 402 link(options, [fg]);
323 403
324 var writer = new IndentingWriter(); 404 var writer = new IndentingWriter();
325 fg.writeMainHeader(writer); 405 fg.writeMainHeader(writer);
326 expect(writer.toString(), expected); 406 expect(fg.generateMainFile(), expectedClient);
407 expect(fg.generateServerFile(), expectedServer);
327 }); 408 });
328 409
329 test('FileGenerator handles field_name options', () { 410 test('FileGenerator handles field_name options', () {
330 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. 411 // NOTE: Below > 80 cols because it is matching generated code > 80 cols.
331 String expected = r''' 412 String expected = r'''
332 /// 413 ///
333 // Generated code. Do not modify. 414 // Generated code. Do not modify.
334 /// 415 ///
335 library test; 416 library test;
336 417
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 var request = new CodeGeneratorRequest(); 640 var request = new CodeGeneratorRequest();
560 var response = new CodeGeneratorResponse(); 641 var response = new CodeGeneratorResponse();
561 var options = parseGenerationOptions(request, response); 642 var options = parseGenerationOptions(request, response);
562 643
563 FileGenerator fg = new FileGenerator(fd); 644 FileGenerator fg = new FileGenerator(fd);
564 link(options, [fg, new FileGenerator(fd1), new FileGenerator(fd2)]); 645 link(options, [fg, new FileGenerator(fd1), new FileGenerator(fd2)]);
565 expect(fg.generateMainFile(), expected); 646 expect(fg.generateMainFile(), expected);
566 expect(fg.generateJsonFile(), expectedJson); 647 expect(fg.generateJsonFile(), expectedJson);
567 }); 648 });
568 } 649 }
OLDNEW
« no previous file with comments | « pubspec.yaml ('k') | test/service_test.dart » ('j') | test/service_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698