示例#1
0
    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
示例#2
0
 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)
示例#3
0
 def test_custom_readonly_kind(self):
     meth = addrxlat.CustomMethod()
     with self.assertRaises(AttributeError):
         meth.kind = addrxlat.NOMETH
示例#4
0
 def test_custom_target_as(self):
     meth = addrxlat.CustomMethod(addrxlat.MACHPHYSADDR)
     self.assertEqual(meth.kind, addrxlat.CUSTOM)
     self.assertEqual(meth.target_as, addrxlat.MACHPHYSADDR)
示例#5
0
 def test_custom_defaults(self):
     meth = addrxlat.CustomMethod()
     self.assertEqual(meth.kind, addrxlat.CUSTOM)
     self.assertEqual(meth.target_as, addrxlat.NOADDR)