diff options
author | Andrew Svetlov <andrew.svetlov@gmail.com> | 2012-12-23 10:51:40 (GMT) |
---|---|---|
committer | Andrew Svetlov <andrew.svetlov@gmail.com> | 2012-12-23 10:51:40 (GMT) |
commit | f347cf903c61fec0fbf2a5528ef9b88f76e8977d (patch) | |
tree | 2d5bbfec9bbc25ebb096f8d0e54980a95b658754 /Lib | |
parent | 73b969ec70ff4d422bff34d63cfb220cfac96779 (diff) | |
parent | 8e42e8a0c6d202e12a918494ed506252ff361187 (diff) | |
download | cpython-f347cf903c61fec0fbf2a5528ef9b88f76e8977d.zip cpython-f347cf903c61fec0fbf2a5528ef9b88f76e8977d.tar.gz cpython-f347cf903c61fec0fbf2a5528ef9b88f76e8977d.tar.bz2 |
merge heads
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_builtin.py | 2 | ||||
-rw-r--r-- | Lib/test/test_int.py | 44 |
2 files changed, 44 insertions, 2 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 19d7c70..bf005c5 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -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') diff --git a/Lib/test/test_int.py b/Lib/test/test_int.py index 227759f..e0406dd 100644 --- a/Lib/test/test_int.py +++ b/Lib/test/test_int.py @@ -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() |