summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/basics/int_big_to_small.py11
-rw-r--r--tests/basics/int_big_to_small_int29.py22
-rw-r--r--tests/basics/int_big_to_small_int29.py.exp25
3 files changed, 58 insertions, 0 deletions
diff --git a/tests/basics/int_big_to_small.py b/tests/basics/int_big_to_small.py
index 64280d0c6..c92d263fc 100644
--- a/tests/basics/int_big_to_small.py
+++ b/tests/basics/int_big_to_small.py
@@ -5,6 +5,17 @@ except:
print("SKIP")
raise SystemExit
+# Skip this test on "REPR B" where (1<<29 + 1) is not a small int.
+k = 1 << 29
+micropython.heap_lock()
+try:
+ k = k + 1
+except MemoryError:
+ print("SKIP")
+ raise SystemExit
+finally:
+ micropython.heap_unlock()
+
# All less than small int max.
for d in (0, 27, 1<<29, -1861, -(1<<29)):
i = 1<<70
diff --git a/tests/basics/int_big_to_small_int29.py b/tests/basics/int_big_to_small_int29.py
new file mode 100644
index 000000000..438a74d2b
--- /dev/null
+++ b/tests/basics/int_big_to_small_int29.py
@@ -0,0 +1,22 @@
+try:
+ import micropython
+ micropython.heap_lock
+except:
+ print("SKIP")
+ raise SystemExit
+
+# All less than small int max.
+for d in (0, 27, 1<<28, -1861, -(1<<28)):
+ i = 1<<70
+ print(i)
+ j = (1<<70) + d
+ print(j)
+ # k should now be a small int.
+ k = j - i
+ print(k)
+
+ # Now verify that working with k doesn't allocate (i.e. it's a small int).
+ micropython.heap_lock()
+ print(k + 20)
+ print(k // 20)
+ micropython.heap_unlock()
diff --git a/tests/basics/int_big_to_small_int29.py.exp b/tests/basics/int_big_to_small_int29.py.exp
new file mode 100644
index 000000000..092010192
--- /dev/null
+++ b/tests/basics/int_big_to_small_int29.py.exp
@@ -0,0 +1,25 @@
+1180591620717411303424
+1180591620717411303424
+0
+20
+0
+1180591620717411303424
+1180591620717411303451
+27
+47
+1
+1180591620717411303424
+1180591620717679738880
+268435456
+268435476
+13421772
+1180591620717411303424
+1180591620717411301563
+-1861
+-1841
+-94
+1180591620717411303424
+1180591620717142867968
+-268435456
+-268435436
+-13421773