Admin Panel

import pytest
import traceback
import sys
from musashi import emu
from musashi.m68k import *


def musashi_traps_trigger_test():
  traps = emu.Traps()
  a = []

  def my_func(opcode, pc):
    a.append(opcode)
    a.append(pc)
  tid = traps.setup(my_func)
  assert tid >= 0
  traps.trigger(tid, 23)
  assert a == [tid, 23]
  traps.free(tid)


def musashi_traps_raise_test():
  traps = emu.Traps()
  a = []
  b = []

  def exc_func(opcode, pc):
    a.append(opcode)
    a.append(pc)
    b.append(sys.exc_info())
  traps.set_exc_func(exc_func)

  def my_func(opcode, pc):
    raise ValueError("bla")
  tid = traps.setup(my_func)
  assert tid >= 0
  traps.trigger(tid, 23)
  assert a == [tid, 23]
  assert b[0][0] == ValueError
  traps.free(tid)