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