protobuf/python/google/protobuf/internal/descriptor_test.py
Go to the documentation of this file.
1 # Protocol Buffers - Google's data interchange format
2 # Copyright 2008 Google Inc. All rights reserved.
3 # https://developers.google.com/protocol-buffers/
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are
7 # met:
8 #
9 # * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following disclaimer
13 # in the documentation and/or other materials provided with the
14 # distribution.
15 # * Neither the name of Google Inc. nor the names of its
16 # contributors may be used to endorse or promote products derived from
17 # this software without specific prior written permission.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 """Unittest for google.protobuf.internal.descriptor."""
32 
33 __author__ = 'robinson@google.com (Will Robinson)'
34 
35 import unittest
36 import warnings
37 
38 from google.protobuf import unittest_custom_options_pb2
39 from google.protobuf import unittest_import_pb2
40 from google.protobuf import unittest_pb2
41 from google.protobuf import descriptor_pb2
42 from google.protobuf.internal import api_implementation
43 from google.protobuf.internal import test_util
44 from google.protobuf import descriptor
45 from google.protobuf import descriptor_pool
46 from google.protobuf import symbol_database
47 from google.protobuf import text_format
48 
49 
50 TEST_EMPTY_MESSAGE_DESCRIPTOR_ASCII = """
51 name: 'TestEmptyMessage'
52 """
53 
54 
55 warnings.simplefilter('error', DeprecationWarning)
56 
57 
58 class DescriptorTest(unittest.TestCase):
59 
60  def setUp(self):
61  file_proto = descriptor_pb2.FileDescriptorProto(
62  name='some/filename/some.proto',
63  package='protobuf_unittest')
64  message_proto = file_proto.message_type.add(
65  name='NestedMessage')
66  message_proto.field.add(
67  name='bb',
68  number=1,
69  type=descriptor_pb2.FieldDescriptorProto.TYPE_INT32,
70  label=descriptor_pb2.FieldDescriptorProto.LABEL_OPTIONAL)
71  enum_proto = message_proto.enum_type.add(
72  name='ForeignEnum')
73  enum_proto.value.add(name='FOREIGN_FOO', number=4)
74  enum_proto.value.add(name='FOREIGN_BAR', number=5)
75  enum_proto.value.add(name='FOREIGN_BAZ', number=6)
76 
77  file_proto.message_type.add(name='ResponseMessage')
78  service_proto = file_proto.service.add(
79  name='Service')
80  method_proto = service_proto.method.add(
81  name='CallMethod',
82  input_type='.protobuf_unittest.NestedMessage',
83  output_type='.protobuf_unittest.ResponseMessage')
84 
85  # Note: Calling DescriptorPool.Add() multiple times with the same file only
86  # works if the input is canonical; in particular, all type names must be
87  # fully qualified.
88  self.pool = self.GetDescriptorPool()
89  self.pool.Add(file_proto)
90  self.my_file = self.pool.FindFileByName(file_proto.name)
91  self.my_message = self.my_file.message_types_by_name[message_proto.name]
92  self.my_enum = self.my_message.enum_types_by_name[enum_proto.name]
93  self.my_service = self.my_file.services_by_name[service_proto.name]
94  self.my_method = self.my_service.methods_by_name[method_proto.name]
95 
96  def GetDescriptorPool(self):
97  return symbol_database.Default().pool
98 
99  def testEnumValueName(self):
100  self.assertEqual(self.my_message.EnumValueName('ForeignEnum', 4),
101  'FOREIGN_FOO')
102 
103  self.assertEqual(
104  self.my_message.enum_types_by_name[
105  'ForeignEnum'].values_by_number[4].name,
106  self.my_message.EnumValueName('ForeignEnum', 4))
107  with self.assertRaises(KeyError):
108  self.my_message.EnumValueName('ForeignEnum', 999)
109  with self.assertRaises(KeyError):
110  self.my_message.EnumValueName('NoneEnum', 999)
111  with self.assertRaises(TypeError):
113 
114  def testEnumFixups(self):
115  self.assertEqual(self.my_enum, self.my_enum.values[0].type)
116 
118  self.assertEqual(self.my_message, self.my_message.fields[0].containing_type)
119  self.assertEqual(self.my_message, self.my_enum.containing_type)
120 
122  self.assertEqual(self.my_service, self.my_method.containing_service)
123 
124  def testGetOptions(self):
125  self.assertEqual(self.my_enum.GetOptions(),
126  descriptor_pb2.EnumOptions())
127  self.assertEqual(self.my_enum.values[0].GetOptions(),
128  descriptor_pb2.EnumValueOptions())
129  self.assertEqual(self.my_message.GetOptions(),
130  descriptor_pb2.MessageOptions())
131  self.assertEqual(self.my_message.fields[0].GetOptions(),
132  descriptor_pb2.FieldOptions())
133  self.assertEqual(self.my_method.GetOptions(),
134  descriptor_pb2.MethodOptions())
135  self.assertEqual(self.my_service.GetOptions(),
136  descriptor_pb2.ServiceOptions())
137 
139  file_descriptor = unittest_custom_options_pb2.DESCRIPTOR
140  message_descriptor = (unittest_custom_options_pb2.
141  TestMessageWithCustomOptions.DESCRIPTOR)
142  field_descriptor = message_descriptor.fields_by_name['field1']
143  oneof_descriptor = message_descriptor.oneofs_by_name['AnOneof']
144  enum_descriptor = message_descriptor.enum_types_by_name['AnEnum']
145  enum_value_descriptor = (message_descriptor.
146  enum_values_by_name['ANENUM_VAL2'])
147  other_enum_value_descriptor = (message_descriptor.
148  enum_values_by_name['ANENUM_VAL1'])
149  service_descriptor = (unittest_custom_options_pb2.
150  TestServiceWithCustomOptions.DESCRIPTOR)
151  method_descriptor = service_descriptor.FindMethodByName('Foo')
152 
153  file_options = file_descriptor.GetOptions()
154  file_opt1 = unittest_custom_options_pb2.file_opt1
155  self.assertEqual(9876543210, file_options.Extensions[file_opt1])
156  message_options = message_descriptor.GetOptions()
157  message_opt1 = unittest_custom_options_pb2.message_opt1
158  self.assertEqual(-56, message_options.Extensions[message_opt1])
159  field_options = field_descriptor.GetOptions()
160  field_opt1 = unittest_custom_options_pb2.field_opt1
161  self.assertEqual(8765432109, field_options.Extensions[field_opt1])
162  field_opt2 = unittest_custom_options_pb2.field_opt2
163  self.assertEqual(42, field_options.Extensions[field_opt2])
164  oneof_options = oneof_descriptor.GetOptions()
165  oneof_opt1 = unittest_custom_options_pb2.oneof_opt1
166  self.assertEqual(-99, oneof_options.Extensions[oneof_opt1])
167  enum_options = enum_descriptor.GetOptions()
168  enum_opt1 = unittest_custom_options_pb2.enum_opt1
169  self.assertEqual(-789, enum_options.Extensions[enum_opt1])
170  enum_value_options = enum_value_descriptor.GetOptions()
171  enum_value_opt1 = unittest_custom_options_pb2.enum_value_opt1
172  self.assertEqual(123, enum_value_options.Extensions[enum_value_opt1])
173 
174  service_options = service_descriptor.GetOptions()
175  service_opt1 = unittest_custom_options_pb2.service_opt1
176  self.assertEqual(-9876543210, service_options.Extensions[service_opt1])
177  method_options = method_descriptor.GetOptions()
178  method_opt1 = unittest_custom_options_pb2.method_opt1
179  self.assertEqual(unittest_custom_options_pb2.METHODOPT1_VAL2,
180  method_options.Extensions[method_opt1])
181 
182  message_descriptor = (
183  unittest_custom_options_pb2.DummyMessageContainingEnum.DESCRIPTOR)
184  self.assertTrue(file_descriptor.has_options)
185  self.assertFalse(message_descriptor.has_options)
186  self.assertTrue(field_descriptor.has_options)
187  self.assertTrue(oneof_descriptor.has_options)
188  self.assertTrue(enum_descriptor.has_options)
189  self.assertTrue(enum_value_descriptor.has_options)
190  self.assertFalse(other_enum_value_descriptor.has_options)
191 
193  message_descriptor = (unittest_custom_options_pb2.
194  TestMessageWithCustomOptions.DESCRIPTOR)
195  message_proto = descriptor_pb2.DescriptorProto()
196  message_descriptor.CopyToProto(message_proto)
197  self.assertEqual(len(message_proto.options.ListFields()),
198  2)
199 
201  kint32min = -2**31
202  kint64min = -2**63
203  kint32max = 2**31 - 1
204  kint64max = 2**63 - 1
205  kuint32max = 2**32 - 1
206  kuint64max = 2**64 - 1
207 
208  message_descriptor =\
209  unittest_custom_options_pb2.CustomOptionMinIntegerValues.DESCRIPTOR
210  message_options = message_descriptor.GetOptions()
211  self.assertEqual(False, message_options.Extensions[
212  unittest_custom_options_pb2.bool_opt])
213  self.assertEqual(kint32min, message_options.Extensions[
214  unittest_custom_options_pb2.int32_opt])
215  self.assertEqual(kint64min, message_options.Extensions[
216  unittest_custom_options_pb2.int64_opt])
217  self.assertEqual(0, message_options.Extensions[
218  unittest_custom_options_pb2.uint32_opt])
219  self.assertEqual(0, message_options.Extensions[
220  unittest_custom_options_pb2.uint64_opt])
221  self.assertEqual(kint32min, message_options.Extensions[
222  unittest_custom_options_pb2.sint32_opt])
223  self.assertEqual(kint64min, message_options.Extensions[
224  unittest_custom_options_pb2.sint64_opt])
225  self.assertEqual(0, message_options.Extensions[
226  unittest_custom_options_pb2.fixed32_opt])
227  self.assertEqual(0, message_options.Extensions[
228  unittest_custom_options_pb2.fixed64_opt])
229  self.assertEqual(kint32min, message_options.Extensions[
230  unittest_custom_options_pb2.sfixed32_opt])
231  self.assertEqual(kint64min, message_options.Extensions[
232  unittest_custom_options_pb2.sfixed64_opt])
233 
234  message_descriptor =\
235  unittest_custom_options_pb2.CustomOptionMaxIntegerValues.DESCRIPTOR
236  message_options = message_descriptor.GetOptions()
237  self.assertEqual(True, message_options.Extensions[
238  unittest_custom_options_pb2.bool_opt])
239  self.assertEqual(kint32max, message_options.Extensions[
240  unittest_custom_options_pb2.int32_opt])
241  self.assertEqual(kint64max, message_options.Extensions[
242  unittest_custom_options_pb2.int64_opt])
243  self.assertEqual(kuint32max, message_options.Extensions[
244  unittest_custom_options_pb2.uint32_opt])
245  self.assertEqual(kuint64max, message_options.Extensions[
246  unittest_custom_options_pb2.uint64_opt])
247  self.assertEqual(kint32max, message_options.Extensions[
248  unittest_custom_options_pb2.sint32_opt])
249  self.assertEqual(kint64max, message_options.Extensions[
250  unittest_custom_options_pb2.sint64_opt])
251  self.assertEqual(kuint32max, message_options.Extensions[
252  unittest_custom_options_pb2.fixed32_opt])
253  self.assertEqual(kuint64max, message_options.Extensions[
254  unittest_custom_options_pb2.fixed64_opt])
255  self.assertEqual(kint32max, message_options.Extensions[
256  unittest_custom_options_pb2.sfixed32_opt])
257  self.assertEqual(kint64max, message_options.Extensions[
258  unittest_custom_options_pb2.sfixed64_opt])
259 
260  message_descriptor =\
261  unittest_custom_options_pb2.CustomOptionOtherValues.DESCRIPTOR
262  message_options = message_descriptor.GetOptions()
263  self.assertEqual(-100, message_options.Extensions[
264  unittest_custom_options_pb2.int32_opt])
265  self.assertAlmostEqual(12.3456789, message_options.Extensions[
266  unittest_custom_options_pb2.float_opt], 6)
267  self.assertAlmostEqual(1.234567890123456789, message_options.Extensions[
268  unittest_custom_options_pb2.double_opt])
269  self.assertEqual("Hello, \"World\"", message_options.Extensions[
270  unittest_custom_options_pb2.string_opt])
271  self.assertEqual(b"Hello\0World", message_options.Extensions[
272  unittest_custom_options_pb2.bytes_opt])
273  dummy_enum = unittest_custom_options_pb2.DummyMessageContainingEnum
274  self.assertEqual(
275  dummy_enum.TEST_OPTION_ENUM_TYPE2,
276  message_options.Extensions[unittest_custom_options_pb2.enum_opt])
277 
278  message_descriptor =\
279  unittest_custom_options_pb2.SettingRealsFromPositiveInts.DESCRIPTOR
280  message_options = message_descriptor.GetOptions()
281  self.assertAlmostEqual(12, message_options.Extensions[
282  unittest_custom_options_pb2.float_opt], 6)
283  self.assertAlmostEqual(154, message_options.Extensions[
284  unittest_custom_options_pb2.double_opt])
285 
286  message_descriptor =\
287  unittest_custom_options_pb2.SettingRealsFromNegativeInts.DESCRIPTOR
288  message_options = message_descriptor.GetOptions()
289  self.assertAlmostEqual(-12, message_options.Extensions[
290  unittest_custom_options_pb2.float_opt], 6)
291  self.assertAlmostEqual(-154, message_options.Extensions[
292  unittest_custom_options_pb2.double_opt])
293 
295  descriptor =\
296  unittest_custom_options_pb2.VariousComplexOptions.DESCRIPTOR
297  options = descriptor.GetOptions()
298  self.assertEqual(42, options.Extensions[
299  unittest_custom_options_pb2.complex_opt1].foo)
300  self.assertEqual(324, options.Extensions[
301  unittest_custom_options_pb2.complex_opt1].Extensions[
302  unittest_custom_options_pb2.quux])
303  self.assertEqual(876, options.Extensions[
304  unittest_custom_options_pb2.complex_opt1].Extensions[
305  unittest_custom_options_pb2.corge].qux)
306  self.assertEqual(987, options.Extensions[
307  unittest_custom_options_pb2.complex_opt2].baz)
308  self.assertEqual(654, options.Extensions[
309  unittest_custom_options_pb2.complex_opt2].Extensions[
310  unittest_custom_options_pb2.grault])
311  self.assertEqual(743, options.Extensions[
312  unittest_custom_options_pb2.complex_opt2].bar.foo)
313  self.assertEqual(1999, options.Extensions[
314  unittest_custom_options_pb2.complex_opt2].bar.Extensions[
315  unittest_custom_options_pb2.quux])
316  self.assertEqual(2008, options.Extensions[
317  unittest_custom_options_pb2.complex_opt2].bar.Extensions[
318  unittest_custom_options_pb2.corge].qux)
319  self.assertEqual(741, options.Extensions[
320  unittest_custom_options_pb2.complex_opt2].Extensions[
321  unittest_custom_options_pb2.garply].foo)
322  self.assertEqual(1998, options.Extensions[
323  unittest_custom_options_pb2.complex_opt2].Extensions[
324  unittest_custom_options_pb2.garply].Extensions[
325  unittest_custom_options_pb2.quux])
326  self.assertEqual(2121, options.Extensions[
327  unittest_custom_options_pb2.complex_opt2].Extensions[
328  unittest_custom_options_pb2.garply].Extensions[
329  unittest_custom_options_pb2.corge].qux)
330  self.assertEqual(1971, options.Extensions[
331  unittest_custom_options_pb2.ComplexOptionType2
332  .ComplexOptionType4.complex_opt4].waldo)
333  self.assertEqual(321, options.Extensions[
334  unittest_custom_options_pb2.complex_opt2].fred.waldo)
335  self.assertEqual(9, options.Extensions[
336  unittest_custom_options_pb2.complex_opt3].qux)
337  self.assertEqual(22, options.Extensions[
338  unittest_custom_options_pb2.complex_opt3].complexoptiontype5.plugh)
339  self.assertEqual(24, options.Extensions[
340  unittest_custom_options_pb2.complexopt6].xyzzy)
341 
342  # Check that aggregate options were parsed and saved correctly in
343  # the appropriate descriptors.
345  file_descriptor = unittest_custom_options_pb2.DESCRIPTOR
346  message_descriptor =\
347  unittest_custom_options_pb2.AggregateMessage.DESCRIPTOR
348  field_descriptor = message_descriptor.fields_by_name["fieldname"]
349  enum_descriptor = unittest_custom_options_pb2.AggregateEnum.DESCRIPTOR
350  enum_value_descriptor = enum_descriptor.values_by_name["VALUE"]
351  service_descriptor =\
352  unittest_custom_options_pb2.AggregateService.DESCRIPTOR
353  method_descriptor = service_descriptor.FindMethodByName("Method")
354 
355  # Tests for the different types of data embedded in fileopt
356  file_options = file_descriptor.GetOptions().Extensions[
357  unittest_custom_options_pb2.fileopt]
358  self.assertEqual(100, file_options.i)
359  self.assertEqual("FileAnnotation", file_options.s)
360  self.assertEqual("NestedFileAnnotation", file_options.sub.s)
361  self.assertEqual("FileExtensionAnnotation", file_options.file.Extensions[
362  unittest_custom_options_pb2.fileopt].s)
363  self.assertEqual("EmbeddedMessageSetElement", file_options.mset.Extensions[
364  unittest_custom_options_pb2.AggregateMessageSetElement
365  .message_set_extension].s)
366 
367  # Simple tests for all the other types of annotations
368  self.assertEqual(
369  "MessageAnnotation",
370  message_descriptor.GetOptions().Extensions[
371  unittest_custom_options_pb2.msgopt].s)
372  self.assertEqual(
373  "FieldAnnotation",
374  field_descriptor.GetOptions().Extensions[
375  unittest_custom_options_pb2.fieldopt].s)
376  self.assertEqual(
377  "EnumAnnotation",
378  enum_descriptor.GetOptions().Extensions[
379  unittest_custom_options_pb2.enumopt].s)
380  self.assertEqual(
381  "EnumValueAnnotation",
382  enum_value_descriptor.GetOptions().Extensions[
383  unittest_custom_options_pb2.enumvalopt].s)
384  self.assertEqual(
385  "ServiceAnnotation",
386  service_descriptor.GetOptions().Extensions[
387  unittest_custom_options_pb2.serviceopt].s)
388  self.assertEqual(
389  "MethodAnnotation",
390  method_descriptor.GetOptions().Extensions[
391  unittest_custom_options_pb2.methodopt].s)
392 
393  def testNestedOptions(self):
394  nested_message =\
395  unittest_custom_options_pb2.NestedOptionType.NestedMessage.DESCRIPTOR
396  self.assertEqual(1001, nested_message.GetOptions().Extensions[
397  unittest_custom_options_pb2.message_opt1])
398  nested_field = nested_message.fields_by_name["nested_field"]
399  self.assertEqual(1002, nested_field.GetOptions().Extensions[
400  unittest_custom_options_pb2.field_opt1])
401  outer_message =\
402  unittest_custom_options_pb2.NestedOptionType.DESCRIPTOR
403  nested_enum = outer_message.enum_types_by_name["NestedEnum"]
404  self.assertEqual(1003, nested_enum.GetOptions().Extensions[
405  unittest_custom_options_pb2.enum_opt1])
406  nested_enum_value = outer_message.enum_values_by_name["NESTED_ENUM_VALUE"]
407  self.assertEqual(1004, nested_enum_value.GetOptions().Extensions[
408  unittest_custom_options_pb2.enum_value_opt1])
409  nested_extension = outer_message.extensions_by_name["nested_extension"]
410  self.assertEqual(1005, nested_extension.GetOptions().Extensions[
411  unittest_custom_options_pb2.field_opt2])
412 
414  self.assertEqual(self.my_enum.file, self.my_file)
415  self.assertEqual(self.my_message.file, self.my_file)
416 
418  self.assertEqual(self.my_file.name, 'some/filename/some.proto')
419  self.assertEqual(self.my_file.package, 'protobuf_unittest')
420  self.assertEqual(self.my_file.pool, self.pool)
421  self.assertFalse(self.my_file.has_options)
422  self.assertEqual('proto2', self.my_file.syntax)
423  file_proto = descriptor_pb2.FileDescriptorProto()
424  self.my_file.CopyToProto(file_proto)
425  self.assertEqual(self.my_file.serialized_pb,
426  file_proto.SerializeToString())
427  # Generated modules also belong to the default pool.
428  self.assertEqual(unittest_pb2.DESCRIPTOR.pool, descriptor_pool.Default())
429 
430  @unittest.skipIf(
431  api_implementation.Type() != 'cpp' or api_implementation.Version() != 2,
432  'Immutability of descriptors is only enforced in v2 implementation')
434  file_descriptor = unittest_pb2.DESCRIPTOR
435  message_descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR
436  field_descriptor = message_descriptor.fields_by_name['optional_int32']
437  enum_descriptor = message_descriptor.enum_types_by_name['NestedEnum']
438  oneof_descriptor = message_descriptor.oneofs_by_name['oneof_field']
439  with self.assertRaises(AttributeError):
440  message_descriptor.fields_by_name = None
441  with self.assertRaises(TypeError):
442  message_descriptor.fields_by_name['Another'] = None
443  with self.assertRaises(TypeError):
444  message_descriptor.fields.append(None)
445  with self.assertRaises(AttributeError):
446  field_descriptor.containing_type = message_descriptor
447  with self.assertRaises(AttributeError):
448  file_descriptor.has_options = False
449  with self.assertRaises(AttributeError):
450  field_descriptor.has_options = False
451  with self.assertRaises(AttributeError):
452  oneof_descriptor.has_options = False
453  with self.assertRaises(AttributeError):
454  enum_descriptor.has_options = False
455  with self.assertRaises(AttributeError) as e:
456  message_descriptor.has_options = True
457  self.assertEqual('attribute is not writable: has_options',
458  str(e.exception))
459 
460  def testDefault(self):
461  message_descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR
462  field = message_descriptor.fields_by_name['repeated_int32']
463  self.assertEqual(field.default_value, [])
464  field = message_descriptor.fields_by_name['repeated_nested_message']
465  self.assertEqual(field.default_value, [])
466  field = message_descriptor.fields_by_name['optionalgroup']
467  self.assertEqual(field.default_value, None)
468  field = message_descriptor.fields_by_name['optional_nested_message']
469  self.assertEqual(field.default_value, None)
470 
471 
473  """Redo the same tests as above, but with a separate DescriptorPool."""
474 
475  def GetDescriptorPool(self):
477 
478 
479 class GeneratedDescriptorTest(unittest.TestCase):
480  """Tests for the properties of descriptors in generated code."""
481 
482  def CheckMessageDescriptor(self, message_descriptor):
483  # Basic properties
484  self.assertEqual(message_descriptor.name, 'TestAllTypes')
485  self.assertEqual(message_descriptor.full_name,
486  'protobuf_unittest.TestAllTypes')
487  # Test equality and hashability
488  self.assertEqual(message_descriptor, message_descriptor)
489  self.assertEqual(message_descriptor.fields[0].containing_type,
490  message_descriptor)
491  self.assertIn(message_descriptor, [message_descriptor])
492  self.assertIn(message_descriptor, {message_descriptor: None})
493  # Test field containers
494  self.CheckDescriptorSequence(message_descriptor.fields)
495  self.CheckDescriptorMapping(message_descriptor.fields_by_name)
496  self.CheckDescriptorMapping(message_descriptor.fields_by_number)
497  self.CheckDescriptorMapping(message_descriptor.fields_by_camelcase_name)
498  self.CheckDescriptorMapping(message_descriptor.enum_types_by_name)
499  self.CheckDescriptorMapping(message_descriptor.enum_values_by_name)
500  self.CheckDescriptorMapping(message_descriptor.oneofs_by_name)
501  self.CheckDescriptorMapping(message_descriptor.enum_types[0].values_by_name)
502  # Test extension range
503  self.assertEqual(message_descriptor.extension_ranges, [])
504 
505  def CheckFieldDescriptor(self, field_descriptor):
506  # Basic properties
507  self.assertEqual(field_descriptor.name, 'optional_int32')
508  self.assertEqual(field_descriptor.camelcase_name, 'optionalInt32')
509  self.assertEqual(field_descriptor.full_name,
510  'protobuf_unittest.TestAllTypes.optional_int32')
511  self.assertEqual(field_descriptor.containing_type.name, 'TestAllTypes')
512  self.assertEqual(field_descriptor.file, unittest_pb2.DESCRIPTOR)
513  # Test equality and hashability
514  self.assertEqual(field_descriptor, field_descriptor)
515  self.assertEqual(
516  field_descriptor.containing_type.fields_by_name['optional_int32'],
517  field_descriptor)
518  self.assertEqual(
519  field_descriptor.containing_type.fields_by_camelcase_name[
520  'optionalInt32'],
521  field_descriptor)
522  self.assertIn(field_descriptor, [field_descriptor])
523  self.assertIn(field_descriptor, {field_descriptor: None})
524  self.assertEqual(None, field_descriptor.extension_scope)
525  self.assertEqual(None, field_descriptor.enum_type)
526  if api_implementation.Type() == 'cpp':
527  # For test coverage only
528  self.assertEqual(field_descriptor.id, field_descriptor.id)
529 
530  def CheckDescriptorSequence(self, sequence):
531  # Verifies that a property like 'messageDescriptor.fields' has all the
532  # properties of an immutable abc.Sequence.
533  self.assertNotEqual(sequence,
534  unittest_pb2.TestAllExtensions.DESCRIPTOR.fields)
535  self.assertNotEqual(sequence, [])
536  self.assertNotEqual(sequence, 1)
537  self.assertFalse(sequence == 1) # Only for cpp test coverage
538  self.assertEqual(sequence, sequence)
539  expected_list = list(sequence)
540  self.assertEqual(expected_list, sequence)
541  self.assertGreater(len(sequence), 0) # Sized
542  self.assertEqual(len(sequence), len(expected_list)) # Iterable
543  self.assertEqual(sequence[len(sequence) -1], sequence[-1])
544  item = sequence[0]
545  self.assertEqual(item, sequence[0])
546  self.assertIn(item, sequence) # Container
547  self.assertEqual(sequence.index(item), 0)
548  self.assertEqual(sequence.count(item), 1)
549  other_item = unittest_pb2.NestedTestAllTypes.DESCRIPTOR.fields[0]
550  self.assertNotIn(other_item, sequence)
551  self.assertEqual(sequence.count(other_item), 0)
552  self.assertRaises(ValueError, sequence.index, other_item)
553  self.assertRaises(ValueError, sequence.index, [])
554  reversed_iterator = reversed(sequence)
555  self.assertEqual(list(reversed_iterator), list(sequence)[::-1])
556  self.assertRaises(StopIteration, next, reversed_iterator)
557  expected_list[0] = 'change value'
558  self.assertNotEqual(expected_list, sequence)
559  # TODO(jieluo): Change __repr__ support for DescriptorSequence.
560  if api_implementation.Type() == 'python':
561  self.assertEqual(str(list(sequence)), str(sequence))
562  else:
563  self.assertEqual(str(sequence)[0], '<')
564 
565  def CheckDescriptorMapping(self, mapping):
566  # Verifies that a property like 'messageDescriptor.fields' has all the
567  # properties of an immutable abc.Mapping.
568  self.assertNotEqual(
569  mapping, unittest_pb2.TestAllExtensions.DESCRIPTOR.fields_by_name)
570  self.assertNotEqual(mapping, {})
571  self.assertNotEqual(mapping, 1)
572  self.assertFalse(mapping == 1) # Only for cpp test coverage
573  excepted_dict = dict(mapping.items())
574  self.assertEqual(mapping, excepted_dict)
575  self.assertEqual(mapping, mapping)
576  self.assertGreater(len(mapping), 0) # Sized
577  self.assertEqual(len(mapping), len(excepted_dict)) # Iterable
578  key, item = next(iter(mapping.items()))
579  self.assertIn(key, mapping) # Container
580  self.assertEqual(mapping.get(key), item)
581  with self.assertRaises(TypeError):
582  mapping.get()
583  # TODO(jieluo): Fix python and cpp extension diff.
584  if api_implementation.Type() == 'python':
585  self.assertRaises(TypeError, mapping.get, [])
586  else:
587  self.assertEqual(None, mapping.get([]))
588  # keys(), iterkeys() &co
589  item = (next(iter(mapping.keys())), next(iter(mapping.values())))
590  self.assertEqual(item, next(iter(mapping.items())))
591  excepted_dict[key] = 'change value'
592  self.assertNotEqual(mapping, excepted_dict)
593  del excepted_dict[key]
594  excepted_dict['new_key'] = 'new'
595  self.assertNotEqual(mapping, excepted_dict)
596  self.assertRaises(KeyError, mapping.__getitem__, 'key_error')
597  self.assertRaises(KeyError, mapping.__getitem__, len(mapping) + 1)
598  # TODO(jieluo): Add __repr__ support for DescriptorMapping.
599  if api_implementation.Type() == 'python':
600  self.assertEqual(len(str(dict(mapping.items()))), len(str(mapping)))
601  else:
602  self.assertEqual(str(mapping)[0], '<')
603 
604  def testDescriptor(self):
605  message_descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR
606  self.CheckMessageDescriptor(message_descriptor)
607  field_descriptor = message_descriptor.fields_by_name['optional_int32']
608  self.CheckFieldDescriptor(field_descriptor)
609  field_descriptor = message_descriptor.fields_by_camelcase_name[
610  'optionalInt32']
611  self.CheckFieldDescriptor(field_descriptor)
612  enum_descriptor = unittest_pb2.DESCRIPTOR.enum_types_by_name[
613  'ForeignEnum']
614  self.assertEqual(None, enum_descriptor.containing_type)
615  # Test extension range
616  self.assertEqual(
617  unittest_pb2.TestAllExtensions.DESCRIPTOR.extension_ranges,
618  [(1, 536870912)])
619  self.assertEqual(
620  unittest_pb2.TestMultipleExtensionRanges.DESCRIPTOR.extension_ranges,
621  [(42, 43), (4143, 4244), (65536, 536870912)])
622 
624  containing_file = unittest_pb2.DESCRIPTOR
625  self.CheckDescriptorSequence(containing_file.dependencies)
626  self.CheckDescriptorMapping(containing_file.message_types_by_name)
627  self.CheckDescriptorMapping(containing_file.enum_types_by_name)
628  self.CheckDescriptorMapping(containing_file.services_by_name)
629  self.CheckDescriptorMapping(containing_file.extensions_by_name)
631  unittest_pb2.TestNestedExtension.DESCRIPTOR.extensions_by_name)
632 
634  # Same test with the iterator
635  enum = unittest_pb2.TestAllTypes.DESCRIPTOR.enum_types_by_name['NestedEnum']
636  values_iter = iter(enum.values)
637  del enum
638  self.assertEqual('FOO', next(values_iter).name)
639 
641  message_descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR
642  nested_message_descriptor = unittest_pb2.TestAllTypes.NestedMessage.DESCRIPTOR
643  self.assertEqual(len(message_descriptor.nested_types), 3)
644  self.assertFalse(None in message_descriptor.nested_types)
645  self.assertTrue(
646  nested_message_descriptor in message_descriptor.nested_types)
647 
649  service_descriptor = unittest_pb2.DESCRIPTOR.services_by_name['TestService']
650  self.assertEqual(service_descriptor.name, 'TestService')
651  self.assertEqual(service_descriptor.methods[0].name, 'Foo')
652  self.assertIs(service_descriptor.file, unittest_pb2.DESCRIPTOR)
653  self.assertEqual(service_descriptor.index, 0)
654  self.CheckDescriptorMapping(service_descriptor.methods_by_name)
655 
657  message_descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR
658  oneof_descriptor = message_descriptor.oneofs_by_name['oneof_field']
659  self.assertFalse(oneof_descriptor.has_options)
660  self.assertEqual(message_descriptor, oneof_descriptor.containing_type)
661  self.assertEqual('oneof_field', oneof_descriptor.name)
662  self.assertEqual('protobuf_unittest.TestAllTypes.oneof_field',
663  oneof_descriptor.full_name)
664  self.assertEqual(0, oneof_descriptor.index)
665 
666 
667 class DescriptorCopyToProtoTest(unittest.TestCase):
668  """Tests for CopyTo functions of Descriptor."""
669 
670  def _AssertProtoEqual(self, actual_proto, expected_class, expected_ascii):
671  expected_proto = expected_class()
672  text_format.Merge(expected_ascii, expected_proto)
673 
674  self.assertEqual(
675  actual_proto, expected_proto,
676  'Not equal,\nActual:\n%s\nExpected:\n%s\n'
677  % (str(actual_proto), str(expected_proto)))
678 
679  def _InternalTestCopyToProto(self, desc, expected_proto_class,
680  expected_proto_ascii):
681  actual = expected_proto_class()
682  desc.CopyToProto(actual)
683  self._AssertProtoEqual(
684  actual, expected_proto_class, expected_proto_ascii)
685 
688  unittest_pb2.TestEmptyMessage.DESCRIPTOR,
689  descriptor_pb2.DescriptorProto,
690  TEST_EMPTY_MESSAGE_DESCRIPTOR_ASCII)
691 
693  TEST_NESTED_MESSAGE_ASCII = """
694  name: 'NestedMessage'
695  field: <
696  name: 'bb'
697  number: 1
698  label: 1 # Optional
699  type: 5 # TYPE_INT32
700  >
701  """
702 
704  unittest_pb2.TestAllTypes.NestedMessage.DESCRIPTOR,
705  descriptor_pb2.DescriptorProto,
706  TEST_NESTED_MESSAGE_ASCII)
707 
709  TEST_FOREIGN_NESTED_ASCII = """
710  name: 'TestForeignNested'
711  field: <
712  name: 'foreign_nested'
713  number: 1
714  label: 1 # Optional
715  type: 11 # TYPE_MESSAGE
716  type_name: '.protobuf_unittest.TestAllTypes.NestedMessage'
717  >
718  """
719 
721  unittest_pb2.TestForeignNested.DESCRIPTOR,
722  descriptor_pb2.DescriptorProto,
723  TEST_FOREIGN_NESTED_ASCII)
724 
726  TEST_FOREIGN_ENUM_ASCII = """
727  name: 'ForeignEnum'
728  value: <
729  name: 'FOREIGN_FOO'
730  number: 4
731  >
732  value: <
733  name: 'FOREIGN_BAR'
734  number: 5
735  >
736  value: <
737  name: 'FOREIGN_BAZ'
738  number: 6
739  >
740  """
741 
743  unittest_pb2.ForeignEnum.DESCRIPTOR,
744  descriptor_pb2.EnumDescriptorProto,
745  TEST_FOREIGN_ENUM_ASCII)
746 
748  TEST_DEPRECATED_FIELDS_ASCII = """
749  name: 'TestDeprecatedFields'
750  field: <
751  name: 'deprecated_int32'
752  number: 1
753  label: 1 # Optional
754  type: 5 # TYPE_INT32
755  options: <
756  deprecated: true
757  >
758  >
759  field {
760  name: "deprecated_int32_in_oneof"
761  number: 2
762  label: LABEL_OPTIONAL
763  type: TYPE_INT32
764  options {
765  deprecated: true
766  }
767  oneof_index: 0
768  }
769  oneof_decl {
770  name: "oneof_fields"
771  }
772  """
773 
775  unittest_pb2.TestDeprecatedFields.DESCRIPTOR,
776  descriptor_pb2.DescriptorProto,
777  TEST_DEPRECATED_FIELDS_ASCII)
778 
780  TEST_EMPTY_MESSAGE_WITH_EXTENSIONS_ASCII = """
781  name: 'TestEmptyMessageWithExtensions'
782  extension_range: <
783  start: 1
784  end: 536870912
785  >
786  """
787 
789  unittest_pb2.TestEmptyMessageWithExtensions.DESCRIPTOR,
790  descriptor_pb2.DescriptorProto,
791  TEST_EMPTY_MESSAGE_WITH_EXTENSIONS_ASCII)
792 
794  TEST_MESSAGE_WITH_SEVERAL_EXTENSIONS_ASCII = """
795  name: 'TestMultipleExtensionRanges'
796  extension_range: <
797  start: 42
798  end: 43
799  >
800  extension_range: <
801  start: 4143
802  end: 4244
803  >
804  extension_range: <
805  start: 65536
806  end: 536870912
807  >
808  """
809 
811  unittest_pb2.TestMultipleExtensionRanges.DESCRIPTOR,
812  descriptor_pb2.DescriptorProto,
813  TEST_MESSAGE_WITH_SEVERAL_EXTENSIONS_ASCII)
814 
816  UNITTEST_IMPORT_FILE_DESCRIPTOR_ASCII = ("""
817  name: 'google/protobuf/unittest_import.proto'
818  package: 'protobuf_unittest_import'
819  dependency: 'google/protobuf/unittest_import_public.proto'
820  message_type: <
821  name: 'ImportMessage'
822  field: <
823  name: 'd'
824  number: 1
825  label: 1 # Optional
826  type: 5 # TYPE_INT32
827  >
828  >
829  """ +
830  """enum_type: <
831  name: 'ImportEnum'
832  value: <
833  name: 'IMPORT_FOO'
834  number: 7
835  >
836  value: <
837  name: 'IMPORT_BAR'
838  number: 8
839  >
840  value: <
841  name: 'IMPORT_BAZ'
842  number: 9
843  >
844  >
845  enum_type: <
846  name: 'ImportEnumForMap'
847  value: <
848  name: 'UNKNOWN'
849  number: 0
850  >
851  value: <
852  name: 'FOO'
853  number: 1
854  >
855  value: <
856  name: 'BAR'
857  number: 2
858  >
859  >
860  options: <
861  java_package: 'com.google.protobuf.test'
862  optimize_for: 1 # SPEED
863  """ +
864  """
865  cc_enable_arenas: true
866  >
867  public_dependency: 0
868  """)
870  unittest_import_pb2.DESCRIPTOR,
871  descriptor_pb2.FileDescriptorProto,
872  UNITTEST_IMPORT_FILE_DESCRIPTOR_ASCII)
873 
875  TEST_SERVICE_ASCII = """
876  name: 'TestService'
877  method: <
878  name: 'Foo'
879  input_type: '.protobuf_unittest.FooRequest'
880  output_type: '.protobuf_unittest.FooResponse'
881  >
882  method: <
883  name: 'Bar'
884  input_type: '.protobuf_unittest.BarRequest'
885  output_type: '.protobuf_unittest.BarResponse'
886  >
887  """
889  unittest_pb2.TestService.DESCRIPTOR,
890  descriptor_pb2.ServiceDescriptorProto,
891  TEST_SERVICE_ASCII)
892 
894  expected_ascii = """
895  name: 'Foo'
896  input_type: '.protobuf_unittest.FooRequest'
897  output_type: '.protobuf_unittest.FooResponse'
898  """
899  method_descriptor = unittest_pb2.TestService.DESCRIPTOR.FindMethodByName(
900  'Foo')
902  method_descriptor,
903  descriptor_pb2.MethodDescriptorProto,
904  expected_ascii)
905 
906  @unittest.skipIf(
907  api_implementation.Type() == 'python',
908  'Pure python does not raise error.')
909  # TODO(jieluo): Fix pure python to check with the proto type.
911  file_proto = descriptor_pb2.FileDescriptorProto()
912  self.assertRaises(TypeError,
913  unittest_pb2.TestEmptyMessage.DESCRIPTOR.CopyToProto,
914  file_proto)
915  self.assertRaises(TypeError,
916  unittest_pb2.ForeignEnum.DESCRIPTOR.CopyToProto,
917  file_proto)
918  self.assertRaises(TypeError,
919  unittest_pb2.TestService.DESCRIPTOR.CopyToProto,
920  file_proto)
921  proto = descriptor_pb2.DescriptorProto()
922  self.assertRaises(TypeError,
923  unittest_import_pb2.DESCRIPTOR.CopyToProto,
924  proto)
925 
926 
927 class MakeDescriptorTest(unittest.TestCase):
928 
930  file_descriptor_proto = descriptor_pb2.FileDescriptorProto()
931  file_descriptor_proto.name = 'Foo2'
932  message_type = file_descriptor_proto.message_type.add()
933  message_type.name = file_descriptor_proto.name
934  nested_type = message_type.nested_type.add()
935  nested_type.name = 'Sub'
936  enum_type = nested_type.enum_type.add()
937  enum_type.name = 'FOO'
938  enum_type_val = enum_type.value.add()
939  enum_type_val.name = 'BAR'
940  enum_type_val.number = 3
941  field = message_type.field.add()
942  field.number = 1
943  field.name = 'uint64_field'
944  field.label = descriptor.FieldDescriptor.LABEL_REQUIRED
945  field.type = descriptor.FieldDescriptor.TYPE_UINT64
946  field = message_type.field.add()
947  field.number = 2
948  field.name = 'nested_message_field'
949  field.label = descriptor.FieldDescriptor.LABEL_REQUIRED
950  field.type = descriptor.FieldDescriptor.TYPE_MESSAGE
951  field.type_name = 'Sub'
952  enum_field = nested_type.field.add()
953  enum_field.number = 2
954  enum_field.name = 'bar_field'
955  enum_field.label = descriptor.FieldDescriptor.LABEL_REQUIRED
956  enum_field.type = descriptor.FieldDescriptor.TYPE_ENUM
957  enum_field.type_name = 'Foo2.Sub.FOO'
958 
959  result = descriptor.MakeDescriptor(message_type)
960  self.assertEqual(result.fields[0].cpp_type,
961  descriptor.FieldDescriptor.CPPTYPE_UINT64)
962  self.assertEqual(result.fields[1].cpp_type,
963  descriptor.FieldDescriptor.CPPTYPE_MESSAGE)
964  self.assertEqual(result.fields[1].message_type.containing_type,
965  result)
966  self.assertEqual(result.nested_types[0].fields[0].full_name,
967  'Foo2.Sub.bar_field')
968  self.assertEqual(result.nested_types[0].fields[0].enum_type,
969  result.nested_types[0].enum_types[0])
970  self.assertFalse(result.has_options)
971  self.assertFalse(result.fields[0].has_options)
972  if api_implementation.Type() == 'cpp':
973  with self.assertRaises(AttributeError):
974  result.fields[0].has_options = False
975 
977  file_descriptor_proto = descriptor_pb2.FileDescriptorProto()
978  file_descriptor_proto.name = 'Foo'
979  message_type = file_descriptor_proto.message_type.add()
980  message_type.name = file_descriptor_proto.name
981  enum_type = message_type.enum_type.add()
982  enum_type.name = 'FOO'
983  enum_type_val = enum_type.value.add()
984  enum_type_val.name = 'BAR'
985  enum_type_val.number = 3
986  field = message_type.field.add()
987  field.number = 1
988  field.name = 'uint64_field'
989  field.label = descriptor.FieldDescriptor.LABEL_REQUIRED
990  field.type = descriptor.FieldDescriptor.TYPE_UINT64
991  enum_field = message_type.field.add()
992  enum_field.number = 2
993  enum_field.name = 'bar_field'
994  enum_field.label = descriptor.FieldDescriptor.LABEL_REQUIRED
995  enum_field.type = descriptor.FieldDescriptor.TYPE_ENUM
996  enum_field.type_name = 'Foo.FOO'
997 
998  result = descriptor.MakeDescriptor(message_type)
999  self.assertEqual(result.fields[0].cpp_type,
1000  descriptor.FieldDescriptor.CPPTYPE_UINT64)
1001 
1002 
1004  descriptor_proto = descriptor_pb2.DescriptorProto()
1005  aggregate_message = unittest_custom_options_pb2.AggregateMessage
1006  aggregate_message.DESCRIPTOR.CopyToProto(descriptor_proto)
1007  reformed_descriptor = descriptor.MakeDescriptor(descriptor_proto)
1008 
1009  options = reformed_descriptor.GetOptions()
1010  self.assertEqual(101,
1011  options.Extensions[unittest_custom_options_pb2.msgopt].i)
1012 
1014  descriptor_proto = descriptor_pb2.DescriptorProto()
1015  descriptor_proto.name = 'Bar'
1016  names = ['foo_foo', 'FooBar', 'fooBaz', 'fooFoo', 'foobar']
1017  camelcase_names = ['fooFoo', 'fooBar', 'fooBaz', 'fooFoo', 'foobar']
1018  for index in range(len(names)):
1019  field = descriptor_proto.field.add()
1020  field.number = index + 1
1021  field.name = names[index]
1022  result = descriptor.MakeDescriptor(descriptor_proto)
1023  for index in range(len(camelcase_names)):
1024  self.assertEqual(result.fields[index].camelcase_name,
1025  camelcase_names[index])
1026 
1027  def testJsonName(self):
1028  descriptor_proto = descriptor_pb2.DescriptorProto()
1029  descriptor_proto.name = 'TestJsonName'
1030  names = ['field_name', 'fieldName', 'FieldName',
1031  '_field_name', 'FIELD_NAME', 'json_name']
1032  json_names = ['fieldName', 'fieldName', 'FieldName',
1033  'FieldName', 'FIELDNAME', '@type']
1034  for index in range(len(names)):
1035  field = descriptor_proto.field.add()
1036  field.number = index + 1
1037  field.name = names[index]
1038  field.json_name = '@type'
1039  result = descriptor.MakeDescriptor(descriptor_proto)
1040  for index in range(len(json_names)):
1041  self.assertEqual(result.fields[index].json_name,
1042  json_names[index])
1043 
1044 
1045 if __name__ == '__main__':
1046  unittest.main()
xds_interop_client.str
str
Definition: xds_interop_client.py:487
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.CheckDescriptorMapping
def CheckDescriptorMapping(self, mapping)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:568
google::protobuf.internal.descriptor_test.DescriptorTest.testCustomOptionsCopyTo
def testCustomOptionsCopyTo(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:195
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_TypeError
def testCopyToProto_TypeError(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:927
google::protobuf.internal.descriptor_test.MakeDescriptorTest.testMakeDescriptorWithUnsignedIntField
def testMakeDescriptorWithUnsignedIntField(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:993
google::protobuf.internal.descriptor_test.DescriptorTest.testComplexExtensionOptions
def testComplexExtensionOptions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:297
google::protobuf.internal.descriptor_test.DescriptorTest.testFileDescriptor
def testFileDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:420
google::protobuf::python::cdescriptor_pool::FindFileByName
static PyObject * FindFileByName(PyObject *self, PyObject *arg)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/descriptor_pool.cc:258
google::protobuf::python::message_descriptor::EnumValueName
static PyObject * EnumValueName(PyBaseDescriptor *self, PyObject *args)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/descriptor.cc:618
capstone.range
range
Definition: third_party/bloaty/third_party/capstone/bindings/python/capstone/__init__.py:6
google::protobuf.internal.descriptor_test.DescriptorTest.testSimpleCustomOptions
def testSimpleCustomOptions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:141
google::protobuf.internal.descriptor_test.NewDescriptorTest.GetDescriptorPool
def GetDescriptorPool(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:478
google::protobuf.internal.descriptor_test.DescriptorTest.testEnumValueName
def testEnumValueName(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:102
google::protobuf.internal.descriptor_test.NewDescriptorTest
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:475
google::protobuf
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
google::protobuf.internal.descriptor_test.DescriptorTest.testGetOptions
def testGetOptions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:127
cpp.ast.reversed
def reversed(seq)
Definition: bloaty/third_party/googletest/googlemock/scripts/generator/cpp/ast.py:52
google::protobuf::python::cdescriptor_pool::Add
static PyObject * Add(PyObject *self, PyObject *file_descriptor_proto)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/descriptor_pool.cc:621
google::protobuf.internal.descriptor_test.DescriptorTest.testEnumFixups
def testEnumFixups(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:117
google::protobuf::python::message_descriptor::CopyToProto
static PyObject * CopyToProto(PyBaseDescriptor *self, PyObject *target)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/descriptor.cc:614
google::protobuf.internal.descriptor_test.DescriptorTest.testContainingServiceFixups
def testContainingServiceFixups(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:124
google::protobuf.internal
Definition: third_party/bloaty/third_party/protobuf/python/google/protobuf/internal/__init__.py:1
google::protobuf.internal.descriptor_test.DescriptorTest.my_service
my_service
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:96
google::protobuf.internal.descriptor_test.DescriptorTest
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:61
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.testDescriptor
def testDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:617
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest._InternalTestCopyToProto
def _InternalTestCopyToProto(self, desc, expected_proto_class, expected_proto_ascii)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:692
google::protobuf.internal.descriptor_test.DescriptorTest.testNestedOptions
def testNestedOptions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:396
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_AllExtensions
def testCopyToProto_AllExtensions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:792
google::protobuf.internal.descriptor_test.DescriptorTest.testAggregateOptions
def testAggregateOptions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:347
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.testDescriptorNestedTypesContainer
def testDescriptorNestedTypesContainer(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:653
google::protobuf.internal.descriptor_test.DescriptorTest.testImmutableCppDescriptor
def testImmutableCppDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:436
google::protobuf.internal.descriptor_test.DescriptorTest.setUp
def setUp(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:63
google::protobuf.internal.descriptor_test.MakeDescriptorTest.testCamelcaseName
def testCamelcaseName(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:1030
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.testCppDescriptorContainer_Iterator
def testCppDescriptorContainer_Iterator(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:646
google::protobuf.internal.descriptor_test.DescriptorTest.testDefault
def testDefault(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:463
google::protobuf.internal.descriptor_test.DescriptorTest.my_enum
my_enum
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:95
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_ForeignEnum
def testCopyToProto_ForeignEnum(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:738
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_NestedMessage
def testCopyToProto_NestedMessage(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:705
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_FileDescriptor
def testCopyToProto_FileDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:828
google::protobuf.internal.descriptor_test.DescriptorTest.my_method
my_method
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:97
google::protobuf.internal.descriptor_test.DescriptorTest.testFileDescriptorReferences
def testFileDescriptorReferences(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:416
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_Options
def testCopyToProto_Options(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:760
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_ServiceDescriptor
def testCopyToProto_ServiceDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:887
google::protobuf.internal.descriptor_test.DescriptorTest.pool
pool
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:91
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.CheckDescriptorSequence
def CheckDescriptorSequence(self, sequence)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:533
google::protobuf.internal.descriptor_test.DescriptorTest.my_message
my_message
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:94
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.testServiceDescriptor
def testServiceDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:661
next
AllocList * next[kMaxLevel]
Definition: abseil-cpp/absl/base/internal/low_level_alloc.cc:100
google::protobuf::python::message_descriptor::GetOptions
static PyObject * GetOptions(PyBaseDescriptor *self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/descriptor.cc:600
google::protobuf.descriptor_pool.DescriptorPool
Definition: bloaty/third_party/protobuf/python/google/protobuf/descriptor_pool.py:118
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.testOneofDescriptor
def testOneofDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:669
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_EmptyMessage
def testCopyToProto_EmptyMessage(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:699
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_ForeignNestedMessage
def testCopyToProto_ForeignNestedMessage(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:721
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest._AssertProtoEqual
def _AssertProtoEqual(self, actual_proto, expected_class, expected_ascii)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:683
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_MethodDescriptor
def testCopyToProto_MethodDescriptor(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:910
google::protobuf.internal.descriptor_test.DescriptorTest.my_file
my_file
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:93
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:482
google::protobuf.internal.descriptor_test.MakeDescriptorTest.testJsonName
def testJsonName(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:1044
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:680
iter
Definition: test_winkernel.cpp:47
google::protobuf.internal.descriptor_test.MakeDescriptorTest.testMakeDescriptorWithNestedFields
def testMakeDescriptorWithNestedFields(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:946
google::protobuf.internal.descriptor_test.MakeDescriptorTest.testMakeDescriptorWithOptions
def testMakeDescriptorWithOptions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:1020
len
int len
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:46
google::protobuf.internal.descriptor_test.MakeDescriptorTest
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:944
google::protobuf.internal.descriptor_test.DescriptorTest.testDifferentCustomOptionTypes
def testDifferentCustomOptionTypes(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:203
google::protobuf.internal.descriptor_test.DescriptorCopyToProtoTest.testCopyToProto_SeveralExtensions
def testCopyToProto_SeveralExtensions(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:806
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.CheckMessageDescriptor
def CheckMessageDescriptor(self, message_descriptor)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:485
google::protobuf.internal.descriptor_test.DescriptorTest.GetDescriptorPool
def GetDescriptorPool(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:99
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.CheckFieldDescriptor
def CheckFieldDescriptor(self, field_descriptor)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:508
google::protobuf.internal.descriptor_test.GeneratedDescriptorTest.testCppDescriptorContainer
def testCppDescriptorContainer(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:636
google::protobuf.internal.descriptor_test.DescriptorTest.testContainingTypeFixups
def testContainingTypeFixups(self)
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py:120


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:15