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

Side by Side Diff: test/file_generator_test.dart

Issue 1829573002: Fix all strong mode warnings in protoc-plugin (Closed) Base URL: git@github.com:dart-lang/dart-protoc-plugin.git@master
Patch Set: regenerate pb.dart files Created 4 years, 8 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
« no previous file with comments | « test/enum_generator_test.dart ('k') | test/generated_message_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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';
11 import 'package:protoc_plugin/protoc.dart'; 11 import 'package:protoc_plugin/protoc.dart';
12 import 'package:test/test.dart'; 12 import 'package:test/test.dart';
13 13
14 FileDescriptorProto buildFileDescriptor( 14 FileDescriptorProto buildFileDescriptor(
15 {phoneNumber: true, topLevelEnum: false}) { 15 {phoneNumber: true, topLevelEnum: false}) {
16 16 FileDescriptorProto fd = new FileDescriptorProto()..name = 'test';
17 FileDescriptorProto fd = new FileDescriptorProto()
18 ..name = 'test';
19 17
20 if (topLevelEnum) { 18 if (topLevelEnum) {
21 fd.enumType.add(new EnumDescriptorProto() 19 fd.enumType.add(new EnumDescriptorProto()
22 ..name = 'PhoneType' 20 ..name = 'PhoneType'
23 ..value.addAll([ 21 ..value.addAll([
24 new EnumValueDescriptorProto() 22 new EnumValueDescriptorProto()
25 ..name = 'MOBILE' 23 ..name = 'MOBILE'
26 ..number = 0, 24 ..number = 0,
27 new EnumValueDescriptorProto() 25 new EnumValueDescriptorProto()
28 ..name = 'HOME' 26 ..name = 'HOME'
29 ..number = 1, 27 ..number = 1,
30 new EnumValueDescriptorProto() 28 new EnumValueDescriptorProto()
31 ..name = 'WORK' 29 ..name = 'WORK'
32 ..number = 2, 30 ..number = 2,
33 new EnumValueDescriptorProto() 31 new EnumValueDescriptorProto()
34 ..name = 'BUSINESS' 32 ..name = 'BUSINESS'
35 ..number = 2])); 33 ..number = 2
34 ]));
36 } 35 }
37 36
38 if (phoneNumber) { 37 if (phoneNumber) {
39 fd.messageType.add(new DescriptorProto() 38 fd.messageType.add(new DescriptorProto()
40 ..name = 'PhoneNumber' 39 ..name = 'PhoneNumber'
41 ..field.addAll([ 40 ..field.addAll([
42 // required string number = 1; 41 // required string number = 1;
43 new FieldDescriptorProto() 42 new FieldDescriptorProto()
44 ..name = 'number' 43 ..name = 'number'
45 ..number = 1 44 ..number = 1
46 ..label = FieldDescriptorProto_Label.LABEL_REQUIRED 45 ..label = FieldDescriptorProto_Label.LABEL_REQUIRED
47 ..type = FieldDescriptorProto_Type.TYPE_STRING, 46 ..type = FieldDescriptorProto_Type.TYPE_STRING,
48 // optional int32 type = 2; 47 // optional int32 type = 2;
49 // OR 48 // OR
50 // optional PhoneType type = 2; 49 // optional PhoneType type = 2;
51 new FieldDescriptorProto() 50 new FieldDescriptorProto()
52 ..name = 'type' 51 ..name = 'type'
53 ..number = 2 52 ..number = 2
54 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL 53 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL
55 ..type = topLevelEnum ? FieldDescriptorProto_Type.TYPE_ENUM 54 ..type = topLevelEnum
56 : FieldDescriptorProto_Type.TYPE_INT32 55 ? FieldDescriptorProto_Type.TYPE_ENUM
57 ..typeName = topLevelEnum ? '.PhoneType' : '', 56 : FieldDescriptorProto_Type.TYPE_INT32
58 // optional string name = 3 [default = "$"]; 57 ..typeName = topLevelEnum ? '.PhoneType' : '',
59 new FieldDescriptorProto() 58 // optional string name = 3 [default = "$"];
60 ..name = 'name' 59 new FieldDescriptorProto()
61 ..number = 3 60 ..name = 'name'
62 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL 61 ..number = 3
63 ..type = FieldDescriptorProto_Type.TYPE_STRING 62 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL
64 ..defaultValue = r'$' 63 ..type = FieldDescriptorProto_Type.TYPE_STRING
65 ])); 64 ..defaultValue = r'$'
65 ]));
66 } 66 }
67 67
68 return fd; 68 return fd;
69 } 69 }
70 70
71 void main() { 71 void main() {
72 test('FileGenerator output for a proto with one message', () { 72 test('FileGenerator output for a proto with one message', () {
73 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. 73 // NOTE: Below > 80 cols because it is matching generated code > 80 cols.
74 String expected = r''' 74 String expected = r'''
75 /// 75 ///
76 // Generated code. Do not modify. 76 // Generated code. Do not modify.
77 /// 77 ///
78 library test; 78 library test;
79 79
80 import 'package:protobuf/protobuf.dart'; 80 import 'package:protobuf/protobuf.dart';
81 81
82 class PhoneNumber extends GeneratedMessage { 82 class PhoneNumber extends GeneratedMessage {
83 static final BuilderInfo _i = new BuilderInfo('PhoneNumber') 83 static final BuilderInfo _i = new BuilderInfo('PhoneNumber')
84 ..a(1, 'number', PbFieldType.QS) 84 ..a/*<String>*/(1, 'number', PbFieldType.QS)
85 ..a(2, 'type', PbFieldType.O3) 85 ..a/*<int>*/(2, 'type', PbFieldType.O3)
86 ..a(3, 'name', PbFieldType.OS, '\$') 86 ..a/*<String>*/(3, 'name', PbFieldType.OS, '\$')
87 ; 87 ;
88 88
89 PhoneNumber() : super(); 89 PhoneNumber() : super();
90 PhoneNumber.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.E MPTY]) : super.fromBuffer(i, r); 90 PhoneNumber.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.E MPTY]) : super.fromBuffer(i, r);
91 PhoneNumber.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY] ) : super.fromJson(i, r); 91 PhoneNumber.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY] ) : super.fromJson(i, r);
92 PhoneNumber clone() => new PhoneNumber()..mergeFromMessage(this); 92 PhoneNumber clone() => new PhoneNumber()..mergeFromMessage(this);
93 BuilderInfo get info_ => _i; 93 BuilderInfo get info_ => _i;
94 static PhoneNumber create() => new PhoneNumber(); 94 static PhoneNumber create() => new PhoneNumber();
95 static PbList<PhoneNumber> createRepeated() => new PbList<PhoneNumber>(); 95 static PbList<PhoneNumber> createRepeated() => new PbList<PhoneNumber>();
96 static PhoneNumber getDefault() { 96 static PhoneNumber getDefault() {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 static const PhoneType WORK = const PhoneType._(2, 'WORK'); 157 static const PhoneType WORK = const PhoneType._(2, 'WORK');
158 158
159 static const PhoneType BUSINESS = WORK; 159 static const PhoneType BUSINESS = WORK;
160 160
161 static const List<PhoneType> values = const <PhoneType> [ 161 static const List<PhoneType> values = const <PhoneType> [
162 MOBILE, 162 MOBILE,
163 HOME, 163 HOME,
164 WORK, 164 WORK,
165 ]; 165 ];
166 166
167 static final Map<int, PhoneType> _byValue = ProtobufEnum.initByValue(values); 167 static final Map<int, dynamic> _byValue = ProtobufEnum.initByValue(values);
168 static PhoneType valueOf(int value) => _byValue[value]; 168 static PhoneType valueOf(int value) => _byValue[value] as PhoneType;
169 static void $checkItem(PhoneType v) { 169 static void $checkItem(PhoneType v) {
170 if (v is !PhoneType) checkItemFailed(v, 'PhoneType'); 170 if (v is !PhoneType) checkItemFailed(v, 'PhoneType');
171 } 171 }
172 172
173 const PhoneType._(int v, String n) : super(v, n); 173 const PhoneType._(int v, String n) : super(v, n);
174 } 174 }
175 175
176 const PhoneType$json = const { 176 const PhoneType$json = const {
177 '1': 'PhoneType', 177 '1': 'PhoneType',
178 '2': const [ 178 '2': const [
179 const {'1': 'MOBILE', '2': 0}, 179 const {'1': 'MOBILE', '2': 0},
180 const {'1': 'HOME', '2': 1}, 180 const {'1': 'HOME', '2': 1},
181 const {'1': 'WORK', '2': 2}, 181 const {'1': 'WORK', '2': 2},
182 const {'1': 'BUSINESS', '2': 2}, 182 const {'1': 'BUSINESS', '2': 2},
183 ], 183 ],
184 }; 184 };
185 185
186 '''; 186 ''';
187 FileDescriptorProto fd = buildFileDescriptor( 187 FileDescriptorProto fd =
188 phoneNumber: false, 188 buildFileDescriptor(phoneNumber: false, topLevelEnum: true);
189 topLevelEnum: true);
190 var options = parseGenerationOptions( 189 var options = parseGenerationOptions(
191 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 190 new CodeGeneratorRequest(), new CodeGeneratorResponse());
192 191
193 FileGenerator fg = new FileGenerator(fd); 192 FileGenerator fg = new FileGenerator(fd);
194 link(options, [fg]); 193 link(options, [fg]);
195 194
196 var writer = new IndentingWriter(); 195 var writer = new IndentingWriter();
197 fg.generate(writer); 196 fg.generate(writer);
198 expect(writer.toString(), expected); 197 expect(writer.toString(), expected);
199 }); 198 });
(...skipping 28 matching lines...) Expand all
228 /// 227 ///
229 library test; 228 library test;
230 229
231 import 'package:fixnum/fixnum.dart'; 230 import 'package:fixnum/fixnum.dart';
232 import 'package:protobuf/protobuf.dart'; 231 import 'package:protobuf/protobuf.dart';
233 232
234 '''; 233 ''';
235 FileDescriptorProto fd = new FileDescriptorProto() 234 FileDescriptorProto fd = new FileDescriptorProto()
236 ..name = 'test' 235 ..name = 'test'
237 ..messageType.add(new DescriptorProto() 236 ..messageType.add(new DescriptorProto()
238 ..name = 'Count' 237 ..name = 'Count'
239 ..field.addAll([ 238 ..field.addAll([
240 new FieldDescriptorProto() 239 new FieldDescriptorProto()
241 ..name = 'count' 240 ..name = 'count'
242 ..number = 1 241 ..number = 1
243 ..type = FieldDescriptorProto_Type.TYPE_INT64 242 ..type = FieldDescriptorProto_Type.TYPE_INT64
244 ])); 243 ]));
245 244
246 var options = parseGenerationOptions( 245 var options = parseGenerationOptions(
247 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 246 new CodeGeneratorRequest(), new CodeGeneratorResponse());
248 247
249 FileGenerator fg = new FileGenerator(fd); 248 FileGenerator fg = new FileGenerator(fd);
250 link(options, [fg]); 249 link(options, [fg]);
251 250
252 var writer = new IndentingWriter(); 251 var writer = new IndentingWriter();
253 fg.generateHeader(writer, Uri.parse("test.proto")); 252 fg.generateHeader(writer, Uri.parse("test.proto"));
254 expect(writer.toString(), expected); 253 expect(writer.toString(), expected);
255 }); 254 });
256 255
257
258 test('FileGenerator handles field_name options', () { 256 test('FileGenerator handles field_name options', () {
259 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. 257 // NOTE: Below > 80 cols because it is matching generated code > 80 cols.
260 String expected = r''' 258 String expected = r'''
261 /// 259 ///
262 // Generated code. Do not modify. 260 // Generated code. Do not modify.
263 /// 261 ///
264 library test; 262 library test;
265 263
266 import 'package:protobuf/protobuf.dart'; 264 import 'package:protobuf/protobuf.dart';
267 265
268 class PhoneNumber extends GeneratedMessage { 266 class PhoneNumber extends GeneratedMessage {
269 static final BuilderInfo _i = new BuilderInfo('PhoneNumber') 267 static final BuilderInfo _i = new BuilderInfo('PhoneNumber')
270 ..a(1, 'no', PbFieldType.QS) 268 ..a/*<String>*/(1, 'no', PbFieldType.QS)
271 ..a(2, 'the_type', PbFieldType.O3) 269 ..a/*<int>*/(2, 'the_type', PbFieldType.O3)
272 ..a(3, 'name_', PbFieldType.OS, '\$') 270 ..a/*<String>*/(3, 'name_', PbFieldType.OS, '\$')
273 ; 271 ;
274 272
275 PhoneNumber() : super(); 273 PhoneNumber() : super();
276 PhoneNumber.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.E MPTY]) : super.fromBuffer(i, r); 274 PhoneNumber.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.E MPTY]) : super.fromBuffer(i, r);
277 PhoneNumber.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY] ) : super.fromJson(i, r); 275 PhoneNumber.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY] ) : super.fromJson(i, r);
278 PhoneNumber clone() => new PhoneNumber()..mergeFromMessage(this); 276 PhoneNumber clone() => new PhoneNumber()..mergeFromMessage(this);
279 BuilderInfo get info_ => _i; 277 BuilderInfo get info_ => _i;
280 static PhoneNumber create() => new PhoneNumber(); 278 static PhoneNumber create() => new PhoneNumber();
281 static PbList<PhoneNumber> createRepeated() => new PbList<PhoneNumber>(); 279 static PbList<PhoneNumber> createRepeated() => new PbList<PhoneNumber>();
282 static PhoneNumber getDefault() { 280 static PhoneNumber getDefault() {
(...skipping 29 matching lines...) Expand all
312 const {'1': 'number', '3': 1, '4': 2, '5': 9}, 310 const {'1': 'number', '3': 1, '4': 2, '5': 9},
313 const {'1': 'type', '3': 2, '4': 1, '5': 5, '6': ''}, 311 const {'1': 'type', '3': 2, '4': 1, '5': 5, '6': ''},
314 const {'1': 'name', '3': 3, '4': 1, '5': 9, '7': r'$'}, 312 const {'1': 'name', '3': 3, '4': 1, '5': 9, '7': r'$'},
315 ], 313 ],
316 }; 314 };
317 315
318 '''; 316 ''';
319 FileDescriptorProto fd = buildFileDescriptor(); 317 FileDescriptorProto fd = buildFileDescriptor();
320 var request = new CodeGeneratorRequest(); 318 var request = new CodeGeneratorRequest();
321 request.parameter = 'field_name=PhoneNumber.number|No,' 319 request.parameter = 'field_name=PhoneNumber.number|No,'
322 'field_name=PhoneNumber.name|Name_,' 320 'field_name=PhoneNumber.name|Name_,'
323 'field_name=PhoneNumber.type|The_type'; 321 'field_name=PhoneNumber.type|The_type';
324 var options = parseGenerationOptions( 322 var options = parseGenerationOptions(request, new CodeGeneratorResponse());
325 request, new CodeGeneratorResponse());
326 323
327 FileGenerator fg = new FileGenerator(fd); 324 FileGenerator fg = new FileGenerator(fd);
328 link(options, [fg]); 325 link(options, [fg]);
329 326
330 var writer = new IndentingWriter(); 327 var writer = new IndentingWriter();
331 fg.generate(writer); 328 fg.generate(writer);
332 expect(writer.toString(), expected); 329 expect(writer.toString(), expected);
333 }); 330 });
334 331
335 test('FileGenerator generates imports for .pb.dart files', () { 332 test('FileGenerator generates imports for .pb.dart files', () {
336 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. 333 // NOTE: Below > 80 cols because it is matching generated code > 80 cols.
337 String expected = r''' 334 String expected = r'''
338 /// 335 ///
339 // Generated code. Do not modify. 336 // Generated code. Do not modify.
340 /// 337 ///
341 library test; 338 library test;
342 339
343 import 'package:protobuf/protobuf.dart'; 340 import 'package:protobuf/protobuf.dart';
344 import 'package1.pb.dart' as p1; 341 import 'package1.pb.dart' as p1;
345 import 'package2.pb.dart' as p2; 342 import 'package2.pb.dart' as p2;
346 343
347 class M extends GeneratedMessage { 344 class M extends GeneratedMessage {
348 static final BuilderInfo _i = new BuilderInfo('M') 345 static final BuilderInfo _i = new BuilderInfo('M')
349 ..a(1, 'm', PbFieldType.OM, M.getDefault, M.create) 346 ..a/*<M>*/(1, 'm', PbFieldType.OM, M.getDefault, M.create)
350 ..a(2, 'm1', PbFieldType.OM, p1.M.getDefault, p1.M.create) 347 ..a/*<p1.M>*/(2, 'm1', PbFieldType.OM, p1.M.getDefault, p1.M.create)
351 ..a(3, 'm2', PbFieldType.OM, p2.M.getDefault, p2.M.create) 348 ..a/*<p2.M>*/(3, 'm2', PbFieldType.OM, p2.M.getDefault, p2.M.create)
352 ..hasRequiredFields = false 349 ..hasRequiredFields = false
353 ; 350 ;
354 351
355 M() : super(); 352 M() : super();
356 M.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : s uper.fromBuffer(i, r); 353 M.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : s uper.fromBuffer(i, r);
357 M.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : super. fromJson(i, r); 354 M.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : super. fromJson(i, r);
358 M clone() => new M()..mergeFromMessage(this); 355 M clone() => new M()..mergeFromMessage(this);
359 BuilderInfo get info_ => _i; 356 BuilderInfo get info_ => _i;
360 static M create() => new M(); 357 static M create() => new M();
361 static PbList<M> createRepeated() => new PbList<M>(); 358 static PbList<M> createRepeated() => new PbList<M>();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 // import "package1.proto"; 417 // import "package1.proto";
421 // import "package2.proto"; 418 // import "package2.proto";
422 // message M { 419 // message M {
423 // optional M m = 1; 420 // optional M m = 1;
424 // optional p1.M m1 = 2; 421 // optional p1.M m1 = 2;
425 // optional p2.M m2 = 3; 422 // optional p2.M m2 = 3;
426 // } 423 // }
427 424
428 // Description of package1.proto. 425 // Description of package1.proto.
429 DescriptorProto md1 = new DescriptorProto() 426 DescriptorProto md1 = new DescriptorProto()
430 ..name = 'M' 427 ..name = 'M'
431 ..field.addAll([ 428 ..field.addAll([
432 // optional M m = 1; 429 // optional M m = 1;
433 new FieldDescriptorProto() 430 new FieldDescriptorProto()
434 ..name = 'm' 431 ..name = 'm'
435 ..number = 1 432 ..number = 1
436 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL 433 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL
437 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE 434 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE
438 ..typeName = ".p1.M", 435 ..typeName = ".p1.M",
439 ]); 436 ]);
440 FileDescriptorProto fd1 = new FileDescriptorProto() 437 FileDescriptorProto fd1 = new FileDescriptorProto()
441 ..package = 'p1' 438 ..package = 'p1'
442 ..name = 'package1.proto' 439 ..name = 'package1.proto'
443 ..messageType.add(md1); 440 ..messageType.add(md1);
444 441
445 // Description of package1.proto. 442 // Description of package1.proto.
446 DescriptorProto md2 = new DescriptorProto() 443 DescriptorProto md2 = new DescriptorProto()
447 ..name = 'M' 444 ..name = 'M'
448 ..field.addAll([ 445 ..field.addAll([
449 // optional M m = 1; 446 // optional M m = 1;
450 new FieldDescriptorProto() 447 new FieldDescriptorProto()
451 ..name = 'x' 448 ..name = 'x'
452 ..number = 1 449 ..number = 1
453 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL 450 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL
454 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE 451 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE
455 ..typeName = ".p2.M", 452 ..typeName = ".p2.M",
456 ]); 453 ]);
457 FileDescriptorProto fd2 = new FileDescriptorProto() 454 FileDescriptorProto fd2 = new FileDescriptorProto()
458 ..package = 'p2' 455 ..package = 'p2'
459 ..name = 'package2.proto' 456 ..name = 'package2.proto'
460 ..messageType.add(md2); 457 ..messageType.add(md2);
461 458
462 // Description of test.proto. 459 // Description of test.proto.
463 DescriptorProto md = new DescriptorProto() 460 DescriptorProto md = new DescriptorProto()
464 ..name = 'M' 461 ..name = 'M'
465 ..field.addAll([ 462 ..field.addAll([
466 // optional M m = 1; 463 // optional M m = 1;
467 new FieldDescriptorProto() 464 new FieldDescriptorProto()
468 ..name = 'm' 465 ..name = 'm'
469 ..number = 1 466 ..number = 1
470 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL 467 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL
471 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE 468 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE
472 ..typeName = ".M", 469 ..typeName = ".M",
473 // optional p1.M m1 = 2; 470 // optional p1.M m1 = 2;
474 new FieldDescriptorProto() 471 new FieldDescriptorProto()
475 ..name = 'm1' 472 ..name = 'm1'
476 ..number = 2 473 ..number = 2
477 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL 474 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL
478 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE 475 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE
479 ..typeName = ".p1.M", 476 ..typeName = ".p1.M",
480 // optional p2.M m2 = 3; 477 // optional p2.M m2 = 3;
481 new FieldDescriptorProto() 478 new FieldDescriptorProto()
482 ..name = 'm2' 479 ..name = 'm2'
483 ..number = 3 480 ..number = 3
484 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL 481 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL
485 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE 482 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE
486 ..typeName = ".p2.M", 483 ..typeName = ".p2.M",
487 ]); 484 ]);
488 FileDescriptorProto fd = new FileDescriptorProto() 485 FileDescriptorProto fd = new FileDescriptorProto()
489 ..name = 'test.proto' 486 ..name = 'test.proto'
490 ..messageType.add(md); 487 ..messageType.add(md);
491 fd.dependency.addAll(['package1.proto', 'package2.proto']); 488 fd.dependency.addAll(['package1.proto', 'package2.proto']);
492 var request = new CodeGeneratorRequest(); 489 var request = new CodeGeneratorRequest();
493 var response = new CodeGeneratorResponse(); 490 var response = new CodeGeneratorResponse();
494 var options = parseGenerationOptions(request, response); 491 var options = parseGenerationOptions(request, response);
495 492
496 FileGenerator fg = new FileGenerator(fd); 493 FileGenerator fg = new FileGenerator(fd);
497 link(options, [fg, new FileGenerator(fd1), new FileGenerator(fd2)]); 494 link(options, [fg, new FileGenerator(fd1), new FileGenerator(fd2)]);
498 495
499 var writer = new IndentingWriter(); 496 var writer = new IndentingWriter();
500 fg.generate(writer); 497 fg.generate(writer);
501 expect(writer.toString(), expected); 498 expect(writer.toString(), expected);
502 }); 499 });
503 } 500 }
OLDNEW
« no previous file with comments | « test/enum_generator_test.dart ('k') | test/generated_message_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698