01_int.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. # test int literals
  2. assert 0xffff == 65535
  3. assert 0xAAFFFF == 11206655
  4. assert 0x7fffffff == 2147483647
  5. assert -0xffff == -65535
  6. assert -0xAAFFFF == -11206655
  7. assert -0x7fffffff == -2147483647
  8. # test 64-bit
  9. assert 2**60-1 + 546 - 0xfffffffffffff == 1148417904979477026
  10. # test oct literals
  11. assert 0o1234 == 668
  12. assert 0o17777777777 == 2147483647
  13. assert -0o1234 == -668
  14. assert -0o17777777777 == -2147483647
  15. # test binary literals
  16. assert 0b10010 == 18
  17. assert -0b10010 == -18
  18. assert 0b11111111111111111111111111111111 == 4294967295
  19. assert -0b11111 == -31
  20. # test == != >= <= < >
  21. assert -1 == -1
  22. assert -1 != 1
  23. assert -1 >= -1
  24. assert -1 <= -1
  25. assert -1 < 1
  26. assert -1 > -2
  27. # test + - * % ** //
  28. assert -1 + 1 == 0
  29. assert -1 - 1 == -2
  30. assert 4 * -1 == -4
  31. assert 5 % 2 == 1
  32. assert 2 ** 3 == 8
  33. assert 4 // 2 == 2
  34. assert 5 // 2 == 2
  35. # test += -= *= //=
  36. x = 3
  37. x += 1
  38. assert x == 4
  39. x -= 1
  40. assert x == 3
  41. x *= 2
  42. assert x == 6
  43. x //= 2
  44. assert x == 3
  45. # test __str__, __repr__
  46. assert str(1) == '1'
  47. assert repr(1) == '1'
  48. # test bit_length
  49. assert (1).bit_length() == 1
  50. assert (2).bit_length() == 2
  51. assert (3).bit_length() == 2
  52. assert (-1).bit_length() == 1
  53. assert (-2).bit_length() == 2
  54. assert (-3).bit_length() == 2
  55. assert (123123123123123).bit_length() == 47
  56. assert (-3123123123).bit_length() == 32
  57. # test int()
  58. assert int() == 0
  59. assert int(True) == 1
  60. assert int(False) == 0
  61. assert int(1) == 1
  62. assert int(1.0) == 1
  63. assert int(1.1) == 1
  64. assert int(1.9) == 1
  65. assert int(-1.9) == -1
  66. assert int(1.5) == 1
  67. assert int(-1.5) == -1
  68. assert int("123") == 123
  69. assert int("0x123", 16) == 291
  70. assert int("0o123", 8) == 83
  71. assert int("-0x123", 16) == -291
  72. assert int("-0o123", 8) == -83
  73. assert int("-123") == -123
  74. assert int("+123") == 123
  75. # test >> << & | ^
  76. assert 12 >> 1 == 6
  77. assert 12 << 1 == 24
  78. assert 12 & 1 == 0
  79. assert 12 | 1 == 13
  80. assert 12 ^ 1 == 13
  81. # test high precision int pow
  82. assert 7**21 == 558545864083284007
  83. assert 2**60 == 1152921504606846976
  84. assert -2**60 == -1152921504606846976
  85. assert 4**13 == 67108864
  86. assert (-4)**13 == -67108864
  87. assert ~3 == -4
  88. assert ~-3 == 2
  89. assert ~0 == -1
  90. try:
  91. 1 // 0
  92. exit(1)
  93. except ZeroDivisionError:
  94. pass
  95. try:
  96. 1 % 0
  97. exit(1)
  98. except ZeroDivisionError:
  99. pass
  100. try:
  101. 2**60 // 0
  102. exit(1)
  103. except ZeroDivisionError:
  104. pass
  105. try:
  106. 2**60 % 0
  107. exit(1)
  108. except ZeroDivisionError:
  109. pass
  110. try:
  111. divmod(1, 0)
  112. exit(1)
  113. except ZeroDivisionError:
  114. pass
  115. try:
  116. divmod(2**60, 0)
  117. exit(1)
  118. except ZeroDivisionError:
  119. pass
  120. assert not 1 < 2 > 3
  121. try:
  122. x = eval("231231312312312312312312312312312312314354657553423345632")
  123. print(f"eval should fail, but got {x!r}")
  124. exit(1)
  125. except SyntaxError:
  126. pass
  127. assert int("-5") == -5
  128. assert int("-4") == -4
  129. assert int("-3") == -3
  130. assert int("-2") == -2
  131. assert int("-1") == -1
  132. assert int("0") == 0
  133. assert int("1") == 1
  134. assert int("2") == 2
  135. assert int("3") == 3
  136. assert int("4") == 4
  137. assert int("5") == 5
  138. assert int("6") == 6
  139. assert int("7") == 7
  140. assert int("8") == 8
  141. assert int("9") == 9
  142. assert int("10") == 10
  143. assert int("11") == 11
  144. assert int("12") == 12
  145. assert int("13") == 13
  146. assert int("14") == 14
  147. assert int("15") == 15
  148. assert int("16") == 16