@@ -445,12 +445,63 @@ def test_format_enum(self):
445
445
self .assertEqual ('{:<20}' .format (Season .SPRING ),
446
446
'{:<20}' .format (str (Season .SPRING )))
447
447
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 ):
449
499
class TestFloat (float , Enum ):
450
500
one = 1.0
451
501
two = 2.0
452
502
def __format__ (self , spec ):
453
503
return 'TestFloat success!'
504
+ self .assertEqual (str (TestFloat .one ), 'TestFloat.one' )
454
505
self .assertEqual ('{}' .format (TestFloat .one ), 'TestFloat success!' )
455
506
456
507
def assertFormatIsValue (self , spec , member ):
0 commit comments