01_int.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # test int literals
  2. assert 0xffff == 65535
  3. assert 0xAAFFFF == 11206655
  4. assert 0x7fffffff == 2147483647
  5. # test 64-bit
  6. assert 2**60-1 + 546 - 0xfffffffffffff == 1148417904979477026
  7. # test oct literals
  8. assert 0o1234 == 668
  9. assert 0o17777777777 == 2147483647
  10. # test binary literals
  11. assert 0b10010 == 18
  12. assert 0b11111111111111111111111111111111 == 4294967295
  13. # test == != >= <= < >
  14. assert -1 == -1
  15. assert -1 != 1
  16. assert -1 >= -1
  17. assert -1 <= -1
  18. assert -1 < 1
  19. assert -1 > -2
  20. # test + - * % ** //
  21. assert -1 + 1 == 0
  22. assert -1 - 1 == -2
  23. assert 4 * -1 == -4
  24. assert 5 % 2 == 1
  25. assert 2 ** 3 == 8
  26. assert 4 // 2 == 2
  27. assert 5 // 2 == 2
  28. # test += -= *= //=
  29. x = 3
  30. x += 1
  31. assert x == 4
  32. x -= 1
  33. assert x == 3
  34. x *= 2
  35. assert x == 6
  36. x //= 2
  37. assert x == 3
  38. # test __str__, __repr__, __json__
  39. assert str(1) == '1'
  40. assert repr(1) == '1'
  41. assert (1).__json__() == '1'
  42. # test int()
  43. assert int(1) == 1
  44. assert int(1.0) == 1
  45. assert int(1.1) == 1
  46. assert int(1.9) == 1
  47. assert int(-1.9) == -1
  48. assert int(1.5) == 1
  49. assert int(-1.5) == -1
  50. assert int("123") == 123
  51. # test >> << & | ^
  52. assert 12 >> 1 == 6
  53. assert 12 << 1 == 24
  54. assert 12 & 1 == 0
  55. assert 12 | 1 == 13
  56. assert 12 ^ 1 == 13
  57. # test high precision int pow
  58. assert 7**21 == 558545864083284007
  59. assert 2**60 == 1152921504606846976
  60. assert -2**60 == -1152921504606846976
  61. assert 4**13 == 67108864
  62. assert (-4)**13 == -67108864
  63. assert ~3 == -4
  64. assert ~-3 == 2
  65. assert ~0 == -1
  66. try:
  67. 1 // 0
  68. exit(1)
  69. except ZeroDivisionError:
  70. pass
  71. try:
  72. 1 % 0
  73. exit(1)
  74. except ZeroDivisionError:
  75. pass
  76. try:
  77. 2**60 // 0
  78. exit(1)
  79. except ZeroDivisionError:
  80. pass
  81. try:
  82. 2**60 % 0
  83. exit(1)
  84. except ZeroDivisionError:
  85. pass
  86. try:
  87. divmod(1, 0)
  88. exit(1)
  89. except ZeroDivisionError:
  90. pass
  91. try:
  92. divmod(2**60, 0)
  93. exit(1)
  94. except ZeroDivisionError:
  95. pass