@@ -1306,6 +1306,20 @@ def __repr__(self):
1306
1306
self .assertRaises (ValueError , ("{" + big + "}" ).format )
1307
1307
self .assertRaises (ValueError , ("{[" + big + "]}" ).format , [0 ])
1308
1308
1309
+ # test number formatter errors:
1310
+ self .assertRaises (ValueError , '{0:x}' .format , 1j )
1311
+ self .assertRaises (ValueError , '{0:x}' .format , 1.0 )
1312
+ self .assertRaises (ValueError , '{0:X}' .format , 1j )
1313
+ self .assertRaises (ValueError , '{0:X}' .format , 1.0 )
1314
+ self .assertRaises (ValueError , '{0:o}' .format , 1j )
1315
+ self .assertRaises (ValueError , '{0:o}' .format , 1.0 )
1316
+ self .assertRaises (ValueError , '{0:u}' .format , 1j )
1317
+ self .assertRaises (ValueError , '{0:u}' .format , 1.0 )
1318
+ self .assertRaises (ValueError , '{0:i}' .format , 1j )
1319
+ self .assertRaises (ValueError , '{0:i}' .format , 1.0 )
1320
+ self .assertRaises (ValueError , '{0:d}' .format , 1j )
1321
+ self .assertRaises (ValueError , '{0:d}' .format , 1.0 )
1322
+
1309
1323
# issue 6089
1310
1324
self .assertRaises (ValueError , "{0[0]x}" .format , [None ])
1311
1325
self .assertRaises (ValueError , "{0[0](10)}" .format , [None ])
@@ -1541,11 +1555,31 @@ def __int__(self):
1541
1555
self .assertEqual ('%X' % letter_m , '6D' )
1542
1556
self .assertEqual ('%o' % letter_m , '155' )
1543
1557
self .assertEqual ('%c' % letter_m , 'm' )
1544
- self .assertRaisesRegex (TypeError , '%x format: an integer is required, not float' , operator .mod , '%x' , 3.14 ),
1545
- self .assertRaisesRegex (TypeError , '%X format: an integer is required, not float' , operator .mod , '%X' , 2.11 ),
1546
- self .assertRaisesRegex (TypeError , '%o format: an integer is required, not float' , operator .mod , '%o' , 1.79 ),
1547
- self .assertRaisesRegex (TypeError , '%x format: an integer is required, not PseudoFloat' , operator .mod , '%x' , pi ),
1548
- self .assertRaises (TypeError , operator .mod , '%c' , pi ),
1558
+ self .assertRaisesRegex (TypeError , '%x format: an integer is required, not float' , operator .mod , '%x' , 3.14 )
1559
+ self .assertRaisesRegex (TypeError , '%X format: an integer is required, not float' , operator .mod , '%X' , 2.11 )
1560
+ self .assertRaisesRegex (TypeError , '%o format: an integer is required, not float' , operator .mod , '%o' , 1.79 )
1561
+ self .assertRaisesRegex (TypeError , '%x format: an integer is required, not PseudoFloat' , operator .mod , '%x' , pi )
1562
+ self .assertRaisesRegex (TypeError , '%x format: an integer is required, not complex' , operator .mod , '%x' , 3j )
1563
+ self .assertRaisesRegex (TypeError , '%X format: an integer is required, not complex' , operator .mod , '%X' , 2j )
1564
+ self .assertRaisesRegex (TypeError , '%o format: an integer is required, not complex' , operator .mod , '%o' , 1j )
1565
+ self .assertRaisesRegex (TypeError , '%u format: a real number is required, not complex' , operator .mod , '%u' , 3j )
1566
+ self .assertRaisesRegex (TypeError , '%i format: a real number is required, not complex' , operator .mod , '%i' , 2j )
1567
+ self .assertRaisesRegex (TypeError , '%d format: a real number is required, not complex' , operator .mod , '%d' , 1j )
1568
+ self .assertRaisesRegex (TypeError , '%c requires int or char' , operator .mod , '%c' , pi )
1569
+
1570
+ class RaisingNumber :
1571
+ def __int__ (self ):
1572
+ raise RuntimeError ('int' ) # should not be `TypeError`
1573
+ def __index__ (self ):
1574
+ raise RuntimeError ('index' ) # should not be `TypeError`
1575
+
1576
+ rn = RaisingNumber ()
1577
+ self .assertRaisesRegex (RuntimeError , 'int' , operator .mod , '%d' , rn )
1578
+ self .assertRaisesRegex (RuntimeError , 'int' , operator .mod , '%i' , rn )
1579
+ self .assertRaisesRegex (RuntimeError , 'int' , operator .mod , '%u' , rn )
1580
+ self .assertRaisesRegex (RuntimeError , 'index' , operator .mod , '%x' , rn )
1581
+ self .assertRaisesRegex (RuntimeError , 'index' , operator .mod , '%X' , rn )
1582
+ self .assertRaisesRegex (RuntimeError , 'index' , operator .mod , '%o' , rn )
1549
1583
1550
1584
def test_formatting_with_enum (self ):
1551
1585
# issue18780
0 commit comments