Admin Panel

import pytest
from amitools.vamos.machine import MockMemory
from amitools.vamos.mem import MemoryAlloc
from amitools.vamos.astructs import BAddr
from amitools.vamos.atypes import Process, NodeType, CLI


def atypes_process_base_test():
  mem = MockMemory()
  alloc = MemoryAlloc(mem)
  # alloc proc
  name = "my_proc"
  proc = Process.alloc(alloc, name)
  assert proc.get_name() == name
  # proc setup
  proc.setup()
  node = proc.task.node
  assert node.type == NodeType.NT_PROCESS
  # done
  proc.free()
  assert alloc.is_all_free()


def atypes_process_bptr_test():
  mem = MockMemory()
  alloc = MemoryAlloc(mem)
  # alloc proc
  proc = Process.alloc(alloc)
  # set list
  proc.seg_list = 0x100
  assert proc.seg_list == BAddr(0x40)
  # check in mem seg list baddr
  struct = proc.get_type_struct()
  off = struct.pr_SegList_field.offset
  addr = proc.addr + off
  assert mem.r32(addr) == 0x40
  # setup CLI
  cli = CLI.alloc(alloc)
  proc.cli = cli
  assert type(proc.cli) is CLI
  assert proc.cli == cli.addr
  # check in mem CLI baddr
  off = struct.pr_CLI_field.offset
  addr = proc.addr + off
  assert mem.r32(addr) == BAddr.from_addr(cli.addr).get_baddr()
  cli.free()
  # done
  proc.free()
  assert alloc.is_all_free()