01_int.py 1.6 KB

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