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

Side by Side Diff: test/file_generator_test.dart

Issue 2020483002: clean up API for file_generator.dart (Closed) Base URL: git@github.com:dart-lang/dart-protoc-plugin.git@master
Patch Set: 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
« no previous file with comments | « lib/file_generator.dart ('k') | no next file » | 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';
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 } 120 }
121 121
122 class _ReadonlyPhoneNumber extends PhoneNumber with ReadonlyMessageMixin {} 122 class _ReadonlyPhoneNumber extends PhoneNumber with ReadonlyMessageMixin {}
123 123
124 '''; 124 ''';
125 FileDescriptorProto fd = buildFileDescriptor(); 125 FileDescriptorProto fd = buildFileDescriptor();
126 var options = parseGenerationOptions( 126 var options = parseGenerationOptions(
127 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 127 new CodeGeneratorRequest(), new CodeGeneratorResponse());
128 FileGenerator fg = new FileGenerator(fd); 128 FileGenerator fg = new FileGenerator(fd);
129 link(options, [fg]); 129 link(options, [fg]);
130 130 expect(fg.generateMainFile(), expected);
131 IndentingWriter writer = new IndentingWriter();
132 fg.generate(writer);
133 expect(writer.toString(), expected);
134 }); 131 });
135 132
136 test('FileGenerator outputs a pbjson.dart file for a proto with one message', 133 test('FileGenerator outputs a pbjson.dart file for a proto with one message',
137 () { 134 () {
138 var expected = r''' 135 var expected = r'''
139 /// 136 ///
140 // Generated code. Do not modify. 137 // Generated code. Do not modify.
141 /// 138 ///
142 library test_pbjson; 139 library test_pbjson;
143 140
144 const PhoneNumber$json = const { 141 const PhoneNumber$json = const {
145 '1': 'PhoneNumber', 142 '1': 'PhoneNumber',
146 '2': const [ 143 '2': const [
147 const {'1': 'number', '3': 1, '4': 2, '5': 9}, 144 const {'1': 'number', '3': 1, '4': 2, '5': 9},
148 const {'1': 'type', '3': 2, '4': 1, '5': 5, '6': ''}, 145 const {'1': 'type', '3': 2, '4': 1, '5': 5, '6': ''},
149 const {'1': 'name', '3': 3, '4': 1, '5': 9, '7': r'$'}, 146 const {'1': 'name', '3': 3, '4': 1, '5': 9, '7': r'$'},
150 ], 147 ],
151 }; 148 };
152 149
153 '''; 150 ''';
154 FileDescriptorProto fd = buildFileDescriptor(); 151 FileDescriptorProto fd = buildFileDescriptor();
155 var options = parseGenerationOptions( 152 var options = parseGenerationOptions(
156 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 153 new CodeGeneratorRequest(), new CodeGeneratorResponse());
157 FileGenerator fg = new FileGenerator(fd); 154 FileGenerator fg = new FileGenerator(fd);
158 link(options, [fg]); 155 link(options, [fg]);
159 156 expect(fg.generateJsonFile(), expected);
160 IndentingWriter writer = new IndentingWriter();
161 fg.generateJsonDart(writer);
162 expect(writer.toString(), expected);
163 }); 157 });
164 158
165 test('FileGenerator generates files for a top-level enum', () { 159 test('FileGenerator generates files for a top-level enum', () {
166 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. 160 // NOTE: Below > 80 cols because it is matching generated code > 80 cols.
167 161
168 String expected = r''' 162 String expected = r'''
169 /// 163 ///
170 // Generated code. Do not modify. 164 // Generated code. Do not modify.
171 /// 165 ///
172 library test; 166 library test;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 201
208 '''; 202 ''';
209 203
210 FileDescriptorProto fd = 204 FileDescriptorProto fd =
211 buildFileDescriptor(phoneNumber: false, topLevelEnum: true); 205 buildFileDescriptor(phoneNumber: false, topLevelEnum: true);
212 var options = parseGenerationOptions( 206 var options = parseGenerationOptions(
213 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 207 new CodeGeneratorRequest(), new CodeGeneratorResponse());
214 208
215 FileGenerator fg = new FileGenerator(fd); 209 FileGenerator fg = new FileGenerator(fd);
216 link(options, [fg]); 210 link(options, [fg]);
217 211 expect(fg.generateMainFile(), expected);
218 var writer = new IndentingWriter(); 212 expect(fg.generateEnumFile(), expectedEnum);
219 fg.generate(writer);
220 expect(writer.toString(), expected);
221
222 writer = new IndentingWriter();
223 fg.generateEnumFile(writer);
224 expect(writer.toString(), expectedEnum);
225 }); 213 });
226 214
227 test('FileGenerator generates a .pbjson.dart file for a top-level enum', () { 215 test('FileGenerator generates a .pbjson.dart file for a top-level enum', () {
228 String expected = r''' 216 String expected = r'''
229 /// 217 ///
230 // Generated code. Do not modify. 218 // Generated code. Do not modify.
231 /// 219 ///
232 library test_pbjson; 220 library test_pbjson;
233 221
234 const PhoneType$json = const { 222 const PhoneType$json = const {
235 '1': 'PhoneType', 223 '1': 'PhoneType',
236 '2': const [ 224 '2': const [
237 const {'1': 'MOBILE', '2': 0}, 225 const {'1': 'MOBILE', '2': 0},
238 const {'1': 'HOME', '2': 1}, 226 const {'1': 'HOME', '2': 1},
239 const {'1': 'WORK', '2': 2}, 227 const {'1': 'WORK', '2': 2},
240 const {'1': 'BUSINESS', '2': 2}, 228 const {'1': 'BUSINESS', '2': 2},
241 ], 229 ],
242 }; 230 };
243 231
244 '''; 232 ''';
245 233
246 FileDescriptorProto fd = 234 FileDescriptorProto fd =
247 buildFileDescriptor(phoneNumber: false, topLevelEnum: true); 235 buildFileDescriptor(phoneNumber: false, topLevelEnum: true);
248 var options = parseGenerationOptions( 236 var options = parseGenerationOptions(
249 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 237 new CodeGeneratorRequest(), new CodeGeneratorResponse());
250 238
251 FileGenerator fg = new FileGenerator(fd); 239 FileGenerator fg = new FileGenerator(fd);
252 link(options, [fg]); 240 link(options, [fg]);
253 241 expect(fg.generateJsonFile(), expected);
254 var writer = new IndentingWriter();
255 fg.generateJsonDart(writer);
256 expect(writer.toString(), expected);
257 }); 242 });
258 243
259 test('FileGenerator outputs library for a .proto in a package', () { 244 test('FileGenerator outputs library for a .proto in a package', () {
260 String expected = r''' 245 String expected = r'''
261 /// 246 ///
262 // Generated code. Do not modify. 247 // Generated code. Do not modify.
263 /// 248 ///
264 library pb_library_test; 249 library pb_library_test;
265 250
266 import 'package:protobuf/protobuf.dart'; 251 import 'package:protobuf/protobuf.dart';
267 252
268 '''; 253 ''';
269 FileDescriptorProto fd = buildFileDescriptor(); 254 FileDescriptorProto fd = buildFileDescriptor();
270 fd.package = "pb_library"; 255 fd.package = "pb_library";
271 var options = parseGenerationOptions( 256 var options = parseGenerationOptions(
272 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 257 new CodeGeneratorRequest(), new CodeGeneratorResponse());
273 258
274 FileGenerator fg = new FileGenerator(fd); 259 FileGenerator fg = new FileGenerator(fd);
275 link(options, [fg]); 260 link(options, [fg]);
276 261
277 var writer = new IndentingWriter(); 262 var writer = new IndentingWriter();
278 fg.generateHeader(writer); 263 fg.writeMainHeader(writer);
279 expect(writer.toString(), expected); 264 expect(writer.toString(), expected);
280 }); 265 });
281 266
282 test('FileGenerator outputs a fixnum import when needed', () { 267 test('FileGenerator outputs a fixnum import when needed', () {
283 String expected = r''' 268 String expected = r'''
284 /// 269 ///
285 // Generated code. Do not modify. 270 // Generated code. Do not modify.
286 /// 271 ///
287 library test; 272 library test;
288 273
(...skipping 12 matching lines...) Expand all
301 ..type = FieldDescriptorProto_Type.TYPE_INT64 286 ..type = FieldDescriptorProto_Type.TYPE_INT64
302 ])); 287 ]));
303 288
304 var options = parseGenerationOptions( 289 var options = parseGenerationOptions(
305 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 290 new CodeGeneratorRequest(), new CodeGeneratorResponse());
306 291
307 FileGenerator fg = new FileGenerator(fd); 292 FileGenerator fg = new FileGenerator(fd);
308 link(options, [fg]); 293 link(options, [fg]);
309 294
310 var writer = new IndentingWriter(); 295 var writer = new IndentingWriter();
311 fg.generateHeader(writer); 296 fg.writeMainHeader(writer);
312 expect(writer.toString(), expected); 297 expect(writer.toString(), expected);
313 }); 298 });
314 299
315 test('FileGenerator outputs extra imports for a service', () { 300 test('FileGenerator outputs extra imports for a service', () {
316 String expected = r''' 301 String expected = r'''
317 /// 302 ///
318 // Generated code. Do not modify. 303 // Generated code. Do not modify.
319 /// 304 ///
320 library test; 305 library test;
321 306
322 import 'dart:async'; 307 import 'dart:async';
323 308
324 import 'package:protobuf/protobuf.dart'; 309 import 'package:protobuf/protobuf.dart';
325 310
326 import 'test.pbjson.dart'; 311 import 'test.pbjson.dart';
327 312
328 '''; 313 ''';
329 FileDescriptorProto fd = new FileDescriptorProto() 314 FileDescriptorProto fd = new FileDescriptorProto()
330 ..name = 'test' 315 ..name = 'test'
331 ..service.add(new ServiceDescriptorProto()); 316 ..service.add(new ServiceDescriptorProto());
332 317
333 var options = parseGenerationOptions( 318 var options = parseGenerationOptions(
334 new CodeGeneratorRequest(), new CodeGeneratorResponse()); 319 new CodeGeneratorRequest(), new CodeGeneratorResponse());
335 320
336 FileGenerator fg = new FileGenerator(fd); 321 FileGenerator fg = new FileGenerator(fd);
337 link(options, [fg]); 322 link(options, [fg]);
338 323
339 var writer = new IndentingWriter(); 324 var writer = new IndentingWriter();
340 fg.generateHeader(writer); 325 fg.writeMainHeader(writer);
341 expect(writer.toString(), expected); 326 expect(writer.toString(), expected);
342 }); 327 });
343 328
344 test('FileGenerator handles field_name options', () { 329 test('FileGenerator handles field_name options', () {
345 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. 330 // NOTE: Below > 80 cols because it is matching generated code > 80 cols.
346 String expected = r''' 331 String expected = r'''
347 /// 332 ///
348 // Generated code. Do not modify. 333 // Generated code. Do not modify.
349 /// 334 ///
350 library test; 335 library test;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 '''; 380 ''';
396 FileDescriptorProto fd = buildFileDescriptor(); 381 FileDescriptorProto fd = buildFileDescriptor();
397 var request = new CodeGeneratorRequest(); 382 var request = new CodeGeneratorRequest();
398 request.parameter = 'field_name=PhoneNumber.number|No,' 383 request.parameter = 'field_name=PhoneNumber.number|No,'
399 'field_name=PhoneNumber.name|Name_,' 384 'field_name=PhoneNumber.name|Name_,'
400 'field_name=PhoneNumber.type|The_type'; 385 'field_name=PhoneNumber.type|The_type';
401 var options = parseGenerationOptions(request, new CodeGeneratorResponse()); 386 var options = parseGenerationOptions(request, new CodeGeneratorResponse());
402 387
403 FileGenerator fg = new FileGenerator(fd); 388 FileGenerator fg = new FileGenerator(fd);
404 link(options, [fg]); 389 link(options, [fg]);
405 390 expect(fg.generateMainFile(), expected);
406 var writer = new IndentingWriter();
407 fg.generate(writer);
408 expect(writer.toString(), expected);
409 }); 391 });
410 392
411 test('FileGenerator generates imports for .pb.dart files', () { 393 test('FileGenerator generates imports for .pb.dart files', () {
412 // NOTE: Below > 80 cols because it is matching generated code > 80 cols. 394 // NOTE: Below > 80 cols because it is matching generated code > 80 cols.
413 String expected = r''' 395 String expected = r'''
414 /// 396 ///
415 // Generated code. Do not modify. 397 // Generated code. Do not modify.
416 /// 398 ///
417 library test; 399 library test;
418 400
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 FileDescriptorProto fd = new FileDescriptorProto() 555 FileDescriptorProto fd = new FileDescriptorProto()
574 ..name = 'test.proto' 556 ..name = 'test.proto'
575 ..messageType.add(md); 557 ..messageType.add(md);
576 fd.dependency.addAll(['package1.proto', 'package2.proto']); 558 fd.dependency.addAll(['package1.proto', 'package2.proto']);
577 var request = new CodeGeneratorRequest(); 559 var request = new CodeGeneratorRequest();
578 var response = new CodeGeneratorResponse(); 560 var response = new CodeGeneratorResponse();
579 var options = parseGenerationOptions(request, response); 561 var options = parseGenerationOptions(request, response);
580 562
581 FileGenerator fg = new FileGenerator(fd); 563 FileGenerator fg = new FileGenerator(fd);
582 link(options, [fg, new FileGenerator(fd1), new FileGenerator(fd2)]); 564 link(options, [fg, new FileGenerator(fd1), new FileGenerator(fd2)]);
583 565 expect(fg.generateMainFile(), expected);
584 var writer = new IndentingWriter(); 566 expect(fg.generateJsonFile(), expectedJson);
585 fg.generate(writer);
586 expect(writer.toString(), expected);
587
588 writer = new IndentingWriter();
589 fg.generateJsonDart(writer);
590 expect(writer.toString(), expectedJson);
591 }); 567 });
592 } 568 }
OLDNEW
« no previous file with comments | « lib/file_generator.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698