summaryrefslogtreecommitdiff
path: root/tests/micropython/heapalloc_fail_list.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/micropython/heapalloc_fail_list.py')
-rw-r--r--tests/micropython/heapalloc_fail_list.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/micropython/heapalloc_fail_list.py b/tests/micropython/heapalloc_fail_list.py
new file mode 100644
index 000000000..a54bdb6cf
--- /dev/null
+++ b/tests/micropython/heapalloc_fail_list.py
@@ -0,0 +1,36 @@
+# 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)