aboutsummaryrefslogtreecommitdiff
path: root/tests/basics
diff options
context:
space:
mode:
authorDamien George2015-10-01 18:49:37 +0100
committerDamien George2015-10-01 18:49:37 +0100
commita81539db25d443826e5247fefda8ae73bad64056 (patch)
treea4ff682df829cd98f1e46206d3bc3e08a560526b /tests/basics
parent2f4e8511cd602a6110b3636c316b5cac21181bf3 (diff)
tests: Add further tests for mpz code.
Diffstat (limited to 'tests/basics')
-rw-r--r--tests/basics/builtin_hash.py1
-rw-r--r--tests/basics/int_big_error.py13
-rw-r--r--tests/basics/int_big_lshift.py3
-rw-r--r--tests/basics/int_big_pow.py8
-rw-r--r--tests/basics/int_big_rshift.py3
-rw-r--r--tests/basics/struct1.py3
6 files changed, 31 insertions, 0 deletions
diff --git a/tests/basics/builtin_hash.py b/tests/basics/builtin_hash.py
index 76fb18304..c9731a3b5 100644
--- a/tests/basics/builtin_hash.py
+++ b/tests/basics/builtin_hash.py
@@ -4,6 +4,7 @@ print(hash(False))
print(hash(True))
print({():1}) # hash tuple
print({1 << 66:1}) # hash big int
+print({-(1 << 66):2}) # hash negative big int
print(hash in {hash:1}) # hash function
try:
diff --git a/tests/basics/int_big_error.py b/tests/basics/int_big_error.py
index 62ab936f9..b7875ee87 100644
--- a/tests/basics/int_big_error.py
+++ b/tests/basics/int_big_error.py
@@ -16,3 +16,16 @@ try:
1 in i
except TypeError:
print("TypeError")
+
+# overflow because rhs of >> is being converted to machine int
+try:
+ 1 >> i
+except OverflowError:
+ print('OverflowError')
+
+# to test conversion of negative mpz to machine int
+# (we know << will convert to machine int, even though it fails to do the shift)
+try:
+ i << (-(i >> 40))
+except ValueError:
+ print('ValueError')
diff --git a/tests/basics/int_big_lshift.py b/tests/basics/int_big_lshift.py
index af1d97504..14db90bff 100644
--- a/tests/basics/int_big_lshift.py
+++ b/tests/basics/int_big_lshift.py
@@ -15,3 +15,6 @@ for i in range(8):
print(-100000000000000000000000000002 >> i)
print(-100000000000000000000000000003 >> i)
print(-100000000000000000000000000004 >> i)
+
+# shl by zero
+print((1<<70) << 0)
diff --git a/tests/basics/int_big_pow.py b/tests/basics/int_big_pow.py
new file mode 100644
index 000000000..0f75e3150
--- /dev/null
+++ b/tests/basics/int_big_pow.py
@@ -0,0 +1,8 @@
+# test bignum power
+
+i = 1 << 65
+
+print(0 ** i)
+print(i ** 0)
+print(i ** 1)
+print(i ** 2)
diff --git a/tests/basics/int_big_rshift.py b/tests/basics/int_big_rshift.py
index d11f8f63e..6055e95b9 100644
--- a/tests/basics/int_big_rshift.py
+++ b/tests/basics/int_big_rshift.py
@@ -1,3 +1,6 @@
i = 123456789012345678901234567890
print(i >> 1)
print(i >> 1000)
+
+# result needs rounding up
+print(-(1<<70) >> 80)
diff --git a/tests/basics/struct1.py b/tests/basics/struct1.py
index 686251c44..1a32c482c 100644
--- a/tests/basics/struct1.py
+++ b/tests/basics/struct1.py
@@ -35,8 +35,11 @@ print(struct.pack("<I", 0xffffffff))
# long long ints
print(struct.pack("<Q", 2**64 - 1))
+print(struct.pack(">Q", 2**64 - 1))
print(struct.pack("<Q", 0xffffffffffffffff))
+print(struct.pack(">Q", 0xffffffffffffffff))
print(struct.pack("<q", -1))
+print(struct.pack(">q", -1))
print(struct.pack("<Q", 1234567890123456789))
print(struct.pack("<q", -1234567890123456789))
print(struct.pack(">Q", 1234567890123456789))