Fix SF bug #688424, 64-bit test problems

This commit is contained in:
Neal Norwitz 2003-02-18 15:45:44 +00:00
parent eb2a5ef36a
commit dcfdceb9a2

View File

@ -5,6 +5,9 @@ This is complex because of changes due to PEP 237.
Some of these tests will have to change in Python 2.4! Some of these tests will have to change in Python 2.4!
""" """
import sys
platform_long_is_32_bits = sys.maxint == 2147483647
import unittest import unittest
from test import test_support from test import test_support
@ -18,58 +21,100 @@ class TextHexOct(unittest.TestCase):
# Baseline tests # Baseline tests
self.assertEqual(0x0, 0) self.assertEqual(0x0, 0)
self.assertEqual(0x10, 16) self.assertEqual(0x10, 16)
self.assertEqual(0x7fffffff, 2147483647) if platform_long_is_32_bits:
self.assertEqual(0x7fffffff, 2147483647)
else:
self.assertEqual(0x7fffffffffffffff, 9223372036854775807)
# Ditto with a minus sign and parentheses # Ditto with a minus sign and parentheses
self.assertEqual(-(0x0), 0) self.assertEqual(-(0x0), 0)
self.assertEqual(-(0x10), -16) self.assertEqual(-(0x10), -16)
self.assertEqual(-(0x7fffffff), -2147483647) if platform_long_is_32_bits:
self.assertEqual(-(0x7fffffff), -2147483647)
else:
self.assertEqual(-(0x7fffffffffffffff), -9223372036854775807)
# Ditto with a minus sign and NO parentheses # Ditto with a minus sign and NO parentheses
self.assertEqual(-0x0, 0) self.assertEqual(-0x0, 0)
self.assertEqual(-0x10, -16) self.assertEqual(-0x10, -16)
self.assertEqual(-0x7fffffff, -2147483647) if platform_long_is_32_bits:
self.assertEqual(-0x7fffffff, -2147483647)
else:
self.assertEqual(-0x7fffffffffffffff, -9223372036854775807)
def test_hex_unsigned(self): def test_hex_unsigned(self):
# This test is in a <string> so we can ignore the warnings # This test is in a <string> so we can ignore the warnings
exec """if 1: exec """if 1:
# Positive-looking constants with negavive values if platform_long_is_32_bits:
self.assertEqual(0x80000000, -2147483648L) # Positive-looking constants with negavive values
self.assertEqual(0xffffffff, -1) self.assertEqual(0x80000000, -2147483648L)
# Ditto with a minus sign and parentheses self.assertEqual(0xffffffff, -1)
self.assertEqual(-(0x80000000), 2147483648L) # Ditto with a minus sign and parentheses
self.assertEqual(-(0xffffffff), 1) self.assertEqual(-(0x80000000), 2147483648L)
# Ditto with a minus sign and NO parentheses self.assertEqual(-(0xffffffff), 1)
# This failed in Python 2.2 through 2.2.2 and in 2.3a1 # Ditto with a minus sign and NO parentheses
self.assertEqual(-0x80000000, 2147483648L) # This failed in Python 2.2 through 2.2.2 and in 2.3a1
self.assertEqual(-0xffffffff, 1) self.assertEqual(-0x80000000, 2147483648L)
self.assertEqual(-0xffffffff, 1)
else:
# Positive-looking constants with negavive values
self.assertEqual(0x8000000000000000, -9223372036854775808L)
self.assertEqual(0xffffffffffffffff, -1)
# Ditto with a minus sign and parentheses
self.assertEqual(-(0x8000000000000000), 9223372036854775808L)
self.assertEqual(-(0xffffffffffffffff), 1)
# Ditto with a minus sign and NO parentheses
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
self.assertEqual(-0x8000000000000000, 9223372036854775808L)
self.assertEqual(-0xffffffffffffffff, 1)
\n""" \n"""
def test_oct_baseline(self): def test_oct_baseline(self):
# Baseline tests # Baseline tests
self.assertEqual(00, 0) self.assertEqual(00, 0)
self.assertEqual(020, 16) self.assertEqual(020, 16)
self.assertEqual(017777777777, 2147483647) if platform_long_is_32_bits:
self.assertEqual(017777777777, 2147483647)
else:
self.assertEqual(0777777777777777777777, 9223372036854775807)
# Ditto with a minus sign and parentheses # Ditto with a minus sign and parentheses
self.assertEqual(-(00), 0) self.assertEqual(-(00), 0)
self.assertEqual(-(020), -16) self.assertEqual(-(020), -16)
self.assertEqual(-(017777777777), -2147483647) if platform_long_is_32_bits:
self.assertEqual(-(017777777777), -2147483647)
else:
self.assertEqual(-(0777777777777777777777), -9223372036854775807)
# Ditto with a minus sign and NO parentheses # Ditto with a minus sign and NO parentheses
self.assertEqual(-00, 0) self.assertEqual(-00, 0)
self.assertEqual(-020, -16) self.assertEqual(-020, -16)
self.assertEqual(-017777777777, -2147483647) if platform_long_is_32_bits:
self.assertEqual(-017777777777, -2147483647)
else:
self.assertEqual(-0777777777777777777777, -9223372036854775807)
def test_oct_unsigned(self): def test_oct_unsigned(self):
# This test is in a <string> so we can ignore the warnings # This test is in a <string> so we can ignore the warnings
exec """if 1: exec """if 1:
# Positive-looking constants with negavive values if platform_long_is_32_bits:
self.assertEqual(020000000000, -2147483648L) # Positive-looking constants with negavive values
self.assertEqual(037777777777, -1) self.assertEqual(020000000000, -2147483648L)
# Ditto with a minus sign and parentheses self.assertEqual(037777777777, -1)
self.assertEqual(-(020000000000), 2147483648L) # Ditto with a minus sign and parentheses
self.assertEqual(-(037777777777), 1) self.assertEqual(-(020000000000), 2147483648L)
# Ditto with a minus sign and NO parentheses self.assertEqual(-(037777777777), 1)
# This failed in Python 2.2 through 2.2.2 and in 2.3a1 # Ditto with a minus sign and NO parentheses
self.assertEqual(-020000000000, 2147483648L) # This failed in Python 2.2 through 2.2.2 and in 2.3a1
self.assertEqual(-037777777777, 1) self.assertEqual(-020000000000, 2147483648L)
self.assertEqual(-037777777777, 1)
else:
# Positive-looking constants with negavive values
self.assertEqual(01000000000000000000000, -9223372036854775808L)
self.assertEqual(01777777777777777777777, -1)
# Ditto with a minus sign and parentheses
self.assertEqual(-(01000000000000000000000), 9223372036854775808L)
self.assertEqual(-(01777777777777777777777), 1)
# Ditto with a minus sign and NO parentheses
# This failed in Python 2.2 through 2.2.2 and in 2.3a1
self.assertEqual(-01000000000000000000000, 9223372036854775808L)
self.assertEqual(-01777777777777777777777, 1)
\n""" \n"""
def test_main(): def test_main():