コード例 #1
0
    def MakeFileDescriptor(self, package):
        """Helper method to construct FileDescriptors.

    Creates FileDescriptor with a MessageDescriptor and an EnumDescriptor.

    Args:
      package: Package name to give new file descriptors.

    Returns:
      New FileDescriptor instance.
    """
        enum_descriptor = descriptor.EnumDescriptor()
        enum_descriptor.name = u'MyEnum'

        message_descriptor = descriptor.MessageDescriptor()
        message_descriptor.name = u'MyMessage'

        service_descriptor = descriptor.ServiceDescriptor()
        service_descriptor.name = u'MyService'

        file_descriptor = descriptor.FileDescriptor()
        file_descriptor.package = package
        file_descriptor.enum_types = [enum_descriptor]
        file_descriptor.message_types = [message_descriptor]
        file_descriptor.service_types = [service_descriptor]

        return file_descriptor
コード例 #2
0
    def DoMessageTest(self,
                      field_descriptors,
                      message_types=None,
                      enum_types=None):
        """Execute message generation test based on FieldDescriptor objects.

    Args:
      field_descriptor: List of FieldDescriptor object to generate and test.
      message_types: List of other MessageDescriptor objects that the new
        Message class depends on.
      enum_types: List of EnumDescriptor objects that the new Message class
        depends on.
    """
        file_descriptor = descriptor.FileDescriptor()
        file_descriptor.package = 'my_package'

        message_descriptor = descriptor.MessageDescriptor()
        message_descriptor.name = 'MyMessage'

        message_descriptor.fields = list(field_descriptors)

        file_descriptor.message_types = message_types or []
        file_descriptor.message_types.append(message_descriptor)

        if enum_types:
            file_descriptor.enum_types = list(enum_types)

        self.DoPythonTest(file_descriptor)
コード例 #3
0
 def setUp(self):
     self.packageless = descriptor.MessageDescriptor()
     self.packageless.name = 'Packageless'
     self.library = descriptor.DescriptorLibrary(
         descriptors={
             'not.real.Packageless': self.packageless,
             'Packageless': self.packageless,
         })
コード例 #4
0
  def MakeMessage(self, name='MyMessage', fields=[]):
    message = descriptor.MessageDescriptor()
    message.name = name
    message.fields = fields

    messages_list = getattr(self.file_descriptor, 'fields', [])
    messages_list.append(message)
    self.file_descriptor.message_types = messages_list
コード例 #5
0
    def testNestedMessage(self):
        message = descriptor.MessageDescriptor()
        message.name = 'OuterMessage'

        inner_message = descriptor.MessageDescriptor()
        inner_message.name = 'InnerMessage'

        inner_inner_message = descriptor.MessageDescriptor()
        inner_inner_message.name = 'InnerInnerMessage'

        inner_message.message_types = [inner_inner_message]

        message.message_types = [inner_message]

        file_descriptor = descriptor.FileDescriptor()
        file_descriptor.message_types = [message]

        self.DoPythonTest(file_descriptor)
コード例 #6
0
    def testMessages(self):
        """Test that messages are described."""
        module = self.LoadModule(
            'my.package', 'class Message1(messages.Message): pass\n'
            'class Message2(messages.Message): pass\n')

        message1 = descriptor.MessageDescriptor()
        message1.name = 'Message1'

        message2 = descriptor.MessageDescriptor()
        message2.name = 'Message2'

        expected = descriptor.FileDescriptor()
        expected.package = 'my.package'
        expected.message_types = [message1, message2]

        described = descriptor.describe_file(module)
        described.check_initialized()
        self.assertEquals(expected, described)
コード例 #7
0
    def testEmptyDefinition(self):
        class MyMessage(messages.Message):
            pass

        expected = descriptor.MessageDescriptor()
        expected.name = 'MyMessage'

        described = descriptor.describe_message(MyMessage)
        described.check_initialized()
        self.assertEquals(expected, described)
コード例 #8
0
    def testMessageField_InternalReference(self):
        other_message = descriptor.MessageDescriptor()
        other_message.name = 'OtherMessage'

        field = descriptor.FieldDescriptor()
        field.name = 'message_field'
        field.number = 1
        field.label = descriptor.FieldDescriptor.Label.OPTIONAL
        field.variant = descriptor.FieldDescriptor.Variant.MESSAGE
        field.type_name = 'my_package.OtherMessage'

        self.DoMessageTest([field], message_types=[other_message])
コード例 #9
0
    def testNestedEnum(self):
        message = descriptor.MessageDescriptor()
        message.name = 'OuterMessage'

        inner_enum = descriptor.EnumDescriptor()
        inner_enum.name = 'InnerEnum'

        message.enum_types = [inner_enum]

        file_descriptor = descriptor.FileDescriptor()
        file_descriptor.message_types = [message]

        self.DoPythonTest(file_descriptor)
コード例 #10
0
    def testNestedMessage(self):
        class MessageWithMessage(messages.Message):
            class Nesty(messages.Message):
                pass

        expected = descriptor.MessageDescriptor()
        expected.name = 'MessageWithMessage'

        expected.message_types = [
            descriptor.describe_message(MessageWithMessage.Nesty)
        ]

        described = descriptor.describe_message(MessageWithMessage)
        described.check_initialized()
        self.assertEquals(expected, described)
コード例 #11
0
    def testDefinitionWithFields(self):
        class MessageWithFields(messages.Message):
            field1 = messages.IntegerField(10)
            field2 = messages.StringField(30)
            field3 = messages.IntegerField(20)

        expected = descriptor.MessageDescriptor()
        expected.name = 'MessageWithFields'

        expected.fields = [
            descriptor.describe_field(
                MessageWithFields.field_by_name('field1')),
            descriptor.describe_field(
                MessageWithFields.field_by_name('field3')),
            descriptor.describe_field(
                MessageWithFields.field_by_name('field2')),
        ]

        described = descriptor.describe_message(MessageWithFields)
        described.check_initialized()
        self.assertEquals(expected, described)
コード例 #12
0
    def testNestedEnum(self):
        class MessageWithEnum(messages.Message):
            class Mood(messages.Enum):
                GOOD = 1
                BAD = 2
                UGLY = 3

            class Music(messages.Enum):
                CLASSIC = 1
                JAZZ = 2
                BLUES = 3

        expected = descriptor.MessageDescriptor()
        expected.name = 'MessageWithEnum'

        expected.enum_types = [
            descriptor.describe_enum(MessageWithEnum.Mood),
            descriptor.describe_enum(MessageWithEnum.Music)
        ]

        described = descriptor.describe_message(MessageWithEnum)
        described.check_initialized()
        self.assertEquals(expected, described)