Make the unittests work again

This commit is contained in:
Neil Webber 2024-10-23 11:43:39 -05:00
parent 4f06554597
commit d9b436dad6

View file

@ -93,7 +93,7 @@ class InterruptManager:
self.pri_pending = 0 self.pri_pending = 0
self.requests = [] self.requests = []
self.condition = threading.Condition() self.condition = threading.Condition()
self.logger = cpu.logger # only thing needed from cpu self.logger = cpu.logger
def simple_irq(self, pri, vector): def simple_irq(self, pri, vector):
"""Pend an interrupt at the given pri/vector.""" """Pend an interrupt at the given pri/vector."""
@ -158,8 +158,16 @@ if __name__ == "__main__":
from functools import partial from functools import partial
class TestMethods(unittest.TestCase): class TestMethods(unittest.TestCase):
def make_interrupt_manager(self):
# InterruptManager() wants a cpu but (at least at the time
# of these tests being written) the only thing it uses from
# there is the .logger attribute; so scaffold all that up:
CPU_SKELETON = namedtuple('CPU_SKELETON', ['logger'])
cpu = CPU_SKELETON(logger=lambda s: None)
return InterruptManager(cpu)
def test__init__(self): def test__init__(self):
IM = InterruptManager() IM = self.make_interrupt_manager()
# initial state starts with no pending interrupts # initial state starts with no pending interrupts
self.assertEqual(IM.pri_pending, 0) self.assertEqual(IM.pri_pending, 0)
@ -168,7 +176,7 @@ if __name__ == "__main__":
self.assertEqual(IM.get_pending(0), None) self.assertEqual(IM.get_pending(0), None)
def test_queue1(self): def test_queue1(self):
IM = InterruptManager() IM = self.make_interrupt_manager()
test_pri = 4 # arbitrary test_pri = 4 # arbitrary
test_vec = 17 # arbitrary test_vec = 17 # arbitrary
IM.simple_irq(test_pri, test_vec) IM.simple_irq(test_pri, test_vec)
@ -252,7 +260,7 @@ if __name__ == "__main__":
('GET', None)), ('GET', None)),
) )
for tp in testprogs: for tp in testprogs:
IM = InterruptManager() IM = self.make_interrupt_manager()
self._actions(IM, tp) self._actions(IM, tp)
def test_vectorcallback(self): def test_vectorcallback(self):
@ -261,7 +269,7 @@ if __name__ == "__main__":
foodict = {} foodict = {}
pfoo = partial(foo, foodict) pfoo = partial(foo, foodict)
IM = InterruptManager() IM = self.make_interrupt_manager()
IM.pend_interrupt(PendingInterrupt(4, 888, pfoo)) IM.pend_interrupt(PendingInterrupt(4, 888, pfoo))
iinfo = IM.get_pending(0) iinfo = IM.get_pending(0)
self.assertEqual(foodict['foo'], 1234) self.assertEqual(foodict['foo'], 1234)