def setUp(self): self.ctx = addrxlat.Context() def first_step(step, addr): step.base = addrxlat.FullAddress(addrxlat.NOADDR, 0xabcdef) step.idx = (addr & 0xff, addr >> 8) step.remain = 2 def next_step(step): step.base.addr = 0x123456 + step.idx[1] step.elemsz = 0x100 self.meth = addrxlat.CustomMethod() self.meth.target_as = addrxlat.KPHYSADDR self.meth.cb_first_step = first_step self.meth.cb_next_step = next_step import _test_addrxlat self.meth_ext = _test_addrxlat.getCustomMethod(addrxlat.convert) self.assertEqual(self.meth_ext.kind, addrxlat.CUSTOM) self.assertEqual(self.meth_ext.target_as, addrxlat.NOADDR) self.meth_ext.target_as = addrxlat.KPHYSADDR self.meth_extmod = _test_addrxlat.getCustomMethod(addrxlat.convert) self.meth_extmod.target_as = addrxlat.KPHYSADDR self.meth_extmod.cb_next_step = next_step
def test_custom_notimpl(self): meth = addrxlat.CustomMethod(addrxlat.MACHPHYSADDR) self.assertEqual(meth.kind, addrxlat.CUSTOM) self.assertEqual(meth.target_as, addrxlat.MACHPHYSADDR) ctx = addrxlat.Context() step = addrxlat.Step(ctx=ctx, meth=meth) with self.assertRaisesRegexp(BaseException, "NULL callback"): meth.cb_first_step(step, 0x1234) with self.assertRaisesRegexp(BaseException, "NULL callback"): meth.cb_next_step(step)
def test_custom_readonly_kind(self): meth = addrxlat.CustomMethod() with self.assertRaises(AttributeError): meth.kind = addrxlat.NOMETH
def test_custom_target_as(self): meth = addrxlat.CustomMethod(addrxlat.MACHPHYSADDR) self.assertEqual(meth.kind, addrxlat.CUSTOM) self.assertEqual(meth.target_as, addrxlat.MACHPHYSADDR)
def test_custom_defaults(self): meth = addrxlat.CustomMethod() self.assertEqual(meth.kind, addrxlat.CUSTOM) self.assertEqual(meth.target_as, addrxlat.NOADDR)