40 lines
702 B
Python
40 lines
702 B
Python
|
# test handling of failed heap allocation with list
|
||
|
|
||
|
import micropython
|
||
|
|
||
|
|
||
|
class GetSlice:
|
||
|
def __getitem__(self, idx):
|
||
|
return idx
|
||
|
|
||
|
|
||
|
sl = GetSlice()[:]
|
||
|
|
||
|
# create slice in VM
|
||
|
l = [1, 2, 3]
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
print(l[0:1])
|
||
|
except MemoryError:
|
||
|
print("MemoryError: list index")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# get from list using slice
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
l[sl]
|
||
|
except MemoryError:
|
||
|
print("MemoryError: list get slice")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# extend list using slice subscr
|
||
|
l = [1, 2]
|
||
|
l2 = [3, 4, 5, 6, 7, 8, 9, 10]
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
l[sl] = l2
|
||
|
except MemoryError:
|
||
|
print("MemoryError: list extend slice")
|
||
|
micropython.heap_unlock()
|
||
|
print(l)
|