14adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao"""Test correct treatment of hex/oct constants. 24adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 34adfde8bc82dd39f59e0445588c3e599ada477dJosh GaoThis is complex because of changes due to PEP 237. 44adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao""" 54adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 64adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport unittest 74adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom test import test_support 84adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 94adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass TestHexOctBin(unittest.TestCase): 114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_hex_baseline(self): 134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # A few upper/lowercase tests 144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x0, 0X0) 154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x1, 0X1) 164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x123456789abcdef, 0X123456789abcdef) 174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Baseline tests 184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x0, 0) 194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x10, 16) 204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x7fffffff, 2147483647) 214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x7fffffffffffffff, 9223372036854775807) 224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0x0), 0) 244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0x10), -16) 254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0x7fffffff), -2147483647) 264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0x7fffffffffffffff), -9223372036854775807) 274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0x0, 0) 294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0x10, -16) 304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0x7fffffff, -2147483647) 314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0x7fffffffffffffff, -9223372036854775807) 324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_hex_unsigned(self): 344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x80000000, 2147483648L) 364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0xffffffff, 4294967295L) 374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0x80000000), -2147483648L) 394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0xffffffff), -4294967295L) 404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0x80000000, -2147483648L) 434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0xffffffff, -4294967295L) 444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0x8000000000000000, 9223372036854775808L) 474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0xffffffffffffffff, 18446744073709551615L) 484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0x8000000000000000), -9223372036854775808L) 504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0xffffffffffffffff), -18446744073709551615L) 514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0x8000000000000000, -9223372036854775808L) 544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0xffffffffffffffff, -18446744073709551615L) 554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_oct_baseline(self): 574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Baseline tests 584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(00, 0) 594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(020, 16) 604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(017777777777, 2147483647) 614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0777777777777777777777, 9223372036854775807) 624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(00), 0) 644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(020), -16) 654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(017777777777), -2147483647) 664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0777777777777777777777), -9223372036854775807) 674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-00, 0) 694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-020, -16) 704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-017777777777, -2147483647) 714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0777777777777777777777, -9223372036854775807) 724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_oct_baseline_new(self): 744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # A few upper/lowercase tests 754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o0, 0O0) 764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o1, 0O1) 774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o1234567, 0O1234567) 784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Baseline tests 794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o0, 0) 804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o20, 16) 814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o17777777777, 2147483647) 824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o777777777777777777777, 9223372036854775807) 834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o0), 0) 854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o20), -16) 864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o17777777777), -2147483647) 874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o777777777777777777777), -9223372036854775807) 884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o0, 0) 904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o20, -16) 914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o17777777777, -2147483647) 924adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o777777777777777777777, -9223372036854775807) 934adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 944adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_oct_unsigned(self): 954adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 964adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(020000000000, 2147483648L) 974adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(037777777777, 4294967295L) 984adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 994adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(020000000000), -2147483648L) 1004adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(037777777777), -4294967295L) 1014adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 1024adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1034adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-020000000000, -2147483648L) 1044adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-037777777777, -4294967295L) 1054adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1064adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 1074adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(01000000000000000000000, 9223372036854775808L) 1084adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(01777777777777777777777, 18446744073709551615L) 1094adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 1104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(01000000000000000000000), -9223372036854775808L) 1114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(01777777777777777777777), -18446744073709551615L) 1124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 1134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-01000000000000000000000, -9223372036854775808L) 1154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-01777777777777777777777, -18446744073709551615L) 1164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_oct_unsigned_new(self): 1184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 1194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o20000000000, 2147483648L) 1204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o37777777777, 4294967295L) 1214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 1224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o20000000000), -2147483648L) 1234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o37777777777), -4294967295L) 1244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 1254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o20000000000, -2147483648L) 1274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o37777777777, -4294967295L) 1284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 1304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o1000000000000000000000, 9223372036854775808L) 1314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0o1777777777777777777777, 18446744073709551615L) 1324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 1334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o1000000000000000000000), -9223372036854775808L) 1344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0o1777777777777777777777), -18446744073709551615L) 1354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 1364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o1000000000000000000000, -9223372036854775808L) 1384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0o1777777777777777777777, -18446744073709551615L) 1394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_bin_baseline(self): 1414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # A few upper/lowercase tests 1424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b0, 0B0) 1434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b1, 0B1) 1444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b10101010101, 0B10101010101) 1454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Baseline tests 1464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b0, 0) 1474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b10000, 16) 1484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b1111111111111111111111111111111, 2147483647) 1494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b111111111111111111111111111111111111111111111111111111111111111, 9223372036854775807) 1504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 1514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b0), 0) 1524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b10000), -16) 1534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b1111111111111111111111111111111), -2147483647) 1544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b111111111111111111111111111111111111111111111111111111111111111), -9223372036854775807) 1554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 1564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b0, 0) 1574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b10000, -16) 1584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b1111111111111111111111111111111, -2147483647) 1594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b111111111111111111111111111111111111111111111111111111111111111, -9223372036854775807) 1604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_bin_unsigned(self): 1624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 1634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b10000000000000000000000000000000, 2147483648L) 1644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b11111111111111111111111111111111, 4294967295L) 1654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 1664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b10000000000000000000000000000000), -2147483648L) 1674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b11111111111111111111111111111111), -4294967295L) 1684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 1694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b10000000000000000000000000000000, -2147483648L) 1714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b11111111111111111111111111111111, -4294967295L) 1724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Positive constants 1744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b1000000000000000000000000000000000000000000000000000000000000000, 9223372036854775808L) 1754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(0b1111111111111111111111111111111111111111111111111111111111111111, 18446744073709551615L) 1764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and parentheses 1774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b1000000000000000000000000000000000000000000000000000000000000000), -9223372036854775808L) 1784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-(0b1111111111111111111111111111111111111111111111111111111111111111), -18446744073709551615L) 1794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ditto with a minus sign and NO parentheses 1804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b1000000000000000000000000000000000000000000000000000000000000000, -9223372036854775808L) 1824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(-0b1111111111111111111111111111111111111111111111111111111111111111, -18446744073709551615L) 1834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaodef test_main(): 1854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test_support.run_unittest(TestHexOctBin) 1864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoif __name__ == "__main__": 1884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test_main() 189