# 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)