17db96d56Sopenharmony_ci"""Test correct treatment of hex/oct constants. 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciThis is complex because of changes due to PEP 237. 47db96d56Sopenharmony_ci""" 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ciimport unittest 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ciclass TestHexOctBin(unittest.TestCase): 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci def test_hex_baseline(self): 117db96d56Sopenharmony_ci # A few upper/lowercase tests 127db96d56Sopenharmony_ci self.assertEqual(0x0, 0X0) 137db96d56Sopenharmony_ci self.assertEqual(0x1, 0X1) 147db96d56Sopenharmony_ci self.assertEqual(0x123456789abcdef, 0X123456789abcdef) 157db96d56Sopenharmony_ci # Baseline tests 167db96d56Sopenharmony_ci self.assertEqual(0x0, 0) 177db96d56Sopenharmony_ci self.assertEqual(0x10, 16) 187db96d56Sopenharmony_ci self.assertEqual(0x7fffffff, 2147483647) 197db96d56Sopenharmony_ci self.assertEqual(0x7fffffffffffffff, 9223372036854775807) 207db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 217db96d56Sopenharmony_ci self.assertEqual(-(0x0), 0) 227db96d56Sopenharmony_ci self.assertEqual(-(0x10), -16) 237db96d56Sopenharmony_ci self.assertEqual(-(0x7fffffff), -2147483647) 247db96d56Sopenharmony_ci self.assertEqual(-(0x7fffffffffffffff), -9223372036854775807) 257db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 267db96d56Sopenharmony_ci self.assertEqual(-0x0, 0) 277db96d56Sopenharmony_ci self.assertEqual(-0x10, -16) 287db96d56Sopenharmony_ci self.assertEqual(-0x7fffffff, -2147483647) 297db96d56Sopenharmony_ci self.assertEqual(-0x7fffffffffffffff, -9223372036854775807) 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci def test_hex_unsigned(self): 327db96d56Sopenharmony_ci # Positive constants 337db96d56Sopenharmony_ci self.assertEqual(0x80000000, 2147483648) 347db96d56Sopenharmony_ci self.assertEqual(0xffffffff, 4294967295) 357db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 367db96d56Sopenharmony_ci self.assertEqual(-(0x80000000), -2147483648) 377db96d56Sopenharmony_ci self.assertEqual(-(0xffffffff), -4294967295) 387db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 397db96d56Sopenharmony_ci # This failed in Python 2.2 through 2.2.2 and in 2.3a1 407db96d56Sopenharmony_ci self.assertEqual(-0x80000000, -2147483648) 417db96d56Sopenharmony_ci self.assertEqual(-0xffffffff, -4294967295) 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci # Positive constants 447db96d56Sopenharmony_ci self.assertEqual(0x8000000000000000, 9223372036854775808) 457db96d56Sopenharmony_ci self.assertEqual(0xffffffffffffffff, 18446744073709551615) 467db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 477db96d56Sopenharmony_ci self.assertEqual(-(0x8000000000000000), -9223372036854775808) 487db96d56Sopenharmony_ci self.assertEqual(-(0xffffffffffffffff), -18446744073709551615) 497db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 507db96d56Sopenharmony_ci # This failed in Python 2.2 through 2.2.2 and in 2.3a1 517db96d56Sopenharmony_ci self.assertEqual(-0x8000000000000000, -9223372036854775808) 527db96d56Sopenharmony_ci self.assertEqual(-0xffffffffffffffff, -18446744073709551615) 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci def test_oct_baseline(self): 557db96d56Sopenharmony_ci # A few upper/lowercase tests 567db96d56Sopenharmony_ci self.assertEqual(0o0, 0O0) 577db96d56Sopenharmony_ci self.assertEqual(0o1, 0O1) 587db96d56Sopenharmony_ci self.assertEqual(0o1234567, 0O1234567) 597db96d56Sopenharmony_ci # Baseline tests 607db96d56Sopenharmony_ci self.assertEqual(0o0, 0) 617db96d56Sopenharmony_ci self.assertEqual(0o20, 16) 627db96d56Sopenharmony_ci self.assertEqual(0o17777777777, 2147483647) 637db96d56Sopenharmony_ci self.assertEqual(0o777777777777777777777, 9223372036854775807) 647db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 657db96d56Sopenharmony_ci self.assertEqual(-(0o0), 0) 667db96d56Sopenharmony_ci self.assertEqual(-(0o20), -16) 677db96d56Sopenharmony_ci self.assertEqual(-(0o17777777777), -2147483647) 687db96d56Sopenharmony_ci self.assertEqual(-(0o777777777777777777777), -9223372036854775807) 697db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 707db96d56Sopenharmony_ci self.assertEqual(-0o0, 0) 717db96d56Sopenharmony_ci self.assertEqual(-0o20, -16) 727db96d56Sopenharmony_ci self.assertEqual(-0o17777777777, -2147483647) 737db96d56Sopenharmony_ci self.assertEqual(-0o777777777777777777777, -9223372036854775807) 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci def test_oct_unsigned(self): 767db96d56Sopenharmony_ci # Positive constants 777db96d56Sopenharmony_ci self.assertEqual(0o20000000000, 2147483648) 787db96d56Sopenharmony_ci self.assertEqual(0o37777777777, 4294967295) 797db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 807db96d56Sopenharmony_ci self.assertEqual(-(0o20000000000), -2147483648) 817db96d56Sopenharmony_ci self.assertEqual(-(0o37777777777), -4294967295) 827db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 837db96d56Sopenharmony_ci # This failed in Python 2.2 through 2.2.2 and in 2.3a1 847db96d56Sopenharmony_ci self.assertEqual(-0o20000000000, -2147483648) 857db96d56Sopenharmony_ci self.assertEqual(-0o37777777777, -4294967295) 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci # Positive constants 887db96d56Sopenharmony_ci self.assertEqual(0o1000000000000000000000, 9223372036854775808) 897db96d56Sopenharmony_ci self.assertEqual(0o1777777777777777777777, 18446744073709551615) 907db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 917db96d56Sopenharmony_ci self.assertEqual(-(0o1000000000000000000000), -9223372036854775808) 927db96d56Sopenharmony_ci self.assertEqual(-(0o1777777777777777777777), -18446744073709551615) 937db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 947db96d56Sopenharmony_ci # This failed in Python 2.2 through 2.2.2 and in 2.3a1 957db96d56Sopenharmony_ci self.assertEqual(-0o1000000000000000000000, -9223372036854775808) 967db96d56Sopenharmony_ci self.assertEqual(-0o1777777777777777777777, -18446744073709551615) 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci def test_bin_baseline(self): 997db96d56Sopenharmony_ci # A few upper/lowercase tests 1007db96d56Sopenharmony_ci self.assertEqual(0b0, 0B0) 1017db96d56Sopenharmony_ci self.assertEqual(0b1, 0B1) 1027db96d56Sopenharmony_ci self.assertEqual(0b10101010101, 0B10101010101) 1037db96d56Sopenharmony_ci # Baseline tests 1047db96d56Sopenharmony_ci self.assertEqual(0b0, 0) 1057db96d56Sopenharmony_ci self.assertEqual(0b10000, 16) 1067db96d56Sopenharmony_ci self.assertEqual(0b1111111111111111111111111111111, 2147483647) 1077db96d56Sopenharmony_ci self.assertEqual(0b111111111111111111111111111111111111111111111111111111111111111, 9223372036854775807) 1087db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 1097db96d56Sopenharmony_ci self.assertEqual(-(0b0), 0) 1107db96d56Sopenharmony_ci self.assertEqual(-(0b10000), -16) 1117db96d56Sopenharmony_ci self.assertEqual(-(0b1111111111111111111111111111111), -2147483647) 1127db96d56Sopenharmony_ci self.assertEqual(-(0b111111111111111111111111111111111111111111111111111111111111111), -9223372036854775807) 1137db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 1147db96d56Sopenharmony_ci self.assertEqual(-0b0, 0) 1157db96d56Sopenharmony_ci self.assertEqual(-0b10000, -16) 1167db96d56Sopenharmony_ci self.assertEqual(-0b1111111111111111111111111111111, -2147483647) 1177db96d56Sopenharmony_ci self.assertEqual(-0b111111111111111111111111111111111111111111111111111111111111111, -9223372036854775807) 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci def test_bin_unsigned(self): 1207db96d56Sopenharmony_ci # Positive constants 1217db96d56Sopenharmony_ci self.assertEqual(0b10000000000000000000000000000000, 2147483648) 1227db96d56Sopenharmony_ci self.assertEqual(0b11111111111111111111111111111111, 4294967295) 1237db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 1247db96d56Sopenharmony_ci self.assertEqual(-(0b10000000000000000000000000000000), -2147483648) 1257db96d56Sopenharmony_ci self.assertEqual(-(0b11111111111111111111111111111111), -4294967295) 1267db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 1277db96d56Sopenharmony_ci # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1287db96d56Sopenharmony_ci self.assertEqual(-0b10000000000000000000000000000000, -2147483648) 1297db96d56Sopenharmony_ci self.assertEqual(-0b11111111111111111111111111111111, -4294967295) 1307db96d56Sopenharmony_ci 1317db96d56Sopenharmony_ci # Positive constants 1327db96d56Sopenharmony_ci self.assertEqual(0b1000000000000000000000000000000000000000000000000000000000000000, 9223372036854775808) 1337db96d56Sopenharmony_ci self.assertEqual(0b1111111111111111111111111111111111111111111111111111111111111111, 18446744073709551615) 1347db96d56Sopenharmony_ci # Ditto with a minus sign and parentheses 1357db96d56Sopenharmony_ci self.assertEqual(-(0b1000000000000000000000000000000000000000000000000000000000000000), -9223372036854775808) 1367db96d56Sopenharmony_ci self.assertEqual(-(0b1111111111111111111111111111111111111111111111111111111111111111), -18446744073709551615) 1377db96d56Sopenharmony_ci # Ditto with a minus sign and NO parentheses 1387db96d56Sopenharmony_ci # This failed in Python 2.2 through 2.2.2 and in 2.3a1 1397db96d56Sopenharmony_ci self.assertEqual(-0b1000000000000000000000000000000000000000000000000000000000000000, -9223372036854775808) 1407db96d56Sopenharmony_ci self.assertEqual(-0b1111111111111111111111111111111111111111111111111111111111111111, -18446744073709551615) 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ciif __name__ == "__main__": 1437db96d56Sopenharmony_ci unittest.main() 144