Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dcfdceb

Browse files
committed
Fix SF bug #688424, 64-bit test problems
1 parent eb2a5ef commit dcfdceb

1 file changed

Lines changed: 71 additions & 26 deletions

File tree

Lib/test/test_hexoct.py

Lines changed: 71 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
Some of these tests will have to change in Python 2.4!
66
"""
77

8+
import sys
9+
platform_long_is_32_bits = sys.maxint == 2147483647
10+
811
import unittest
912
from test import test_support
1013

@@ -18,58 +21,100 @@ def test_hex_baseline(self):
1821
# Baseline tests
1922
self.assertEqual(0x0, 0)
2023
self.assertEqual(0x10, 16)
21-
self.assertEqual(0x7fffffff, 2147483647)
24+
if platform_long_is_32_bits:
25+
self.assertEqual(0x7fffffff, 2147483647)
26+
else:
27+
self.assertEqual(0x7fffffffffffffff, 9223372036854775807)
2228
# Ditto with a minus sign and parentheses
2329
self.assertEqual(-(0x0), 0)
2430
self.assertEqual(-(0x10), -16)
25-
self.assertEqual(-(0x7fffffff), -2147483647)
31+
if platform_long_is_32_bits:
32+
self.assertEqual(-(0x7fffffff), -2147483647)
33+
else:
34+
self.assertEqual(-(0x7fffffffffffffff), -9223372036854775807)
2635
# Ditto with a minus sign and NO parentheses
2736
self.assertEqual(-0x0, 0)
2837
self.assertEqual(-0x10, -16)
29-
self.assertEqual(-0x7fffffff, -2147483647)
38+
if platform_long_is_32_bits:
39+
self.assertEqual(-0x7fffffff, -2147483647)
40+
else:
41+
self.assertEqual(-0x7fffffffffffffff, -9223372036854775807)
3042

3143
def test_hex_unsigned(self):
3244
# This test is in a <string> so we can ignore the warnings
3345
exec """if 1:
34-
# Positive-looking constants with negavive values
35-
self.assertEqual(0x80000000, -2147483648L)
36-
self.assertEqual(0xffffffff, -1)
37-
# Ditto with a minus sign and parentheses
38-
self.assertEqual(-(0x80000000), 2147483648L)
39-
self.assertEqual(-(0xffffffff), 1)
40-
# Ditto with a minus sign and NO parentheses
41-
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
42-
self.assertEqual(-0x80000000, 2147483648L)
43-
self.assertEqual(-0xffffffff, 1)
46+
if platform_long_is_32_bits:
47+
# Positive-looking constants with negavive values
48+
self.assertEqual(0x80000000, -2147483648L)
49+
self.assertEqual(0xffffffff, -1)
50+
# Ditto with a minus sign and parentheses
51+
self.assertEqual(-(0x80000000), 2147483648L)
52+
self.assertEqual(-(0xffffffff), 1)
53+
# Ditto with a minus sign and NO parentheses
54+
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
55+
self.assertEqual(-0x80000000, 2147483648L)
56+
self.assertEqual(-0xffffffff, 1)
57+
else:
58+
# Positive-looking constants with negavive values
59+
self.assertEqual(0x8000000000000000, -9223372036854775808L)
60+
self.assertEqual(0xffffffffffffffff, -1)
61+
# Ditto with a minus sign and parentheses
62+
self.assertEqual(-(0x8000000000000000), 9223372036854775808L)
63+
self.assertEqual(-(0xffffffffffffffff), 1)
64+
# Ditto with a minus sign and NO parentheses
65+
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
66+
self.assertEqual(-0x8000000000000000, 9223372036854775808L)
67+
self.assertEqual(-0xffffffffffffffff, 1)
4468
\n"""
4569

4670
def test_oct_baseline(self):
4771
# Baseline tests
4872
self.assertEqual(00, 0)
4973
self.assertEqual(020, 16)
50-
self.assertEqual(017777777777, 2147483647)
74+
if platform_long_is_32_bits:
75+
self.assertEqual(017777777777, 2147483647)
76+
else:
77+
self.assertEqual(0777777777777777777777, 9223372036854775807)
5178
# Ditto with a minus sign and parentheses
5279
self.assertEqual(-(00), 0)
5380
self.assertEqual(-(020), -16)
54-
self.assertEqual(-(017777777777), -2147483647)
81+
if platform_long_is_32_bits:
82+
self.assertEqual(-(017777777777), -2147483647)
83+
else:
84+
self.assertEqual(-(0777777777777777777777), -9223372036854775807)
5585
# Ditto with a minus sign and NO parentheses
5686
self.assertEqual(-00, 0)
5787
self.assertEqual(-020, -16)
58-
self.assertEqual(-017777777777, -2147483647)
88+
if platform_long_is_32_bits:
89+
self.assertEqual(-017777777777, -2147483647)
90+
else:
91+
self.assertEqual(-0777777777777777777777, -9223372036854775807)
5992

6093
def test_oct_unsigned(self):
6194
# This test is in a <string> so we can ignore the warnings
6295
exec """if 1:
63-
# Positive-looking constants with negavive values
64-
self.assertEqual(020000000000, -2147483648L)
65-
self.assertEqual(037777777777, -1)
66-
# Ditto with a minus sign and parentheses
67-
self.assertEqual(-(020000000000), 2147483648L)
68-
self.assertEqual(-(037777777777), 1)
69-
# Ditto with a minus sign and NO parentheses
70-
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
71-
self.assertEqual(-020000000000, 2147483648L)
72-
self.assertEqual(-037777777777, 1)
96+
if platform_long_is_32_bits:
97+
# Positive-looking constants with negavive values
98+
self.assertEqual(020000000000, -2147483648L)
99+
self.assertEqual(037777777777, -1)
100+
# Ditto with a minus sign and parentheses
101+
self.assertEqual(-(020000000000), 2147483648L)
102+
self.assertEqual(-(037777777777), 1)
103+
# Ditto with a minus sign and NO parentheses
104+
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
105+
self.assertEqual(-020000000000, 2147483648L)
106+
self.assertEqual(-037777777777, 1)
107+
else:
108+
# Positive-looking constants with negavive values
109+
self.assertEqual(01000000000000000000000, -9223372036854775808L)
110+
self.assertEqual(01777777777777777777777, -1)
111+
# Ditto with a minus sign and parentheses
112+
self.assertEqual(-(01000000000000000000000), 9223372036854775808L)
113+
self.assertEqual(-(01777777777777777777777), 1)
114+
# Ditto with a minus sign and NO parentheses
115+
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
116+
self.assertEqual(-01000000000000000000000, 9223372036854775808L)
117+
self.assertEqual(-01777777777777777777777, 1)
73118
\n"""
74119

75120
def test_main():

0 commit comments

Comments
 (0)