int_big_error.py 704 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # test errors operating on bignum
  2. i = 1 << 65
  3. try:
  4. i << -1
  5. except ValueError:
  6. print("ValueError")
  7. try:
  8. len(i)
  9. except TypeError:
  10. print("TypeError")
  11. try:
  12. 1 in i
  13. except TypeError:
  14. print("TypeError")
  15. # overflow because rhs of >> is being converted to machine int
  16. try:
  17. 1 >> i
  18. except OverflowError:
  19. print('OverflowError')
  20. # to test conversion of negative mpz to machine int
  21. # (we know << will convert to machine int, even though it fails to do the shift)
  22. try:
  23. i << (-(i >> 40))
  24. except ValueError:
  25. print('ValueError')
  26. try:
  27. i // 0
  28. except ZeroDivisionError:
  29. print('ZeroDivisionError')
  30. try:
  31. i % 0
  32. except ZeroDivisionError:
  33. print('ZeroDivisionError')