Skip to content

Commit 5a547d2

Browse files
committed
test: bytes formatting errors
1 parent c6b1a07 commit 5a547d2

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

Lib/test/test_bytes.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,8 +772,25 @@ def check(fmt, vals, result):
772772
check(b'%i%b %*.*b', (10, b'3', 5, 3, b'abc',), b'103 abc')
773773
check(b'%c', b'a', b'a')
774774

775+
class PseudoFloat:
776+
def __init__(self, value):
777+
self.value = float(value)
778+
def __int__(self):
779+
return int(self.value)
780+
781+
pi = PseudoFloat(3.1415)
782+
783+
self.assertRaisesRegex(TypeError, '%x format: an integer is required, not float', operator.mod, '%x', 3.14)
784+
self.assertRaisesRegex(TypeError, '%X format: an integer is required, not float', operator.mod, '%X', 2.11)
785+
self.assertRaisesRegex(TypeError, '%o format: an integer is required, not float', operator.mod, '%o', 1.79)
786+
self.assertRaisesRegex(TypeError, '%x format: an integer is required, not PseudoFloat', operator.mod, '%x', pi)
787+
self.assertRaisesRegex(TypeError, '%x format: an integer is required, not complex', operator.mod, '%x', 3j)
788+
self.assertRaisesRegex(TypeError, '%X format: an integer is required, not complex', operator.mod, '%X', 2j)
789+
self.assertRaisesRegex(TypeError, '%o format: an integer is required, not complex', operator.mod, '%o', 1j)
790+
self.assertRaisesRegex(TypeError, '%u format: a real number is required, not complex', operator.mod, '%u', 3j)
775791
self.assertRaisesRegex(TypeError, '%i format: a real number is required, not complex', operator.mod, '%i', 2j)
776792
self.assertRaisesRegex(TypeError, '%d format: a real number is required, not complex', operator.mod, '%d', 2j)
793+
self.assertRaisesRegex(TypeError, r'%c requires an int or a unicode character, not .*\.PseudoFloat', operator.mod, '%c', pi)
777794

778795
def test_imod(self):
779796
b = self.type2test(b'hello, %b!')

0 commit comments

Comments
 (0)