Beispiel #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
    def testEnumWithItems(self):
        class EnumWithItems(messages.Enum):
            A = 3
            B = 1
            C = 2

        expected = descriptor.EnumDescriptor()
        expected.name = 'EnumWithItems'

        a = descriptor.EnumValueDescriptor()
        a.name = 'A'
        a.number = 3

        b = descriptor.EnumValueDescriptor()
        b.name = 'B'
        b.number = 1

        c = descriptor.EnumValueDescriptor()
        c.name = 'C'
        c.number = 2

        expected.values = [b, c, a]

        described = descriptor.describe_enum(EnumWithItems)
        described.check_initialized()
        self.assertEquals(expected, described)
    def testEmptyEnum(self):
        class EmptyEnum(messages.Enum):
            pass

        expected = descriptor.EnumDescriptor()
        expected.name = 'EmptyEnum'

        described = descriptor.describe_enum(EmptyEnum)
        described.check_initialized()
        self.assertEquals(expected, described)
    def testEnums(self):
        """Test that enums are described."""
        module = self.LoadModule(
            'my.package', 'class Enum1(messages.Enum): pass\n'
            'class Enum2(messages.Enum): pass\n')

        enum1 = descriptor.EnumDescriptor()
        enum1.name = 'Enum1'

        enum2 = descriptor.EnumDescriptor()
        enum2.name = 'Enum2'

        expected = descriptor.FileDescriptor()
        expected.package = 'my.package'
        expected.enum_types = [enum1, enum2]

        described = descriptor.describe_file(module)
        described.check_initialized()
        self.assertEquals(expected, described)
    def testNestedEnum(self):
        class MyScope(messages.Message):
            class NestedEnum(messages.Enum):
                pass

        expected = descriptor.EnumDescriptor()
        expected.name = 'NestedEnum'

        described = descriptor.describe_enum(MyScope.NestedEnum)
        described.check_initialized()
        self.assertEquals(expected, described)
Beispiel #6
0
    def testEnumField_InternalReference(self):
        enum = descriptor.EnumDescriptor()
        enum.name = 'Color'

        field = descriptor.FieldDescriptor()
        field.name = 'color'
        field.number = 1
        field.label = descriptor.FieldDescriptor.Label.OPTIONAL
        field.variant = descriptor.FieldDescriptor.Variant.ENUM
        field.type_name = 'my_package.Color'

        self.DoMessageTest([field], enum_types=[enum])
Beispiel #7
0
    def testDefineEnum_Empty(self):
        """Test defining an empty enum."""
        enum_descriptor = descriptor.EnumDescriptor()
        enum_descriptor.name = 'Empty'

        enum_class = definition.define_enum(enum_descriptor, 'whatever')

        self.assertEquals('Empty', enum_class.__name__)
        self.assertEquals('whatever', enum_class.__module__)

        self.assertEquals(enum_descriptor,
                          descriptor.describe_enum(enum_class))
Beispiel #8
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)
Beispiel #9
0
    def testDefineEnum(self):
        """Test defining an enum."""
        red = descriptor.EnumValueDescriptor()
        green = descriptor.EnumValueDescriptor()
        blue = descriptor.EnumValueDescriptor()

        red.name = 'RED'
        red.number = 1
        green.name = 'GREEN'
        green.number = 2
        blue.name = 'BLUE'
        blue.number = 3

        enum_descriptor = descriptor.EnumDescriptor()
        enum_descriptor.name = 'Colors'
        enum_descriptor.values = [red, green, blue]

        enum_class = definition.define_enum(enum_descriptor, 'whatever')

        self.assertEquals('Colors', enum_class.__name__)
        self.assertEquals('whatever', enum_class.__module__)

        self.assertEquals(enum_descriptor,
                          descriptor.describe_enum(enum_class))