30 lines
860 B
Python
30 lines
860 B
Python
from __future__ import print_function
|
|
import gmpy2
|
|
|
|
def test(repeat=1):
|
|
"""Test gmpy2.pack and gmpy2.unpack."""
|
|
r = gmpy2.random_state(42)
|
|
try:
|
|
for counter in range(repeat):
|
|
for t in (10, 30, 60, 500, 1000, 2000, 10000, 100000):
|
|
v = gmpy2.mpz_rrandomb(r, t)
|
|
for b in range(1, max(1001,t)):
|
|
temp = gmpy2.unpack(v, b)
|
|
u = gmpy2.pack(temp, b)
|
|
if u != v:
|
|
raise ValueError
|
|
return True
|
|
except ValueError:
|
|
return False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
try:
|
|
repeat = abs(int(sys.argv[1]))
|
|
except:
|
|
repeat = 1
|
|
print("Testing pack/unpack for a large number of values.")
|
|
print("This test may take a few minutes.")
|
|
test(repeat)
|
|
print("Test successful.")
|