def __init__(self, decoder=None): if decoder is None: f = FlushingDecoder(0.500) def updateF(): f.update(reactor.seconds()) s = LoopingCall(updateF) s.start(0.04, now=False) else: f = decoder self.keymap = Keymap() self.lookup = self.keymap.lookup self.lkeyer = Keyer(f.decoder, 1500) self.rkeyer = Keyer(f.decoder, 1500)
def test_all_keys_up(self): """ Keyer.all_keys_up is True if keyDownbuffer is empty. """ self.k = Keyer(None) self.k.keyDownbuffer = [1,2,3] self.assertEquals(self.k.all_keys_up(), False) self.k.keyDownbuffer = [] self.assertEquals(self.k.all_keys_up(), True)
class Controller: def __init__(self, decoder=None): if decoder is None: f = FlushingDecoder(0.500) def updateF(): f.update(reactor.seconds()) s = LoopingCall(updateF) s.start(0.04, now=False) else: f = decoder self.keymap = Keymap() self.lookup = self.keymap.lookup self.lkeyer = Keyer(f.decoder, 1500) self.rkeyer = Keyer(f.decoder, 1500) def dispatch_event(self, event): if event.type == pygame.KEYDOWN: self.keyDown(event.key) elif event.type == pygame.KEYUP: self.keyUp(event.key) def keyDown(self, k): if k == pygame.K_F3: self.window.submitTo(self.keymap) self.keymap.parentController = self update_status_msg(self.window.screen, self.keymap._learn_keymap()[0]) t = reactor.seconds() z, hand = self.lookup(k) if z is None: return if hand == 0: self.rkeyer.keyDown(z, t) else: self.lkeyer.keyDown(z, t) def keyUp(self, k): t = reactor.seconds() z, hand = self.lookup(k) if z is None: return if hand == 0: self.rkeyer.keyUp(z, t) else: self.lkeyer.keyUp(z, t)
def test_keyUp_calls_decoder(self): """ Keyer.keyUp calls decoder when all the keys are up and it clears the buffer. """ calls = [] def fake(t): calls.append(t) self.k = Keyer(fake) self.k.keyDown('A', 12000) self.k.keyDown('B', 1010101) self.k.keyUp('A', 10101) self.k.keyUp('B', 10102) self.assertEquals(calls, [('A','B')]) self.assertEquals(self.k.buffer, [])
def setUp(self): self.k = Keyer(None) self.k.all_keys_up = lambda: False
class TestKeyer(unittest.TestCase): def setUp(self): self.k = Keyer(None) self.k.all_keys_up = lambda: False def test_keyUp_basic(self): """ Keyer.keyUp adds the key to the buffer and sets max to the key's timestamp. """ self.k.keyUp('A', 1000) self.assertEquals(self.k.maxtime, 1000) self.assertEquals(self.k.buffer, ['A']) def test_keyUp_again(self): """ Keyer.keyUp appends the key to the buffer and alters maxtime if timestamp is greater than the old maxtime. """ self.k.keyUp('A', 1000) self.k.keyUp('B', 1001) self.k.keyUp('C', 1002) self.assertEquals(self.k.maxtime, 1002) self.assertEquals(self.k.buffer, ['A', 'B', 'C']) def test_keyDown_basic(self): """ Keyer.keyDown appends to a keyDownbuffer. """ self.k.keyDown('A', 1001) self.k.keyDown('B', 1002) self.assertEquals(self.k.keyDownbuffer, ['A', 'B']) def test_all_keys_up(self): """ Keyer.all_keys_up is True if keyDownbuffer is empty. """ self.k = Keyer(None) self.k.keyDownbuffer = [1,2,3] self.assertEquals(self.k.all_keys_up(), False) self.k.keyDownbuffer = [] self.assertEquals(self.k.all_keys_up(), True) def test_keyUp_removes_keyDown(self): """ Keyer.keyUp removes the corresponding key from keyDownbuffer. """ self.k.keyDownbuffer = [1,2] self.k.keyUp(1, 1000) self.assertEquals(self.k.keyDownbuffer, [2]) def test_threshold_init(self): """ Keyer.__init__ takes an argument for threshold value or uses a default. """ k = Keyer(None, threshold=0) self.assertEquals(k.threshold, 0) k = Keyer(None) self.assertNotEquals(k.threshold, None) def test_gt_threshold_removes_buffer(self): """ Keyer.keyUp removes everything in the buffer if timestamp is greater maxtime by the threshold amount. """ self.k.threshold = 1 self.k.keyUp('A', 1000) self.k.keyUp('CC', 1002) self.assertEquals(self.k.buffer, ['CC']) def test_under_threshold(self): """ otherwise leaves it alone. """ self.k.threshold = 99 self.k.keyUp('A', 1000) self.k.keyUp('CC', 1099) self.assertEquals(self.k.buffer, ['A', 'CC']) def test_keyUp_calls_decoder(self): """ Keyer.keyUp calls decoder when all the keys are up and it clears the buffer. """ calls = [] def fake(t): calls.append(t) self.k = Keyer(fake) self.k.keyDown('A', 12000) self.k.keyDown('B', 1010101) self.k.keyUp('A', 10101) self.k.keyUp('B', 10102) self.assertEquals(calls, [('A','B')]) self.assertEquals(self.k.buffer, [])