@@ -445,12 +445,63 @@ def test_format_enum(self):
445445 self .assertEqual ('{:<20}' .format (Season .SPRING ),
446446 '{:<20}' .format (str (Season .SPRING )))
447447
448- def test_format_enum_custom (self ):
448+ def test_str_override_enum (self ):
449+ class EnumWithStrOverrides (Enum ):
450+ one = auto ()
451+ two = auto ()
452+
453+ def __str__ (self ):
454+ return 'Str!'
455+ self .assertEqual (str (EnumWithStrOverrides .one ), 'Str!' )
456+ self .assertEqual ('{}' .format (EnumWithStrOverrides .one ), 'Str!' )
457+
458+ def test_format_override_enum (self ):
459+ class EnumWithFormatOverride (Enum ):
460+ one = 1.0
461+ two = 2.0
462+ def __format__ (self , spec ):
463+ return 'Format!!'
464+ self .assertEqual (str (EnumWithFormatOverride .one ), 'EnumWithFormatOverride.one' )
465+ self .assertEqual ('{}' .format (EnumWithFormatOverride .one ), 'Format!!' )
466+
467+ def test_str_and_format_override_enum (self ):
468+ class EnumWithStrFormatOverrides (Enum ):
469+ one = auto ()
470+ two = auto ()
471+ def __str__ (self ):
472+ return 'Str!'
473+ def __format__ (self , spec ):
474+ return 'Format!'
475+ self .assertEqual (str (EnumWithStrFormatOverrides .one ), 'Str!' )
476+ self .assertEqual ('{}' .format (EnumWithStrFormatOverrides .one ), 'Format!' )
477+
478+ def test_str_override_mixin (self ):
479+ class MixinEnumWithStrOverride (float , Enum ):
480+ one = 1.0
481+ two = 2.0
482+ def __str__ (self ):
483+ return 'Overridden!'
484+ self .assertEqual (str (MixinEnumWithStrOverride .one ), 'Overridden!' )
485+ self .assertEqual ('{}' .format (MixinEnumWithStrOverride .one ), 'Overridden!' )
486+
487+ def test_str_and_format_override_mixin (self ):
488+ class MixinWithStrFormatOverrides (float , Enum ):
489+ one = 1.0
490+ two = 2.0
491+ def __str__ (self ):
492+ return 'Str!'
493+ def __format__ (self , spec ):
494+ return 'Format!'
495+ self .assertEqual (str (MixinWithStrFormatOverrides .one ), 'Str!' )
496+ self .assertEqual ('{}' .format (MixinWithStrFormatOverrides .one ), 'Format!' )
497+
498+ def test_format_override_mixin (self ):
449499 class TestFloat (float , Enum ):
450500 one = 1.0
451501 two = 2.0
452502 def __format__ (self , spec ):
453503 return 'TestFloat success!'
504+ self .assertEqual (str (TestFloat .one ), 'TestFloat.one' )
454505 self .assertEqual ('{}' .format (TestFloat .one ), 'TestFloat success!' )
455506
456507 def assertFormatIsValue (self , spec , member ):
0 commit comments