OLD | NEW |
1 #! /usr/bin/env python | 1 #! /usr/bin/env python |
2 # | 2 # |
3 # Protocol Buffers - Google's data interchange format | 3 # Protocol Buffers - Google's data interchange format |
4 # Copyright 2008 Google Inc. All rights reserved. | 4 # Copyright 2008 Google Inc. All rights reserved. |
5 # https://developers.google.com/protocol-buffers/ | 5 # https://developers.google.com/protocol-buffers/ |
6 # | 6 # |
7 # Redistribution and use in source and binary forms, with or without | 7 # Redistribution and use in source and binary forms, with or without |
8 # modification, are permitted provided that the following conditions are | 8 # modification, are permitted provided that the following conditions are |
9 # met: | 9 # met: |
10 # | 10 # |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 name='bb', | 70 name='bb', |
71 number=1, | 71 number=1, |
72 type=descriptor_pb2.FieldDescriptorProto.TYPE_INT32, | 72 type=descriptor_pb2.FieldDescriptorProto.TYPE_INT32, |
73 label=descriptor_pb2.FieldDescriptorProto.LABEL_OPTIONAL) | 73 label=descriptor_pb2.FieldDescriptorProto.LABEL_OPTIONAL) |
74 enum_proto = message_proto.enum_type.add( | 74 enum_proto = message_proto.enum_type.add( |
75 name='ForeignEnum') | 75 name='ForeignEnum') |
76 enum_proto.value.add(name='FOREIGN_FOO', number=4) | 76 enum_proto.value.add(name='FOREIGN_FOO', number=4) |
77 enum_proto.value.add(name='FOREIGN_BAR', number=5) | 77 enum_proto.value.add(name='FOREIGN_BAR', number=5) |
78 enum_proto.value.add(name='FOREIGN_BAZ', number=6) | 78 enum_proto.value.add(name='FOREIGN_BAZ', number=6) |
79 | 79 |
80 file_proto.message_type.add(name='ResponseMessage') | |
81 service_proto = file_proto.service.add( | |
82 name='Service') | |
83 method_proto = service_proto.method.add( | |
84 name='CallMethod', | |
85 input_type='.protobuf_unittest.NestedMessage', | |
86 output_type='.protobuf_unittest.ResponseMessage') | |
87 | |
88 # Note: Calling DescriptorPool.Add() multiple times with the same file only | |
89 # works if the input is canonical; in particular, all type names must be | |
90 # fully qualified. | |
91 self.pool = self.GetDescriptorPool() | 80 self.pool = self.GetDescriptorPool() |
92 self.pool.Add(file_proto) | 81 self.pool.Add(file_proto) |
93 self.my_file = self.pool.FindFileByName(file_proto.name) | 82 self.my_file = self.pool.FindFileByName(file_proto.name) |
94 self.my_message = self.my_file.message_types_by_name[message_proto.name] | 83 self.my_message = self.my_file.message_types_by_name[message_proto.name] |
95 self.my_enum = self.my_message.enum_types_by_name[enum_proto.name] | 84 self.my_enum = self.my_message.enum_types_by_name[enum_proto.name] |
96 self.my_service = self.my_file.services_by_name[service_proto.name] | 85 |
97 self.my_method = self.my_service.methods_by_name[method_proto.name] | 86 self.my_method = descriptor.MethodDescriptor( |
| 87 name='Bar', |
| 88 full_name='protobuf_unittest.TestService.Bar', |
| 89 index=0, |
| 90 containing_service=None, |
| 91 input_type=None, |
| 92 output_type=None) |
| 93 self.my_service = descriptor.ServiceDescriptor( |
| 94 name='TestServiceWithOptions', |
| 95 full_name='protobuf_unittest.TestServiceWithOptions', |
| 96 file=self.my_file, |
| 97 index=0, |
| 98 methods=[ |
| 99 self.my_method |
| 100 ]) |
98 | 101 |
99 def GetDescriptorPool(self): | 102 def GetDescriptorPool(self): |
100 return symbol_database.Default().pool | 103 return symbol_database.Default().pool |
101 | 104 |
102 def testEnumValueName(self): | 105 def testEnumValueName(self): |
103 self.assertEqual(self.my_message.EnumValueName('ForeignEnum', 4), | 106 self.assertEqual(self.my_message.EnumValueName('ForeignEnum', 4), |
104 'FOREIGN_FOO') | 107 'FOREIGN_FOO') |
105 | 108 |
106 self.assertEqual( | 109 self.assertEqual( |
107 self.my_message.enum_types_by_name[ | 110 self.my_message.enum_types_by_name[ |
(...skipping 21 matching lines...) Expand all Loading... |
129 descriptor_pb2.FieldOptions()) | 132 descriptor_pb2.FieldOptions()) |
130 self.assertEqual(self.my_method.GetOptions(), | 133 self.assertEqual(self.my_method.GetOptions(), |
131 descriptor_pb2.MethodOptions()) | 134 descriptor_pb2.MethodOptions()) |
132 self.assertEqual(self.my_service.GetOptions(), | 135 self.assertEqual(self.my_service.GetOptions(), |
133 descriptor_pb2.ServiceOptions()) | 136 descriptor_pb2.ServiceOptions()) |
134 | 137 |
135 def testSimpleCustomOptions(self): | 138 def testSimpleCustomOptions(self): |
136 file_descriptor = unittest_custom_options_pb2.DESCRIPTOR | 139 file_descriptor = unittest_custom_options_pb2.DESCRIPTOR |
137 message_descriptor =\ | 140 message_descriptor =\ |
138 unittest_custom_options_pb2.TestMessageWithCustomOptions.DESCRIPTOR | 141 unittest_custom_options_pb2.TestMessageWithCustomOptions.DESCRIPTOR |
139 field_descriptor = message_descriptor.fields_by_name['field1'] | 142 field_descriptor = message_descriptor.fields_by_name["field1"] |
140 oneof_descriptor = message_descriptor.oneofs_by_name['AnOneof'] | 143 enum_descriptor = message_descriptor.enum_types_by_name["AnEnum"] |
141 enum_descriptor = message_descriptor.enum_types_by_name['AnEnum'] | |
142 enum_value_descriptor =\ | 144 enum_value_descriptor =\ |
143 message_descriptor.enum_values_by_name['ANENUM_VAL2'] | 145 message_descriptor.enum_values_by_name["ANENUM_VAL2"] |
144 service_descriptor =\ | 146 service_descriptor =\ |
145 unittest_custom_options_pb2.TestServiceWithCustomOptions.DESCRIPTOR | 147 unittest_custom_options_pb2.TestServiceWithCustomOptions.DESCRIPTOR |
146 method_descriptor = service_descriptor.FindMethodByName('Foo') | 148 method_descriptor = service_descriptor.FindMethodByName("Foo") |
147 | 149 |
148 file_options = file_descriptor.GetOptions() | 150 file_options = file_descriptor.GetOptions() |
149 file_opt1 = unittest_custom_options_pb2.file_opt1 | 151 file_opt1 = unittest_custom_options_pb2.file_opt1 |
150 self.assertEqual(9876543210, file_options.Extensions[file_opt1]) | 152 self.assertEqual(9876543210, file_options.Extensions[file_opt1]) |
151 message_options = message_descriptor.GetOptions() | 153 message_options = message_descriptor.GetOptions() |
152 message_opt1 = unittest_custom_options_pb2.message_opt1 | 154 message_opt1 = unittest_custom_options_pb2.message_opt1 |
153 self.assertEqual(-56, message_options.Extensions[message_opt1]) | 155 self.assertEqual(-56, message_options.Extensions[message_opt1]) |
154 field_options = field_descriptor.GetOptions() | 156 field_options = field_descriptor.GetOptions() |
155 field_opt1 = unittest_custom_options_pb2.field_opt1 | 157 field_opt1 = unittest_custom_options_pb2.field_opt1 |
156 self.assertEqual(8765432109, field_options.Extensions[field_opt1]) | 158 self.assertEqual(8765432109, field_options.Extensions[field_opt1]) |
157 field_opt2 = unittest_custom_options_pb2.field_opt2 | 159 field_opt2 = unittest_custom_options_pb2.field_opt2 |
158 self.assertEqual(42, field_options.Extensions[field_opt2]) | 160 self.assertEqual(42, field_options.Extensions[field_opt2]) |
159 oneof_options = oneof_descriptor.GetOptions() | |
160 oneof_opt1 = unittest_custom_options_pb2.oneof_opt1 | |
161 self.assertEqual(-99, oneof_options.Extensions[oneof_opt1]) | |
162 enum_options = enum_descriptor.GetOptions() | 161 enum_options = enum_descriptor.GetOptions() |
163 enum_opt1 = unittest_custom_options_pb2.enum_opt1 | 162 enum_opt1 = unittest_custom_options_pb2.enum_opt1 |
164 self.assertEqual(-789, enum_options.Extensions[enum_opt1]) | 163 self.assertEqual(-789, enum_options.Extensions[enum_opt1]) |
165 enum_value_options = enum_value_descriptor.GetOptions() | 164 enum_value_options = enum_value_descriptor.GetOptions() |
166 enum_value_opt1 = unittest_custom_options_pb2.enum_value_opt1 | 165 enum_value_opt1 = unittest_custom_options_pb2.enum_value_opt1 |
167 self.assertEqual(123, enum_value_options.Extensions[enum_value_opt1]) | 166 self.assertEqual(123, enum_value_options.Extensions[enum_value_opt1]) |
168 | 167 |
169 service_options = service_descriptor.GetOptions() | 168 service_options = service_descriptor.GetOptions() |
170 service_opt1 = unittest_custom_options_pb2.service_opt1 | 169 service_opt1 = unittest_custom_options_pb2.service_opt1 |
171 self.assertEqual(-9876543210, service_options.Extensions[service_opt1]) | 170 self.assertEqual(-9876543210, service_options.Extensions[service_opt1]) |
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 self.assertEqual(result.fields[0].cpp_type, | 758 self.assertEqual(result.fields[0].cpp_type, |
760 descriptor.FieldDescriptor.CPPTYPE_UINT64) | 759 descriptor.FieldDescriptor.CPPTYPE_UINT64) |
761 self.assertEqual(result.fields[1].cpp_type, | 760 self.assertEqual(result.fields[1].cpp_type, |
762 descriptor.FieldDescriptor.CPPTYPE_MESSAGE) | 761 descriptor.FieldDescriptor.CPPTYPE_MESSAGE) |
763 self.assertEqual(result.fields[1].message_type.containing_type, | 762 self.assertEqual(result.fields[1].message_type.containing_type, |
764 result) | 763 result) |
765 self.assertEqual(result.nested_types[0].fields[0].full_name, | 764 self.assertEqual(result.nested_types[0].fields[0].full_name, |
766 'Foo2.Sub.bar_field') | 765 'Foo2.Sub.bar_field') |
767 self.assertEqual(result.nested_types[0].fields[0].enum_type, | 766 self.assertEqual(result.nested_types[0].fields[0].enum_type, |
768 result.nested_types[0].enum_types[0]) | 767 result.nested_types[0].enum_types[0]) |
769 self.assertFalse(result.has_options) | |
770 self.assertFalse(result.fields[0].has_options) | |
771 | 768 |
772 def testMakeDescriptorWithUnsignedIntField(self): | 769 def testMakeDescriptorWithUnsignedIntField(self): |
773 file_descriptor_proto = descriptor_pb2.FileDescriptorProto() | 770 file_descriptor_proto = descriptor_pb2.FileDescriptorProto() |
774 file_descriptor_proto.name = 'Foo' | 771 file_descriptor_proto.name = 'Foo' |
775 message_type = file_descriptor_proto.message_type.add() | 772 message_type = file_descriptor_proto.message_type.add() |
776 message_type.name = file_descriptor_proto.name | 773 message_type.name = file_descriptor_proto.name |
777 enum_type = message_type.enum_type.add() | 774 enum_type = message_type.enum_type.add() |
778 enum_type.name = 'FOO' | 775 enum_type.name = 'FOO' |
779 enum_type_val = enum_type.value.add() | 776 enum_type_val = enum_type.value.add() |
780 enum_type_val.name = 'BAR' | 777 enum_type_val.name = 'BAR' |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 camelcase_names = ['fooFoo', 'fooBar', 'fooBaz', 'fooFoo', 'foobar'] | 810 camelcase_names = ['fooFoo', 'fooBar', 'fooBaz', 'fooFoo', 'foobar'] |
814 for index in range(len(names)): | 811 for index in range(len(names)): |
815 field = descriptor_proto.field.add() | 812 field = descriptor_proto.field.add() |
816 field.number = index + 1 | 813 field.number = index + 1 |
817 field.name = names[index] | 814 field.name = names[index] |
818 result = descriptor.MakeDescriptor(descriptor_proto) | 815 result = descriptor.MakeDescriptor(descriptor_proto) |
819 for index in range(len(camelcase_names)): | 816 for index in range(len(camelcase_names)): |
820 self.assertEqual(result.fields[index].camelcase_name, | 817 self.assertEqual(result.fields[index].camelcase_name, |
821 camelcase_names[index]) | 818 camelcase_names[index]) |
822 | 819 |
823 def testJsonName(self): | |
824 descriptor_proto = descriptor_pb2.DescriptorProto() | |
825 descriptor_proto.name = 'TestJsonName' | |
826 names = ['field_name', 'fieldName', 'FieldName', | |
827 '_field_name', 'FIELD_NAME', 'json_name'] | |
828 json_names = ['fieldName', 'fieldName', 'FieldName', | |
829 'FieldName', 'FIELDNAME', '@type'] | |
830 for index in range(len(names)): | |
831 field = descriptor_proto.field.add() | |
832 field.number = index + 1 | |
833 field.name = names[index] | |
834 field.json_name = '@type' | |
835 result = descriptor.MakeDescriptor(descriptor_proto) | |
836 for index in range(len(json_names)): | |
837 self.assertEqual(result.fields[index].json_name, | |
838 json_names[index]) | |
839 | |
840 | 820 |
841 if __name__ == '__main__': | 821 if __name__ == '__main__': |
842 unittest.main() | 822 unittest.main() |
OLD | NEW |