01_int.py 1.5 KB

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