예제 #1
0
 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))
예제 #2
0
 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)
예제 #4
0
 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)'))
예제 #7
0
 def test_parse_not_found(self):
     parser = _argument_parser.EnumClassParser(Fruit)
     with self.assertRaises(ValueError):
         parser.parse('ORANGE')
예제 #8
0
 def test_parse_literal(self):
     parser = _argument_parser.EnumClassParser(Fruit)
     self.assertEqual(Fruit.APPLE, parser.parse(Fruit.APPLE))
예제 #9
0
 def test_parse_string_case_insensitive(self, value):
     parser = _argument_parser.EnumClassParser(Fruit, case_sensitive=False)
     self.assertIs(Fruit.APPLE, parser.parse(value))
예제 #10
0
 def test_parse_string_case_sensitive(self):
     parser = _argument_parser.EnumClassParser(Fruit)
     with self.assertRaises(ValueError):
         parser.parse('apple')
예제 #11
0
 def test_parse_string(self):
     parser = _argument_parser.EnumClassParser(Fruit)
     self.assertEqual(Fruit.APPLE, parser.parse('APPLE'))
예제 #12
0
 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)
예제 #13
0
 def test_requires_non_empty_enum_class(self):
     with self.assertRaises(ValueError):
         _argument_parser.EnumClassParser(EmptyEnum)
예제 #14
0
 def test_requires_enum(self):
     with self.assertRaises(TypeError):
         _argument_parser.EnumClassParser(['apple', 'banana'])