summaryrefslogtreecommitdiff
path: root/tests/micropython/viper_ptr8_store_boundary.py
blob: ad512684549a79f0d67438cdb06a9bedd5671586 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Test boundary conditions for various architectures

TEST_DATA = ((49, 30, 3), (52, 254, 3), (55, 4094, 3))

SET_TEMPLATE = """
@micropython.viper
def set{off}(dest: ptr8):
    dest[{off}] = {val}
set{off}(b)
print(b[{off}])
"""


@micropython.viper
def set_index(dest: ptr8, i: int, val: int):
    dest[i] = val


b = bytearray(5000)
for val, start, count in TEST_DATA:
    for i in range(count):
        set_index(b, start + i, val + i)
    print(b[start : start + count])

for i in range(len(b)):
    b[i] = 0

for val, start, count in TEST_DATA:
    for i in range(count):
        exec(SET_TEMPLATE.format(off=start + i, val=val + i + 16))