tests/basics: Add test for creating small-ints in nan-box builds.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
bb2bd071f7
commit
7cd166ff92
|
@ -0,0 +1,42 @@
|
|||
# Test creating small integers without heap allocation in nan-boxing mode.
|
||||
|
||||
import micropython
|
||||
|
||||
try:
|
||||
# Test for nan-box build by allocating a float while heap is locked.
|
||||
# This should pass on nan-box builds.
|
||||
micropython.heap_lock()
|
||||
float(123)
|
||||
micropython.heap_unlock()
|
||||
except:
|
||||
print("SKIP")
|
||||
raise SystemExit
|
||||
|
||||
# Check that nan-boxing uses 64-bit floats (eg it's not object representation C).
|
||||
if float("1e100") == float("inf"):
|
||||
print("SKIP")
|
||||
raise SystemExit
|
||||
|
||||
micropython.heap_lock()
|
||||
print(int("0x80000000"))
|
||||
micropython.heap_unlock()
|
||||
|
||||
# This is the most positive small integer.
|
||||
micropython.heap_lock()
|
||||
print(int("0x3fffffffffff"))
|
||||
micropython.heap_unlock()
|
||||
|
||||
# This is the most negative small integer.
|
||||
micropython.heap_lock()
|
||||
print(int("-0x3fffffffffff") - 1)
|
||||
micropython.heap_unlock()
|
||||
|
||||
x = 1
|
||||
micropython.heap_lock()
|
||||
print((x << 31) + 1)
|
||||
micropython.heap_unlock()
|
||||
|
||||
x = 1
|
||||
micropython.heap_lock()
|
||||
print((x << 45) + 1)
|
||||
micropython.heap_unlock()
|
|
@ -0,0 +1,5 @@
|
|||
2147483648
|
||||
70368744177663
|
||||
-70368744177664
|
||||
2147483649
|
||||
35184372088833
|
Loading…
Reference in New Issue