Admin Panel

from amitools.vamos.loader import SegList
from amitools.vamos.machine import MockMemory
from amitools.vamos.mem import MemoryAlloc


def loader_seglist_alloc_test(buildlibnix, mem_alloc):
  mem, alloc = mem_alloc
  sizes = [23, 17, 32]
  alloc_sizes = [24, 20, 32]
  # alloc seg_list
  seg_list = SegList.alloc(alloc, sizes)
  # check segment allocation
  assert seg_list.get_all_sizes() == alloc_sizes
  assert seg_list.get_all_addrs() == [12, 44, 72]
  segs = seg_list.get_all_segments()
  assert len(segs) == 3
  assert segs[0].get_size() == alloc_sizes[0]
  assert segs[1].get_size() == alloc_sizes[1]
  assert segs[2].get_size() == alloc_sizes[2]
  # iterator
  i = 0
  for seg in seg_list:
    assert seg.get_size() == alloc_sizes[i]
    i += 1
  # free
  seg_list.free()
  assert alloc.is_all_free()