def test_serialize_parse(self, value, lowercase, expected): serializer = _argument_parser.EnumClassSerializer(lowercase=lowercase) parser = _argument_parser.EnumClassParser(Fruit, case_sensitive=not lowercase) serialized = serializer.serialize(value) self.assertEqual(serialized, expected) self.assertEqual(value, parser.parse(expected))
def __init__(self, name, default, help, enum_class, # pylint: disable=redefined-builtin short_name=None, **args): p = _argument_parser.EnumClassParser(enum_class) g = _argument_parser.EnumClassSerializer() super(EnumClassFlag, self).__init__( p, g, name, default, help, short_name, **args) self.help = '<%s>: %s' % ('|'.join(enum_class.__members__), self.help)
def test_serialize_parse(self): serializer = _argument_parser.EnumClassSerializer() val1 = Fruit.BANANA parser = _argument_parser.EnumClassParser(Fruit) serialized = serializer.serialize(val1) self.assertEqual(serialized, 'BANANA') val2 = parser.parse(serialized) self.assertEqual(val1, val2)
def __init__(self, name, default, help_string, enum_class, **args): p = _argument_parser.EnumClassParser(enum_class) g = _argument_parser.EnumClassListSerializer(list_sep=',') super(MultiEnumClassFlag, self).__init__(p, g, name, default, help_string, **args) self.help = ( '<%s>: %s;\n repeat this option to specify a list of values' % ('|'.join(enum_class.__members__), help_string or '(no help available)'))
def __init__( self, name, default, help, # pylint: disable=redefined-builtin enum_class, short_name=None, case_sensitive=False, **args): p = _argument_parser.EnumClassParser(enum_class, case_sensitive=case_sensitive) g = _argument_parser.EnumClassSerializer(lowercase=not case_sensitive) super(EnumClassFlag, self).__init__(p, g, name, default, help, short_name, **args) self.help = '<%s>: %s' % ('|'.join(p.member_names), self.help)
def __init__(self, name, default, help_string, enum_class, case_sensitive=False, **args): p = _argument_parser.EnumClassParser(enum_class, case_sensitive=case_sensitive) g = _argument_parser.EnumClassListSerializer( list_sep=',', lowercase=not case_sensitive) super(MultiEnumClassFlag, self).__init__(p, g, name, default, help_string, **args) self.help = ( '<%s>: %s;\n repeat this option to specify a list of values' % ('|'.join(p.member_names), help_string or '(no help available)'))
def test_parse_not_found(self): parser = _argument_parser.EnumClassParser(Fruit) with self.assertRaises(ValueError): parser.parse('ORANGE')
def test_parse_literal(self): parser = _argument_parser.EnumClassParser(Fruit) self.assertEqual(Fruit.APPLE, parser.parse(Fruit.APPLE))
def test_parse_string_case_insensitive(self, value): parser = _argument_parser.EnumClassParser(Fruit, case_sensitive=False) self.assertIs(Fruit.APPLE, parser.parse(value))
def test_parse_string_case_sensitive(self): parser = _argument_parser.EnumClassParser(Fruit) with self.assertRaises(ValueError): parser.parse('apple')
def test_parse_string(self): parser = _argument_parser.EnumClassParser(Fruit) self.assertEqual(Fruit.APPLE, parser.parse('APPLE'))
def test_case_sensitive_rejects_duplicates(self): unused_normal_parser = _argument_parser.EnumClassParser(MixedCaseEnum) with self.assertRaisesRegex(ValueError, 'Duplicate.+apple'): _argument_parser.EnumClassParser(MixedCaseEnum, case_sensitive=False)
def test_requires_non_empty_enum_class(self): with self.assertRaises(ValueError): _argument_parser.EnumClassParser(EmptyEnum)
def test_requires_enum(self): with self.assertRaises(TypeError): _argument_parser.EnumClassParser(['apple', 'banana'])