diff options
Diffstat (limited to 'Lib/test/test_builtin.py')
-rw-r--r-- | Lib/test/test_builtin.py | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index b10caf5..4cf5916 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -49,7 +49,7 @@ class BitBucket: def write(self, line): pass -L = [ +test_conv_no_sign = [ ('0', 0), ('1', 1), ('9', 9), @@ -71,6 +71,28 @@ L = [ (chr(0x200), ValueError), ] +test_conv_sign = [ + ('0', 0), + ('1', 1), + ('9', 9), + ('10', 10), + ('99', 99), + ('100', 100), + ('314', 314), + (' 314', ValueError), + ('314 ', 314), + (' \t\t 314 \t\t ', ValueError), + (repr(sys.maxsize), sys.maxsize), + (' 1x', ValueError), + (' 1 ', ValueError), + (' 1\02 ', ValueError), + ('', ValueError), + (' ', ValueError), + (' \t\t ', ValueError), + (str(b'\u0663\u0661\u0664 ','raw-unicode-escape'), 314), + (chr(0x200), ValueError), +] + class TestFailingBool: def __bool__(self): raise RuntimeError @@ -641,8 +663,18 @@ class BuiltinTest(unittest.TestCase): # Different base: self.assertEqual(int("10",16), 16) # Test conversion from strings and various anomalies - for s, v in L: - for sign in "", "+", "-": + # Testing with no sign at front + for s, v in test_conv_no_sign: + for prefix in "", " ", "\t", " \t\t ": + ss = prefix + s + vv = v + try: + self.assertEqual(int(ss), vv) + except v: + pass + # No whitespaces allowed between + or - sign and the number + for s, v in test_conv_sign: + for sign in "+", "-": for prefix in "", " ", "\t", " \t\t ": ss = prefix + sign + s vv = v |