OLD | NEW |
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/src/descriptor.pb.dart'; | 8 import 'package:protoc-plugin/src/descriptor.pb.dart'; |
9 import 'package:protoc-plugin/src/plugin.pb.dart'; | 9 import 'package:protoc-plugin/src/plugin.pb.dart'; |
10 import 'package:protoc-plugin/protoc.dart'; | 10 import 'package:protoc-plugin/protoc.dart'; |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 bool hasType() => hasField(2); | 172 bool hasType() => hasField(2); |
173 void clearType() => clearField(2); | 173 void clearType() => clearField(2); |
174 | 174 |
175 String get name => getField(3); | 175 String get name => getField(3); |
176 void set name(String v) { setField(3, v); } | 176 void set name(String v) { setField(3, v); } |
177 bool hasName() => hasField(3); | 177 bool hasName() => hasField(3); |
178 void clearName() => clearField(3); | 178 void clearName() => clearField(3); |
179 } | 179 } |
180 | 180 |
181 '''; | 181 '''; |
182 FileDescriptorProto fd = buildFileDescriptor(topLevelEnum: true); | 182 FileDescriptorProto fd = buildFileDescriptor(topLevelEnum: true); |
183 MemoryWriter buffer = new MemoryWriter(); | 183 MemoryWriter buffer = new MemoryWriter(); |
184 IndentingWriter writer = new IndentingWriter(' ', buffer); | 184 IndentingWriter writer = new IndentingWriter(' ', buffer); |
185 var options = | 185 var options = |
186 new GenerationOptions( | 186 new GenerationOptions( |
187 new CodeGeneratorRequest(), new CodeGeneratorResponse()); | 187 new CodeGeneratorRequest(), new CodeGeneratorResponse()); |
188 FileGenerator fg = | 188 FileGenerator fg = |
189 new FileGenerator(fd, null, new GenerationContext(options)); | 189 new FileGenerator(fd, null, new GenerationContext(options)); |
190 fg.generate(writer); | 190 fg.generate(writer); |
191 expect(buffer.toString(), expected); | 191 expect(buffer.toString(), expected); |
192 }); | 192 }); |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 'field_name=PhoneNumber.type|The_type'; | 295 'field_name=PhoneNumber.type|The_type'; |
296 var options = | 296 var options = |
297 new GenerationOptions( | 297 new GenerationOptions( |
298 request, new CodeGeneratorResponse()); | 298 request, new CodeGeneratorResponse()); |
299 FileGenerator fg = | 299 FileGenerator fg = |
300 new FileGenerator( | 300 new FileGenerator( |
301 fd, null, new GenerationContext(options)); | 301 fd, null, new GenerationContext(options)); |
302 fg.generate(writer); | 302 fg.generate(writer); |
303 expect(buffer.toString(), expected); | 303 expect(buffer.toString(), expected); |
304 }); | 304 }); |
| 305 |
| 306 test('testMessageGeneratorFieldNameOption', () { |
| 307 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. |
| 308 String expected = r''' |
| 309 /// |
| 310 // Generated code. Do not modify. |
| 311 /// |
| 312 library test; |
| 313 |
| 314 import 'package:fixnum/fixnum.dart'; |
| 315 import 'package:protobuf/protobuf.dart'; |
| 316 import 'package1.pb.dart' as p1; |
| 317 import 'package2.pb.dart' as p2; |
| 318 |
| 319 class M extends GeneratedMessage { |
| 320 static final BuilderInfo _i = new BuilderInfo('M') |
| 321 ..a(1, 'm', GeneratedMessage.OM, () => new M(), () => new M()) |
| 322 ..a(2, 'm1', GeneratedMessage.OM, () => new p1.M(), () => new p1.M()) |
| 323 ..a(3, 'm2', GeneratedMessage.OM, () => new p2.M(), () => new p2.M()) |
| 324 ..hasRequiredFields = false |
| 325 ; |
| 326 |
| 327 M() : super(); |
| 328 M.fromBuffer(List<int> i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : s
uper.fromBuffer(i, r); |
| 329 M.fromJson(String i, [ExtensionRegistry r = ExtensionRegistry.EMPTY]) : super.
fromJson(i, r); |
| 330 M clone() => new M()..mergeFromMessage(this); |
| 331 BuilderInfo get info_ => _i; |
| 332 |
| 333 M get m => getField(1); |
| 334 void set m(M v) { setField(1, v); } |
| 335 bool hasM() => hasField(1); |
| 336 void clearM() => clearField(1); |
| 337 |
| 338 p1.M get m1 => getField(2); |
| 339 void set m1(p1.M v) { setField(2, v); } |
| 340 bool hasM1() => hasField(2); |
| 341 void clearM1() => clearField(2); |
| 342 |
| 343 p2.M get m2 => getField(3); |
| 344 void set m2(p2.M v) { setField(3, v); } |
| 345 bool hasM2() => hasField(3); |
| 346 void clearM2() => clearField(3); |
| 347 } |
| 348 |
| 349 '''; |
| 350 |
| 351 // This defines three .proto files package1.proto, package2.proto and |
| 352 // test.proto with the following content: |
| 353 // |
| 354 // package1.proto: |
| 355 // --------------- |
| 356 // package p1; |
| 357 // message M { |
| 358 // optional M m = 2; |
| 359 // } |
| 360 // |
| 361 // package2.proto: |
| 362 // --------------- |
| 363 // package p2; |
| 364 // message M { |
| 365 // optional M m = 2; |
| 366 // } |
| 367 // |
| 368 // test.proto: |
| 369 // --------------- |
| 370 // package test; |
| 371 // import "package1.proto"; |
| 372 // import "package2.proto"; |
| 373 // message M { |
| 374 // optional M m = 1; |
| 375 // optional p1.M m1 = 2; |
| 376 // optional p2.M m2 = 3; |
| 377 // } |
| 378 |
| 379 // Description of package1.proto. |
| 380 DescriptorProto md1 = new DescriptorProto() |
| 381 ..name = 'M' |
| 382 ..field.addAll([ |
| 383 // optional M m = 1; |
| 384 new FieldDescriptorProto() |
| 385 ..name = 'm' |
| 386 ..number = 1 |
| 387 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL |
| 388 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE |
| 389 ..typeName = ".p1.M", |
| 390 ]); |
| 391 FileDescriptorProto fd1 = new FileDescriptorProto() |
| 392 ..package = 'p1' |
| 393 ..name = 'package1.proto' |
| 394 ..messageType.add(md1); |
| 395 |
| 396 // Description of package1.proto. |
| 397 DescriptorProto md2 = new DescriptorProto() |
| 398 ..name = 'M' |
| 399 ..field.addAll([ |
| 400 // optional M m = 1; |
| 401 new FieldDescriptorProto() |
| 402 ..name = 'x' |
| 403 ..number = 1 |
| 404 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL |
| 405 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE |
| 406 ..typeName = ".p2.M", |
| 407 ]); |
| 408 FileDescriptorProto fd2 = new FileDescriptorProto() |
| 409 ..package = 'p2' |
| 410 ..name = 'package2.proto' |
| 411 ..messageType.add(md2); |
| 412 |
| 413 // Description of test.proto. |
| 414 DescriptorProto md = new DescriptorProto() |
| 415 ..name = 'M' |
| 416 ..field.addAll([ |
| 417 // optional M m = 1; |
| 418 new FieldDescriptorProto() |
| 419 ..name = 'm' |
| 420 ..number = 1 |
| 421 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL |
| 422 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE |
| 423 ..typeName = ".M", |
| 424 // optional p1.M m1 = 2; |
| 425 new FieldDescriptorProto() |
| 426 ..name = 'm1' |
| 427 ..number = 2 |
| 428 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL |
| 429 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE |
| 430 ..typeName = ".p1.M", |
| 431 // optional p2.M m2 = 3; |
| 432 new FieldDescriptorProto() |
| 433 ..name = 'm2' |
| 434 ..number = 3 |
| 435 ..label = FieldDescriptorProto_Label.LABEL_OPTIONAL |
| 436 ..type = FieldDescriptorProto_Type.TYPE_MESSAGE |
| 437 ..typeName = ".p2.M", |
| 438 ]); |
| 439 FileDescriptorProto fd = new FileDescriptorProto() |
| 440 ..name = 'test.proto' |
| 441 ..messageType.add(md); |
| 442 fd.dependency.addAll(['package1.proto', 'package2.proto']); |
| 443 MemoryWriter buffer = new MemoryWriter(); |
| 444 IndentingWriter writer = new IndentingWriter(' ', buffer); |
| 445 var request = new CodeGeneratorRequest(); |
| 446 var options = new GenerationOptions(request, new CodeGeneratorResponse()); |
| 447 var context = new GenerationContext(options); |
| 448 new FileGenerator(fd1, null, context); |
| 449 new FileGenerator(fd2, null, context); |
| 450 FileGenerator fg = new FileGenerator(fd, null, context); |
| 451 fg.generate(writer); |
| 452 expect(buffer.toString(), expected); |
| 453 }); |
305 } | 454 } |
OLD | NEW |