94 lines
1.8 KiB
Python
94 lines
1.8 KiB
Python
|
# test handling of failed heap allocation with bytearray
|
||
|
|
||
|
import micropython
|
||
|
|
||
|
|
||
|
class GetSlice:
|
||
|
def __getitem__(self, idx):
|
||
|
return idx
|
||
|
|
||
|
|
||
|
sl = GetSlice()[:]
|
||
|
|
||
|
# create bytearray
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
bytearray(4)
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray create")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# create bytearray from bytes
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
bytearray(b"0123")
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray create from bytes")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# create bytearray from iterator
|
||
|
r = range(4)
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
bytearray(r)
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray create from iter")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# bytearray add
|
||
|
b = bytearray(4)
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
b + b"01"
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray.__add__")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# bytearray iadd
|
||
|
b = bytearray(4)
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
b += b"01234567"
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray.__iadd__")
|
||
|
micropython.heap_unlock()
|
||
|
print(b)
|
||
|
|
||
|
# bytearray append
|
||
|
b = bytearray(4)
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
for i in range(100):
|
||
|
b.append(1)
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray.append")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# bytearray extend
|
||
|
b = bytearray(4)
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
b.extend(b"01234567")
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray.extend")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# bytearray get with slice
|
||
|
b = bytearray(4)
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
b[sl]
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray subscr get")
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# extend bytearray using slice subscr
|
||
|
b = bytearray(4)
|
||
|
micropython.heap_lock()
|
||
|
try:
|
||
|
b[sl] = b"01234567"
|
||
|
except MemoryError:
|
||
|
print("MemoryError: bytearray subscr grow")
|
||
|
micropython.heap_unlock()
|
||
|
print(b)
|