Issue #16045: add more unit tests for built-in int()
Patch by Chris Jerdonek.
This commit is contained in:
parent
1f415cf2c2
commit
8e42e8a0c6
|
@ -1172,6 +1172,8 @@ class BuiltinTest(unittest.TestCase):
|
|||
# Check stdin/stdout error handler is used when invoking GNU readline
|
||||
self.check_input_tty("prompté", b"quux\xe9", "ascii")
|
||||
|
||||
# test_int(): see test_int.py for tests of built-in function int().
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEqual(repr(''), '\'\'')
|
||||
self.assertEqual(repr(0), '0')
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import sys
|
||||
|
||||
import unittest
|
||||
from test.support import run_unittest
|
||||
from test import support
|
||||
|
||||
L = [
|
||||
('0', 0),
|
||||
|
@ -221,6 +221,46 @@ class IntTestCases(unittest.TestCase):
|
|||
self.assertEqual(int('2br45qc', 35), 4294967297)
|
||||
self.assertEqual(int('1z141z5', 36), 4294967297)
|
||||
|
||||
def test_no_args(self):
|
||||
self.assertEquals(int(), 0)
|
||||
|
||||
def test_keyword_args(self):
|
||||
# Test invoking int() using keyword arguments.
|
||||
self.assertEquals(int(x=1.2), 1)
|
||||
self.assertEquals(int('100', base=2), 4)
|
||||
self.assertEquals(int(x='100', base=2), 4)
|
||||
|
||||
# For example, PyPy 1.9.0 raised TypeError for these cases because it
|
||||
# expects x to be a string if base is given.
|
||||
@support.cpython_only
|
||||
def test_base_arg_with_no_x_arg(self):
|
||||
self.assertEquals(int(base=6), 0)
|
||||
# Even invalid bases don't raise an exception.
|
||||
self.assertEquals(int(base=1), 0)
|
||||
self.assertEquals(int(base=1000), 0)
|
||||
self.assertEquals(int(base='foo'), 0)
|
||||
|
||||
def test_non_numeric_input_types(self):
|
||||
# Test possible non-numeric types for the argument x, including
|
||||
# subclasses of the explicitly documented accepted types.
|
||||
class CustomStr(str): pass
|
||||
class CustomBytes(bytes): pass
|
||||
class CustomByteArray(bytearray): pass
|
||||
|
||||
values = [b'100',
|
||||
bytearray(b'100'),
|
||||
CustomStr('100'),
|
||||
CustomBytes(b'100'),
|
||||
CustomByteArray(b'100')]
|
||||
|
||||
for x in values:
|
||||
msg = 'x has type %s' % type(x).__name__
|
||||
self.assertEquals(int(x), 100, msg=msg)
|
||||
self.assertEquals(int(x, 2), 4, msg=msg)
|
||||
|
||||
def test_string_float(self):
|
||||
self.assertRaises(ValueError, int, '1.2')
|
||||
|
||||
def test_intconversion(self):
|
||||
# Test __int__()
|
||||
class ClassicMissingMethods:
|
||||
|
@ -328,7 +368,7 @@ class IntTestCases(unittest.TestCase):
|
|||
self.fail("Expected int(%r) to raise a ValueError", s)
|
||||
|
||||
def test_main():
|
||||
run_unittest(IntTestCases)
|
||||
support.run_unittest(IntTestCases)
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
|
|
Loading…
Reference in New Issue