blob: e1db1864de4819637b606ce364d28944713bc061 [file] [log] [blame]
Ivan Inozemtsevf522c4b2020-09-01 09:30:44 +02001#!/usr/bin/env dart
2// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
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.
5
6library extension_generator_test;
7
8import 'package:protoc_plugin/indenting_writer.dart';
9import 'package:protoc_plugin/protoc.dart';
10import 'package:protoc_plugin/src/descriptor.pb.dart' as pb;
11import 'package:protoc_plugin/src/plugin.pb.dart' as pb;
12import 'package:test/test.dart';
13
14import 'golden_file.dart';
15
16void main() {
17 test('testExtensionGenerator', () {
18 final extensionFieldDescriptor = pb.FieldDescriptorProto()
19 ..name = 'client_info'
20 ..jsonName = 'clientInfo'
21 ..number = 261486461
22 ..label = pb.FieldDescriptorProto_Label.LABEL_OPTIONAL
23 ..type = pb.FieldDescriptorProto_Type.TYPE_STRING
24 ..extendee = '.Card';
25 final messageDescriptor = pb.DescriptorProto()
26 ..name = 'Card'
27 ..extension.add(extensionFieldDescriptor);
28 final fileDescriptor = pb.FileDescriptorProto()
29 ..messageType.add(messageDescriptor)
30 ..extension.add(extensionFieldDescriptor);
31
32 final fileGenerator = FileGenerator(fileDescriptor, GenerationOptions());
33 final options = parseGenerationOptions(
34 pb.CodeGeneratorRequest(), pb.CodeGeneratorResponse());
35 link(options, [fileGenerator]);
36 final writer = IndentingWriter(filename: 'sample.proto');
37 fileGenerator.extensionGenerators.single.generate(writer);
38
39 expectMatchesGoldenFile(writer.toString(), 'test/goldens/extension');
40 expectMatchesGoldenFile(
41 writer.sourceLocationInfo.toString(), 'test/goldens/extension.meta');
42 });
43}