summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Gatti <a.gatti@frob.it>2025-07-24 23:48:01 +0200
committerDamien George <damien@micropython.org>2025-08-11 16:46:15 +1000
commitb1d5c656de3f11fc1729f165c8d9709594ccbfb6 (patch)
tree3b8f0f448aa53fcef222030d1da5055b7f9f653d
parentf10707febb41e042e929efaf9ee4a66b847a68d4 (diff)
tests/micropython: Remove big ints dependence for viper boundary tests.
This commit provides an implementation for viper boundary tests that can work even without big int support. Since it uses a fixed-size buffer to hold values to work with, this should work on any platform as long as its integers are at least 32 bits wide, regardless its configuration on how big integers can get. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
-rw-r--r--tests/micropython/viper_ptr16_store_boundary.py (renamed from tests/micropython/viper_ptr16_store_boundary_intbig.py)43
-rw-r--r--tests/micropython/viper_ptr16_store_boundary.py.exp (renamed from tests/micropython/viper_ptr16_store_boundary_intbig.py.exp)0
-rw-r--r--tests/micropython/viper_ptr32_store_boundary.py (renamed from tests/micropython/viper_ptr32_store_boundary_intbig.py)42
-rw-r--r--tests/micropython/viper_ptr32_store_boundary.py.exp (renamed from tests/micropython/viper_ptr32_store_boundary_intbig.py.exp)0
-rw-r--r--tests/micropython/viper_ptr8_store_boundary.py (renamed from tests/micropython/viper_ptr8_store_boundary_intbig.py)42
-rw-r--r--tests/micropython/viper_ptr8_store_boundary.py.exp (renamed from tests/micropython/viper_ptr8_store_boundary_intbig.py.exp)0
6 files changed, 67 insertions, 60 deletions
diff --git a/tests/micropython/viper_ptr16_store_boundary_intbig.py b/tests/micropython/viper_ptr16_store_boundary.py
index 2193eddae..3501a0568 100644
--- a/tests/micropython/viper_ptr16_store_boundary_intbig.py
+++ b/tests/micropython/viper_ptr16_store_boundary.py
@@ -15,6 +15,23 @@ SIZE = 2
MASK = (1 << (8 * SIZE)) - 1
+next_int = 1
+test_buffer = bytearray(SIZE)
+
+
+def next_value() -> uint:
+ global next_int
+ global test_buffer
+ for index in range(1, SIZE):
+ test_buffer[index - 1] = test_buffer[index]
+ test_buffer[SIZE - 1] = next_int
+ next_int += 1
+ output = 0
+ for byte in test_buffer:
+ output = (output << 8) | byte
+ return output & MASK
+
+
@micropython.viper
def set_index(dest: ptr16, i: int, val: uint):
saved = dest
@@ -27,8 +44,6 @@ def get_index(src, i):
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
-next = 1
-val = 0
for bit in BIT_THRESHOLDS:
print("---", bit)
pre, idx, post = (
@@ -36,22 +51,10 @@ for bit in BIT_THRESHOLDS:
(((1 << bit) - (1 * SIZE)) // SIZE),
((1 << bit) // SIZE),
)
- val = (val << 8) + next
- next += 1
- set_index(buffer, pre, val & MASK)
- val = (val << 8) + next
- next += 1
- set_index(buffer, idx, val & MASK)
- val = (val << 8) + next
- next += 1
- set_index(buffer, post, val & MASK)
- val = (val << 8) + next
- next += 1
+ set_index(buffer, pre, next_value())
+ set_index(buffer, idx, next_value())
+ set_index(buffer, post, next_value())
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
- exec(SET_TEMPLATE.format(off=pre, val=val & MASK))
- val = (val << 8) + next
- next += 1
- exec(SET_TEMPLATE.format(off=idx, val=val & MASK))
- val = (val << 8) + next
- next += 1
- exec(SET_TEMPLATE.format(off=post, val=val & MASK))
+ exec(SET_TEMPLATE.format(off=pre, val=next_value()))
+ exec(SET_TEMPLATE.format(off=idx, val=next_value()))
+ exec(SET_TEMPLATE.format(off=post, val=next_value()))
diff --git a/tests/micropython/viper_ptr16_store_boundary_intbig.py.exp b/tests/micropython/viper_ptr16_store_boundary.py.exp
index 1c084da2d..1c084da2d 100644
--- a/tests/micropython/viper_ptr16_store_boundary_intbig.py.exp
+++ b/tests/micropython/viper_ptr16_store_boundary.py.exp
diff --git a/tests/micropython/viper_ptr32_store_boundary_intbig.py b/tests/micropython/viper_ptr32_store_boundary.py
index b44f31b00..8c207278e 100644
--- a/tests/micropython/viper_ptr32_store_boundary_intbig.py
+++ b/tests/micropython/viper_ptr32_store_boundary.py
@@ -14,6 +14,22 @@ BIT_THRESHOLDS = (5, 8, 11, 12)
SIZE = 4
MASK = (1 << (8 * SIZE)) - 1
+next_int = 1
+test_buffer = bytearray(SIZE)
+
+
+def next_value() -> uint:
+ global next_int
+ global test_buffer
+ for index in range(1, SIZE):
+ test_buffer[index - 1] = test_buffer[index]
+ test_buffer[SIZE - 1] = next_int
+ next_int += 1
+ output = 0
+ for byte in test_buffer:
+ output = (output << 8) | byte
+ return output & MASK
+
@micropython.viper
def set_index(dest: ptr32, i: int, val: uint):
@@ -32,8 +48,6 @@ def get_index(src, i):
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
-next = 1
-val = 0
for bit in BIT_THRESHOLDS:
print("---", bit)
pre, idx, post = (
@@ -41,22 +55,10 @@ for bit in BIT_THRESHOLDS:
(((1 << bit) - (1 * SIZE)) // SIZE),
((1 << bit) // SIZE),
)
- val = (val << 8) + next
- next += 1
- set_index(buffer, pre, val & MASK)
- val = (val << 8) + next
- next += 1
- set_index(buffer, idx, val & MASK)
- val = (val << 8) + next
- next += 1
- set_index(buffer, post, val & MASK)
- val = (val << 8) + next
- next += 1
+ set_index(buffer, pre, next_value())
+ set_index(buffer, idx, next_value())
+ set_index(buffer, post, next_value())
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
- exec(SET_TEMPLATE.format(off=pre, val=val & MASK))
- val = (val << 8) + next
- next += 1
- exec(SET_TEMPLATE.format(off=idx, val=val & MASK))
- val = (val << 8) + next
- next += 1
- exec(SET_TEMPLATE.format(off=post, val=val & MASK))
+ exec(SET_TEMPLATE.format(off=pre, val=next_value()))
+ exec(SET_TEMPLATE.format(off=idx, val=next_value()))
+ exec(SET_TEMPLATE.format(off=post, val=next_value()))
diff --git a/tests/micropython/viper_ptr32_store_boundary_intbig.py.exp b/tests/micropython/viper_ptr32_store_boundary.py.exp
index 67b114d33..67b114d33 100644
--- a/tests/micropython/viper_ptr32_store_boundary_intbig.py.exp
+++ b/tests/micropython/viper_ptr32_store_boundary.py.exp
diff --git a/tests/micropython/viper_ptr8_store_boundary_intbig.py b/tests/micropython/viper_ptr8_store_boundary.py
index d22a06274..d3cba17e1 100644
--- a/tests/micropython/viper_ptr8_store_boundary_intbig.py
+++ b/tests/micropython/viper_ptr8_store_boundary.py
@@ -14,6 +14,22 @@ BIT_THRESHOLDS = (5, 8, 11, 12)
SIZE = 1
MASK = (1 << (8 * SIZE)) - 1
+next_int = 1
+test_buffer = bytearray(SIZE)
+
+
+def next_value() -> uint:
+ global next_int
+ global test_buffer
+ for index in range(1, SIZE):
+ test_buffer[index - 1] = test_buffer[index]
+ test_buffer[SIZE - 1] = next_int
+ next_int += 1
+ output = 0
+ for byte in test_buffer:
+ output = (output << 8) | byte
+ return output & MASK
+
@micropython.viper
def set_index(dest: ptr8, i: int, val: uint):
@@ -27,27 +43,13 @@ def get_index(src: ptr8, i: int):
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
-next = 1
-val = 0
for bit in BIT_THRESHOLDS:
print("---", bit)
pre, idx, post = (((1 << bit) - (2 * SIZE)), ((1 << bit) - (1 * SIZE)), (1 << bit))
- val = (val << 8) + next
- next += 1
- set_index(buffer, pre, val & MASK)
- val = (val << 8) + next
- next += 1
- set_index(buffer, idx, val & MASK)
- val = (val << 8) + next
- next += 1
- set_index(buffer, post, val & MASK)
- val = (val << 8) + next
- next += 1
+ set_index(buffer, pre, next_value())
+ set_index(buffer, idx, next_value())
+ set_index(buffer, post, next_value())
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
- exec(SET_TEMPLATE.format(off=pre, val=val & MASK))
- val = (val << 8) + next
- next += 1
- exec(SET_TEMPLATE.format(off=idx, val=val & MASK))
- val = (val << 8) + next
- next += 1
- exec(SET_TEMPLATE.format(off=post, val=val & MASK))
+ exec(SET_TEMPLATE.format(off=pre, val=next_value()))
+ exec(SET_TEMPLATE.format(off=idx, val=next_value()))
+ exec(SET_TEMPLATE.format(off=post, val=next_value()))
diff --git a/tests/micropython/viper_ptr8_store_boundary_intbig.py.exp b/tests/micropython/viper_ptr8_store_boundary.py.exp
index 6b0f7ce13..6b0f7ce13 100644
--- a/tests/micropython/viper_ptr8_store_boundary_intbig.py.exp
+++ b/tests/micropython/viper_ptr8_store_boundary.py.exp