test_int_literal.py 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. """Test correct treatment of hex/oct constants.
  2. This is complex because of changes due to PEP 237.
  3. """
  4. import unittest
  5. class TestHexOctBin(unittest.TestCase):
  6. def test_hex_baseline(self):
  7. # A few upper/lowercase tests
  8. self.assertEqual(0x0, 0X0)
  9. self.assertEqual(0x1, 0X1)
  10. self.assertEqual(0x123456789abcdef, 0X123456789abcdef)
  11. # Baseline tests
  12. self.assertEqual(0x0, 0)
  13. self.assertEqual(0x10, 16)
  14. self.assertEqual(0x7fffffff, 2147483647)
  15. self.assertEqual(0x7fffffffffffffff, 9223372036854775807)
  16. # Ditto with a minus sign and parentheses
  17. self.assertEqual(-(0x0), 0)
  18. self.assertEqual(-(0x10), -16)
  19. self.assertEqual(-(0x7fffffff), -2147483647)
  20. self.assertEqual(-(0x7fffffffffffffff), -9223372036854775807)
  21. # Ditto with a minus sign and NO parentheses
  22. self.assertEqual(-0x0, 0)
  23. self.assertEqual(-0x10, -16)
  24. self.assertEqual(-0x7fffffff, -2147483647)
  25. self.assertEqual(-0x7fffffffffffffff, -9223372036854775807)
  26. def test_hex_unsigned(self):
  27. # Positive constants
  28. self.assertEqual(0x80000000, 2147483648)
  29. self.assertEqual(0xffffffff, 4294967295)
  30. # Ditto with a minus sign and parentheses
  31. self.assertEqual(-(0x80000000), -2147483648)
  32. self.assertEqual(-(0xffffffff), -4294967295)
  33. # Ditto with a minus sign and NO parentheses
  34. # This failed in Python 2.2 through 2.2.2 and in 2.3a1
  35. self.assertEqual(-0x80000000, -2147483648)
  36. self.assertEqual(-0xffffffff, -4294967295)
  37. # Positive constants
  38. self.assertEqual(0x8000000000000000, 9223372036854775808)
  39. self.assertEqual(0xffffffffffffffff, 18446744073709551615)
  40. # Ditto with a minus sign and parentheses
  41. self.assertEqual(-(0x8000000000000000), -9223372036854775808)
  42. self.assertEqual(-(0xffffffffffffffff), -18446744073709551615)
  43. # Ditto with a minus sign and NO parentheses
  44. # This failed in Python 2.2 through 2.2.2 and in 2.3a1
  45. self.assertEqual(-0x8000000000000000, -9223372036854775808)
  46. self.assertEqual(-0xffffffffffffffff, -18446744073709551615)
  47. def test_oct_baseline(self):
  48. # A few upper/lowercase tests
  49. self.assertEqual(0o0, 0O0)
  50. self.assertEqual(0o1, 0O1)
  51. self.assertEqual(0o1234567, 0O1234567)
  52. # Baseline tests
  53. self.assertEqual(0o0, 0)
  54. self.assertEqual(0o20, 16)
  55. self.assertEqual(0o17777777777, 2147483647)
  56. self.assertEqual(0o777777777777777777777, 9223372036854775807)
  57. # Ditto with a minus sign and parentheses
  58. self.assertEqual(-(0o0), 0)
  59. self.assertEqual(-(0o20), -16)
  60. self.assertEqual(-(0o17777777777), -2147483647)
  61. self.assertEqual(-(0o777777777777777777777), -9223372036854775807)
  62. # Ditto with a minus sign and NO parentheses
  63. self.assertEqual(-0o0, 0)
  64. self.assertEqual(-0o20, -16)
  65. self.assertEqual(-0o17777777777, -2147483647)
  66. self.assertEqual(-0o777777777777777777777, -9223372036854775807)
  67. def test_oct_unsigned(self):
  68. # Positive constants
  69. self.assertEqual(0o20000000000, 2147483648)
  70. self.assertEqual(0o37777777777, 4294967295)
  71. # Ditto with a minus sign and parentheses
  72. self.assertEqual(-(0o20000000000), -2147483648)
  73. self.assertEqual(-(0o37777777777), -4294967295)
  74. # Ditto with a minus sign and NO parentheses
  75. # This failed in Python 2.2 through 2.2.2 and in 2.3a1
  76. self.assertEqual(-0o20000000000, -2147483648)
  77. self.assertEqual(-0o37777777777, -4294967295)
  78. # Positive constants
  79. self.assertEqual(0o1000000000000000000000, 9223372036854775808)
  80. self.assertEqual(0o1777777777777777777777, 18446744073709551615)
  81. # Ditto with a minus sign and parentheses
  82. self.assertEqual(-(0o1000000000000000000000), -9223372036854775808)
  83. self.assertEqual(-(0o1777777777777777777777), -18446744073709551615)
  84. # Ditto with a minus sign and NO parentheses
  85. # This failed in Python 2.2 through 2.2.2 and in 2.3a1
  86. self.assertEqual(-0o1000000000000000000000, -9223372036854775808)
  87. self.assertEqual(-0o1777777777777777777777, -18446744073709551615)
  88. def test_bin_baseline(self):
  89. # A few upper/lowercase tests
  90. self.assertEqual(0b0, 0B0)
  91. self.assertEqual(0b1, 0B1)
  92. self.assertEqual(0b10101010101, 0B10101010101)
  93. # Baseline tests
  94. self.assertEqual(0b0, 0)
  95. self.assertEqual(0b10000, 16)
  96. self.assertEqual(0b1111111111111111111111111111111, 2147483647)
  97. self.assertEqual(0b111111111111111111111111111111111111111111111111111111111111111, 9223372036854775807)
  98. # Ditto with a minus sign and parentheses
  99. self.assertEqual(-(0b0), 0)
  100. self.assertEqual(-(0b10000), -16)
  101. self.assertEqual(-(0b1111111111111111111111111111111), -2147483647)
  102. self.assertEqual(-(0b111111111111111111111111111111111111111111111111111111111111111), -9223372036854775807)
  103. # Ditto with a minus sign and NO parentheses
  104. self.assertEqual(-0b0, 0)
  105. self.assertEqual(-0b10000, -16)
  106. self.assertEqual(-0b1111111111111111111111111111111, -2147483647)
  107. self.assertEqual(-0b111111111111111111111111111111111111111111111111111111111111111, -9223372036854775807)
  108. def test_bin_unsigned(self):
  109. # Positive constants
  110. self.assertEqual(0b10000000000000000000000000000000, 2147483648)
  111. self.assertEqual(0b11111111111111111111111111111111, 4294967295)
  112. # Ditto with a minus sign and parentheses
  113. self.assertEqual(-(0b10000000000000000000000000000000), -2147483648)
  114. self.assertEqual(-(0b11111111111111111111111111111111), -4294967295)
  115. # Ditto with a minus sign and NO parentheses
  116. # This failed in Python 2.2 through 2.2.2 and in 2.3a1
  117. self.assertEqual(-0b10000000000000000000000000000000, -2147483648)
  118. self.assertEqual(-0b11111111111111111111111111111111, -4294967295)
  119. # Positive constants
  120. self.assertEqual(0b1000000000000000000000000000000000000000000000000000000000000000, 9223372036854775808)
  121. self.assertEqual(0b1111111111111111111111111111111111111111111111111111111111111111, 18446744073709551615)
  122. # Ditto with a minus sign and parentheses
  123. self.assertEqual(-(0b1000000000000000000000000000000000000000000000000000000000000000), -9223372036854775808)
  124. self.assertEqual(-(0b1111111111111111111111111111111111111111111111111111111111111111), -18446744073709551615)
  125. # Ditto with a minus sign and NO parentheses
  126. # This failed in Python 2.2 through 2.2.2 and in 2.3a1
  127. self.assertEqual(-0b1000000000000000000000000000000000000000000000000000000000000000, -9223372036854775808)
  128. self.assertEqual(-0b1111111111111111111111111111111111111111111111111111111111111111, -18446744073709551615)
  129. if __name__ == "__main__":
  130. unittest.main()